Sunteți pe pagina 1din 21

qwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqw ertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmqwertyuiopas Microprocessor dfghjklzxcvbnmqwertyuiopasdf Subject code : 10CSL48 ghjklzxcvbnmqwertyuiopasdfgh Lab Manual

jklzxcvbnmqwertyuiopasdfghjkl zxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcv bnmqwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnm qwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqw

1. a) Search a key element in a list of n 16-bit numbers using the Binary search algorithm.

. .MODEL SMALL .STACK .DATA

ARR DW 0111H,0112H,0113H,0114H,0115H LEN DW ($-ARR)/2 KEY EQU 0115H

MSG1 DB "KEY IS FOUND AT

RES DB " POSITION",13,10,"$"

"

MSG2 DB 'KEY NOT FOUND!!!!!!!!!!!!!. $' .CODE

MOV AX,@DATA MOV DS,AX MOV BX,00

MOV DX,LEN MOV CX,KEY AGAIN:

JAE BIG DEC AX

CMP CX,ARR[SI]

ADD SI,SI

MOV SI,AX

SHR AX,1

ADD AX,DX

MOV AX,BX

JA FAIL

CMP BX,DX

JMP AGAIN BIG:

MOV DX,AX

JMP AGAIN SUCCESS: ADD AL,01 ADD AL,'0' MOV RES,AL

MOV BX,AX

INC AX

JE SUCCESS

LEA DX,MSG1 JMP DISP FAIL: DISP:

LEA DX,MSG2 MOV AH,09H INT 21H MOV AH,4CH INT 21H

END

2. a) Write two ALP modules stored in two different files; one

module is to read a character from the keyboard and the other one is to display a character. Use the above two terminated by the carriage return and print the string on the display in the next line. modules to read a string of characters from the keyboard

. .MODEL SMALL .DATA .CODE ARR DB 50 DUP(?) EXTRN MYREADKEY:FAR EXTRN MYECHO:FAR START: MOV AX,@DATA MOV DS,AX MOV SI,OFFSET ARR MOV CX,00H NEXT:

MOV DI,OFFSET ARR

CALL MYREADKEY INC CX CMP AL,0DH JNZ NEXT MOV DL,10 INT 21H

MOV AH,02H

NEXT1:

MOV DL,[DI] INC DI CALL MYECHO LOOP NEXT1 INT 21H MOV AH,4CH

END START

.MODEL SMALL .CODE

PUBLIC MYREADKEY MYREADKEY PROC

MOV AH,07H

INT 21H INC SI RET

MOV [SI],AL

MYREADKEY ENDP END

.MODEL SMALL .CODE

PUBLIC MYECHO MYECHO PROC MOV AH,02H INT 21H RET

MYECHO ENDP END

3. a) Sort a given set of n numbers in ascending order using the Bubble Sort algorithm.

. .MODEL SMALL .DATA A DB 22H,44H,11H,33H LEN DW $-A .CODE

MOV AX,@DATA MOV DS,AX

MOV BX,LEN DEC BX

OUTLOOP:MOV CX,BX MOV SI,00H

INLOOP:

MOV AL,A[SI] INC SI CMP AL,A[SI] XCHG AL,A[SI]

JB NEXT

MOV A[SI-1],AL NEXT: LOOP INLOOP DEC BX JNZ OUTLOOP MOV AH,4CH END INT 21H

4. a) Read an alphanumeric character and display its equivalent ASCII code at the centre of the screen.
; MODEL IS SMALL

.STACK .DATA CHAR MESG1 .CODE

. .MODEL SMALL

; INITIALISING STACK

DB

DB

'ENTER THE CHARACHTER:$' ?

;DATA SEGMENT STARTS ;UNINITIALISED ARRAY

;MESSAGE TO BE DISPLAYED IN DOS

START:

MOV AX,@DATA MOV DS,AX MOV AH,09H INT 21H

;INITIALIZE THE DS REG

;CODE SEGMENT STARTS

MOV DX,OFFSET MESG1 MOV AH,01H INT 21H MOV CHAR,AL MOV BH,00 MOV DL,39 MOV CL,4 INT 10H MOV AH,02H MOV DH,12

;SERVICE NO. TO DISPLAY

