Professional Documents
Culture Documents
Microprocessor Lab Manual
Microprocessor Lab Manual
1. a) Search a key element in a list of n 16-bit numbers using the Binary search algorithm.
"
CMP CX,ARR[SI]
ADD SI,SI
MOV SI,AX
SHR AX,1
ADD AX,DX
MOV AX,BX
JA FAIL
CMP BX,DX
MOV DX,AX
MOV BX,AX
INC AX
JE SUCCESS
LEA DX,MSG2 MOV AH,09H INT 21H MOV AH,4CH INT 21H
END
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:
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
MOV AH,07H
MOV [SI],AL
3. a) Sort a given set of n numbers in ascending order using the Bubble Sort algorithm.
INLOOP:
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
. .MODEL SMALL
; INITIALISING STACK
DB
DB
START:
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
;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 DL,AL
CALL CONVERT
AND AL,0FH
;PROCEDURE TO CONVERT DIGIT INTO ITS EQUIVALENT ASCII VALUE CONVERT PROC NEAR
JB ADD030
CMP AL,0AH
ADD030:ADD AL,30H
END START
CONVERT ENDP
palindrome or not.
.STACK 64 .DATA
;MODEL IS SMALL
;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
;UNINITIALISED STRING
START:
UP:
DEC SI
ADD SI,CX
DEC CX
MOV CX,STRLEN
MOV ES,AX
MOV DS,AX
;ADD SI TO CX
;DECREMENT CX
;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
JNE DOWN
REPE CMPSB
MOV CX,STRLEN
MOV [DI],AL
MOV AL,"$"
JNE UP
CMP CX,0000H
DEC CX
INC DI
DEC SI
;REPEAT COMP
;MOV VALUE IN AL TO DI
;DECREMENT CX
END START
INT 3
;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.$'
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
MOV AH,0
ENDM
DISPM
ENDM .CODE
DISPM MSG3
DISPM MSG4
DISPM MSG5
DISPM MSG6
MOV CL,STR1[1]
LEA DI,STR2+2
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
READSTR MACRO LOC INT 21H ENDM MOV AH,01H MOV LOC,AL
CLRSCR
MACRO
MOV AH,0
ENDM
.DATA
MSG0 DB 10, 'ENTER THE NAME:$' MSG1 DB 'WHAT IS YOUR NAME?$' MSG2 DB 10, '$'
LEN DW ($-MSG1)
MOV AH,09H
ENDM .CODE
START:
DISPLAY MSG0
LOOP1:
INC SI
JNZ LOOP1
END START
8. a) Compute nCr using recursive procedure. Assume that n and r are non-negative integers.
N DW 5
R DW 2
NCR DW 1 MSG1 DB 10,13, "ERROR!! N VALUE CANNOT BE ZERO!$" DISPLAY MACRO STR
ENDM .CODE
CMP N,0
CALL NCP
JMP STOP ERROR: STOP: DISPLAY MSG1 MOV AH,4CH INT 21H
CMP CX,00H
OVER: END
NCP ENDP
.DATA
MOV AX,@DATA
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 NO,AL
AND AL,0F0H
MOV DL,NO
AND DL,0FH
MOV AH,02H
MOV AH,02H
CALL DELAY JB LL
L2: L3:
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
START:
MOV AX,@DATA MOV DS,AX LEA DX,MSG1 MOV AH,09H INT 21H CALL READ
LEA DX,MSG2
MOV COL,AL
MOV DH,ROW
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 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
.CODE
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:
END
INT 21H