;MOVE THE OFFSET OF MESG1 TO DX ;INTERRUPT TO TERMINATE ;SERVICE NO TO READ KEY ;CH=GETCH();

;SERVICE NO TO MOVE CURSOR TO SPECIFIED ;PAGE NUMBER ;X CO-ORDINATE ;Y CO-ORDINATE ;IT IS JUST LIKE GOTO(X,Y) FUNCTION

CALL CONVERT MOV DL,AL INT 21H MOV AH,02H MOV AL,CHAR

SHR AL,CL

MOV AL,CHAR

;COUNTER INITIALISED TO 4

;SHIFT RIGHT 4 TIMES i.e. HIGHER BYTE FIRST ;TO DISPLAY NUMBER

;SERVICE NO TO DISPLAY

MOV AH,02H INT 21H MOV AH,4CH INT 21H

MOV DL,AL

CALL CONVERT

AND AL,0FH

;CONVERT PROCEDURE ;SERVICE NO TO DISPLAY ;TERMINATE PROGRAM

;AL=AL AND 0FH

;PROCEDURE TO CONVERT DIGIT INTO ITS EQUIVALENT ASCII VALUE CONVERT PROC NEAR

ADD AL,07H RET

JB ADD030

CMP AL,0AH

;IF AL>9 ;IF DIGIT IS A TO F ;IF AL<=9

ADD030:ADD AL,30H

END START

CONVERT ENDP

;END OF MAIN PROGRAM

5. a) Reverse a given string and check whether it is a


.MODEL SMALL

palindrome or not.

.STACK 64 .DATA

;INITIALISING STACK ;INPUT STRING

;MODEL IS SMALL

STR1 DB "MADAM$" STR2 DB 40 DUP(0)

;CODE SEGMENT STARTS ;LENGTH OF THE STRING ;MESSAGE TO BE DISPLAYED IF PAL ;MESSAGE IF NOT A PALINDROME ;CODE SEGMENT STARTS ;INITIALISING DATA SEGMENT

STRLEN DW ($-STR1)

.CODE

MESG2 DB "IS NOT A PALINDROME$" MOV AX,@DATA

MESG1 DB "IT IS PALINDROME$"

;UNINITIALISED STRING

START:

UP:

MOV DI,OFFSET STR2 MOV [DI],AL MOV AL,[SI]

DEC SI

ADD SI,CX

MOV SI,OFFSET STR1

DEC CX

MOV CX,STRLEN

MOV ES,AX

MOV DS,AX

;ADD SI TO CX

;SI HAS STARTING ADDRESS OF STR1

;DECREMENT CX

;CX REG HAS LENGTH OF STRING

;INITIALISING EXTRA SEGMENT

;DI HAS STARTING ADDRESS OF STR2 ;MOVE THE CONTENTS OF AL REG TO DI ;INCREMENT DI ;DECREMENT SI ;MOVE CONTENTS OF SI TO AL REG

;DECREMENT SI

DOWN: MOV DX,OFFSET MESG2 ;MOVE THE STARTING ADDRESS OF MESG2 TO DX DOWN1: MOV AH,09H INT 21H ;SERVICE NO.TO DISPLAY MESSGE2 ;TERMINATE

JMP DOWN1

MOV DX,OFFSET MESG1

JNE DOWN

REPE CMPSB

MOV CX,STRLEN

MOV DI,OFFSET STR2

MOV SI,OFFSET STR1

MOV [DI],AL

MOV AL,"$"

JNE UP

CMP CX,0000H

DEC CX

INC DI

DEC SI

;MOVE THE STARTING ADDRESS OF MESG1 TO DX ;JMP TO DOWN1

;JMP IF NT EQUAL TO DOWN

;REPEAT COMP

;LENGTH OF THE STRING IN CX

;MOVE STARTING ADDRESS OF STR2 TO DI

;MOVE STARTING ADDRESS OF STR1 TO SI

;MOV VALUE IN AL TO DI

;MOVE NULL VALUE TO THE AL REG

;IF EQUAL JMP UP

;COMP CX WITH 0000

;DECREMENT CX

END START

INT 3

;END OF THE PROGRAM

;TERMINATION OF PROGRAM

6. a) Read two strings, store them in locations STR1 and STR2. Check whether they are equal or not and display appropriate messages. Also display the length of the stored strings.
.MODEL SMALL .STACK .DATA

STR1 DB 150 DB ? DB 150 DUP(?) STR2 DB 150 DB ? DB 150 DUP(?) MSG1 DB 10,10,13, 'STRINGS ARE EQUAL.$'

MSG2 DB 10,10,13, 'STRINGS ARE NOT EQUAL.$'

MSG3 DB 10,13, 'ENTER STRING 1 (UPTO 9 CHARACTERS):$' MSG5 DB 10,13, 'LENGTH OF STRING 1=$' MSG6 DB 10,13, 'LENGTH OF STRING 2=$' CLRSCR MACRO

MSG4 DB 10,13, 'ENTER STRING 2 (UPTO 9 CHARACTERS):$'

MOV AL,2 INT 10H

MOV AH,0

ENDM

DISPM

MACRO STR LEA DX,STR INT 21H MOV AH,09H

ENDM .CODE

MOV AX,@DATA MOV DS,AX MOV ES,AX CLRSCR

DISPM MSG3

MOV DX,OFFSET STR1 MOV AH,0AH INT 21H

DISPM MSG4

MOV DX,OFFSET STR2 MOV AH,0AH INT 21H

DISPM MSG5

MOV DL,STR1[1] ADD DL,30H MOV AH,2 INT 21H

DISPM MSG6

MOV DL,STR2[1] ADD DL,30H MOV AH,2 INT 21H

MOV AL,STR1[1] CMP AL,STR2[1] JNE NOTEQ

MOV CH,00H CLD

MOV CL,STR1[1]

LEA SI,STR1+2 REPE CMPSB JNZ NOTEQ

LEA DI,STR2+2

DISPM MSG1 JMP STOP NOTEQ: STOP:

DISPM MSG2 MOV AH,4CH

INT 21H

END

7. a) Read your name from the keyboard and display it at a your name? You must clear the entire screen before display.
.MODEL SMALL .STACK

specified location on the screen after the message What is

READSTR MACRO LOC INT 21H ENDM MOV AH,01H MOV LOC,AL

CLRSCR

MOV AL,3 INT 10H

MACRO

MOV AH,0

ENDM

.DATA

MSG0 DB 10, 'ENTER THE NAME:$' MSG1 DB 'WHAT IS YOUR NAME?$' MSG2 DB 10, '$'

ARR DB 40 DUP(?) DISPLAY MACRO STR

LEN DW ($-MSG1)

LEA DX,STR INT 21H

MOV AH,09H

ENDM .CODE

START:

MOV AX,@DATA MOV SI,00 MOV DS,AX

DISPLAY MSG0

LOOP1:

INC SI

READSTR ARR[SI] CMP AL,13

MOV ARR[SI],'$' CLRSCR

JNZ LOOP1

MOV BH,0 MOV DL,8 INT 10H

MOV DH,3 MOV AH,2

DISPLAY MSG1 MOV SI,0

LEA DX,ARR[SI] MOV AH,09H INT 21H

DISPLAY MSG2 MOV AH,4CH INT 21H

END START

8. a) Compute nCr using recursive procedure. Assume that n and r are non-negative integers.

.MODEL SMALL .STACK .DATA

N DW 5

R DW 2

NCR DW 1 MSG1 DB 10,13, "ERROR!! N VALUE CANNOT BE ZERO!$" DISPLAY MACRO STR

LEA DX,STR INT 21H MOV AH,9

ENDM .CODE

MOV AX,@DATA MOV DS,AX

CMP N,0

JZ ERROR MOV BX,N INC BX MOV CX,R

CALL NCP

JMP STOP ERROR: STOP: DISPLAY MSG1 MOV AH,4CH INT 21H

NCP PROC NEAR JE OVER DEC CX PUSH CX

CMP CX,00H

CALL NCP POP CX

MOV AX,BX SUB AX,CX MUL NCR DIV CX

OVER: END

MOV NCR,AX RET

NCP ENDP

9. a) Read the current time from the system and display it in


.MODEL SMALL

the standard format on the screen.


; MODEL IS SMALL

.DATA

MSG DB 10,13,'THE SYSTEM TIME IS:' HR DB 02 DUP(?),':' MIN DB 02 DUP(?),':'

; DATA SEGMENT STARTS

SEC DB 02 DUP(?),'$' .CODE ; CODE SEGMENT STARTS

MOV DS,AX INT 21H

MOV AX,@DATA

; INTIALISING DATA SEGMENT MOV DS,AX

MOV AH,2CH MOV AL,CH

CALL CONVERT MOV HR,AH MOV AL,CL MOV HR+1,AL CALL CONVERT MOV MIN,AH MOV AL,DH MOV MIN+1,AL CALL CONVERT MOV SEC,AH MOV SEC,AL MOV AH,09 INT 21H INT 21H AAM RET END LEA DX,MSG

MOV AH,4CH CONVERT PROC NEAR ADD AX,3030H CONVERT ENDP

10. a) Write a program to simulate a Decimal Up-counter to display 00-99.


.MODEL SMALL .DATA .CODE NO DB 00 MOV AX,@DATA MOV DS,AX LL:

MOV AL,NO ADD AL,01 DAA

MOV NO,AL

MOV CL,04H SHR AL,CL

AND AL,0F0H

ADD AL,30H MOV DL,AL INT 21H MOV AH,02H

MOV DL,NO

AND DL,0FH

ADD DL,30H INT 21H

MOV AH,02H

MOV DL,13H INT 21H

MOV AH,02H

CALL DELAY JB LL

CMP NO,099H MOV AH,4CH INT 21H DELAY PROC

L2: L3:

MOV BX,0FFFH DEC BX JNZ L3 RET LOOP L2

MOV CX,05FFH

END

DELAY ENDP

11. a) Read a pair of input co-ordinates in BCD and move the cursor to the specified location on the screen.
. .MODEL SMALL .DATA MSG1 DB 10,13,"Enter the row number (00-24):$" MSG3 DB 10,13,"Enter any key to Exit$" ROW DB ? COL DB ? .CODE

MSG2 DB 10,13,"Enter the cloumn number (00-70)$"

START:

MOV AX,@DATA MOV DS,AX LEA DX,MSG1 MOV AH,09H INT 21H CALL READ

MOV ROW,AL MOV AH,09H INT 21H CALL READ

LEA DX,MSG2

MOV COL,AL

LEA DX,MSG3 MOV AH,09H INT 21H

MOV AH,02H MOV DL,COL INT 10H

MOV DH,ROW

CALL CLEAR INT 21H

MOV AH,08H MOV AH,4CH INT 21H

READ PROC

INT 21H

MOV AH,01H

AND AL,0FH MOV BL,AL INT 21H MOV AH,01H AND AL,0FH MOV AH,BL AAD READ ENDP RET

CLEAR PROC

PUSH AX

MOV AH,06H MOV AL,00H

MOV CL,00H

MOV CH,00H MOV DH,24H MOV DL,79H INT 10H MOV BH,07H POP AX RET

END START

CLEAR ENDP

12. a) Write a program to create a file (input file) and to delete an existing file.
.MODEL SMALL .DATA ; MODEL IS SMALL

MSG1 DB 10,13,'FILE CREATED SUCCESSFULLY $' MSG2 DB 10,13,'FILE DELETED SUCCESSFULLY $' MSG4 DB 10,13,'ERROR IN DELETION $' MOV AX,@DATA MOV DS,AX XOR CX,CX MSG3 DB 10,13,'ERROR IN CREATION $'

FILE2 DB 'F:\8086\F1.ASM',0

FILE1 DB 'F:\8086\F1.ASM',0

; DATA SEGMENT STARTS

.CODE

; CODE SEGMENT STARTS ;CREATE A FILE

; INTIALISING DATA SEGMENT MOV DS,AX ;FILE ATTRIBUTES IN CX

MOV DX,OFFSET FILE1 MOV AH,3CH INT 21H JC ERROR1

LEA DX,MSG1 JMP DISP1

ERROR1: DISP1:

LEA DX,MSG3 MOV AH,09 INT 21H LEA DX,FILE2 MOV AH,41H JE ERROR2 JMP DISP2 INT 21H

;DELETE A FILE

LEA DX,MSG2

ERROR2: DISP2:

LEA DX,MSG4 MOV AH,09 MOV AH,4CH INT 21H

END

INT 21H

S-ar putea să vă placă și