Microprocessor Lab Manual
Microprocessor Lab Manual
Department of
ELECTRONICS AND COMMUNICATION
ENGINEERING
.MODEL SMALL
.DATA
DST DW 04H DUP (?)
.CODE
MOV AX,@DATA
MOV DS, AX
LEA DI, DST
MOV AX, 0004H
MOV [DI], AX
MOV DX, AX
MOV [DI+2], AX
MOV BX, 04H
MOV [BX][DI], AX
MOV [BX+DI+02H], AX
MOV AH, 4CH
INT 21H
END
Block Interchange
1.2 ALP TO INTERCHANGE THE DATA FROM ONE LOCATION TO OTHER.
.MODEL SMALL
.DATA
ORG 1000 H
LIST1 DW 2357H, 0A579H
ORG 2000 H
LIST2 DW 0C322H, 0C911H
COUNT EQU 02H
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, LIST1
MOV CX, COUNT
LEA DI, LIST2
BACK: MOV AX, [SI]
XCHG AX, [DI]
MOV [SI], AX
INC SI
INC SI
INC DI
INC DI
DEC CX
JNZ BACK
MOV AH, 4CH
INT 21H
END
Block Move
1.3 ALP TO MOVE THE BLOCK OF DATA FROM ONE LOCATION TO OTHER.
.MODEL SMALL
.DATA
ORG 1000 H
LIST DW 2357H, 0A579H, 0C322H, 0C911H
COUNT EQU 04H
DSTAD EQU 2000H
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, LIST
MOV CX, COUNT
MOV DI, DSTAD
BACK: MOV AX, [SI]
MOV [DI], AX
INC SI
INC SI
INC DI
INC DI
DEC CX
JNZ BACK
MOV AH, 4CH
INT 21H
END
1.4 ALP TO MOVE THE BLOCK OF DATA FROM ONE LOCATION TO OTHER IN THE REVERSE
ORDER.
.MODEL SMALL
.DATA
ORG 1000 H
LIST DW 2357H, 0A579H, 0C322H, 0C911H
COUNT EQU 04H
DSTAD EQU 2000H
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, LIST+6
MOV CX, COUNT
MOV DI, DSTAD
BACK: MOV AX, [SI]
MOV [DI], AX
DEC SI
DEC SI
INC DI
INC DI
DEC CX
JNZ BACK
MOV AH, 4CH
INT 21H
END
1.5 ALP TO MOVE THE BLOCK OF DATA (BYTE) WITH OVERLAP
.MODEL SMALL
.DATA
Y DB 3 DUP(?)
X DB 11H, 22H, 33H, 44H, 55H
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, X
LEA DI, Y
MOV CX,0005H
BACK: MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
DEC CX
JNZ BACK
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
Y DW 3 DUP(?)
X DW 1111H,222 2H,3333H,4444H,5555H
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, X
LEA DI, Y
MOV CX,0005H
BACK: MOV AX, [SI]
MOV [DI], AX
INC SI
INC SI
INC DI
INC DI
DEC CX
JNZ BACK
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
Y DB 5 DUP(?)
X DB 11H, 22H, 33H, 44H, 55H
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, X
LEA DI, Y
MOV CX,0005H
BACK: MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
DEC CX
JNZ BACK
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
Y DW 5 DUP (?)
X DW 1111H, 2222H, 3333H, 4 444 H, 5555H
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, X
LEA DI, Y
MOV CX, 0 005H
BACK: MOV AX, [SI]
MOV [DI], AX
INC SI
INC SI
INC DI
INC DI
DEC CX
JNZ BACK
MOV AH, 4CH
INT 21H
.MODEL SMALL
.DATA
N1 DD 44447777H
N2 DD 0F222F879H
SUM DD ?
.CODE
MOV AX,@DATA
MOV DS,AX
MOV DX,0000H
MOV SI,OFFSET N1
MOV DI,OFFSET N2
MOV AX, [SI]
ADD AX, [DI]
MOV WORD PTR SUM, AX
INC SI
INC SI
INC DI
INC DI
MOV AX, [SI]
ADC AX, [DI]
JNC ADD1
INC DX
ADD1:MOV WORD PTR SUM+2, AX
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
N1 DD 33335555H
N2 DD 0F111F222H
DIFF DD ?
.CODE
MOV AX,@DATA
MOV DS,AX
MOV DX,0000H
MOV SI,OFFSET N1
MOV DI,OFFSET N2
MOV AX,[SI]
SUB AX,[DI]
MOV WORD PTR DIFF,AX
INC SI
INC SI
INC DI
INC DI
MOV AX,[SI]
SBB AX,[DI]
JNC SUB1
INC DX
SUB1: MOV WORD PTR DIFF+2, AX
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
N1 DW 1234H
N2 DW 7689H
RESULT DW 2 DUP (?)
.CODE
MOV AX,@DATA
MOV DS,AX
MOV AX,N1
MOV BX,N2
MUL BX
MOV RESULT,AX
MOV RESULT+2,DX
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
N1 DW 1234H
N2 DW 0ABCAH
RESULT DW 2 DUP (?)
.CODE
MOV AX,@DATA
MOV DS,AX
MOV AX,N1
MOV BX,N2
IMUL BX
MOV RESULT,AX
MOV RESULT+2,DX
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
DVD DD 15752510H
DVR DW 0FFFFH
QUOT DW ?
REMD DW ?
.CODE
MOV AX,@DATA
MOV DS,AX
MOV SI,OFFSET DVD
MOV AX,WORD PTR [SI]
MOV DX,WORD PTR [SI+2]
MOV CX,DVR
DIV CX ; IDIV FOR SIGNED NUMBERS
MOV QUOT,AX
MOV REMD,DX
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
N1 DB 39H
N2 DB 31H
RES DW 6 DUP (?)
.CODE
MOV AX,@DATA
MOV DS,AX
MOV AX,0000H
MOV AL,N1
ADD AL,N2
AAA ; FOR ADDITION
MOV RES,AX
MOV AX,0000H
MOV AL,N1
SUB AL,N2
AAS ; FOR SUBTRACTION
MOV RES+2,AX
MOV AX,0000H
MOV AL,N1
MOV BL,N2
MUL BL
AAM ;FOR MULTIPLICATION
MOV RES+3,AX
MOV AX,0000H
MOV AL,N1
MOV BL,N2
AAD ; FOR DIVISON
DIV BL
MOV RES+4,AX
MOV RES+5,DX
MOV AH,4CH
INT 21H
END
Code Conversions (BCD to binary and vice versa) (16 bit data)
2.7DEVELOP AND EXECUTE AN ALP TO CONVERT BCD TO BINARY NUMBER (16 BIT NUMBER)
.MODEL SMALL
.DATA
BCD DW 5160H
THO EQU 03E8H
HUN EQU 0064H
TEN EQU 000AH
BIN DW ?
.CODE
MOV AX,@DATA
MOV DS,AX
MOV BX,BCD
MOV AX,BX
AND AX,000FH
MOV BIN,AX
MOV AX,BX
AND AX,00F0H
MOV CL,04
ROR AX,CL
MOV DX,TEN
MUL DX
ADD BIN,AX
MOV AX,BX
AND AX,0F00H
XCHG AL,AH
MOV DX,HUN
MUL DX
ADD BIN,AX
MOV AX,BX
AND AX,0F000H
XCHG AL,AH
ROR AX,CL
MOV DX,THO
MUL DX
ADD BIN,AX
MOV AH,4CH
INT 21H
END
2.8 DEVELOP AND EXECUTE AN ALP TO CONVERT BINARY TO BCD NUMBER (16 BIT NUMBER)
.MODEL SMALL
.DATA
TENTHO EQU 2 710 H
THO EQU 3E8H
HUN EQU 64H
.MODEL SMALL
.DATA
NUM DW 0FFEEH
RES DW 10 DUP(?)
.CODE
MOV AX,@DATA
MOV DS,AX
MOV SI,OFFSET NUM
MOV DI,OFFSET RES
MOV AX,[SI]
MUL AX
MOV [DI],AX
MOV [DI+2],DX
MOV AX,[SI]
MOV CX,[DI]
MUL CX
MOV [DI+4],AX
MOV BX,DX
MOV AX,[SI]
MOV CX,[DI+2]
MUL CX
ADD AX,BX
ADC DX,0000
MOV [DI+6],AX
MOV [DI+8],DX
MOV AH,4CH
INT 21H
END
2.10 DEVELOP AND EXECUTE AN ALP TO FIND THE LCM OF TWO 16 BIT UNSIGNED INTEGERS
2.11. DEVELOP AND EXECUTE AN ALP TO FIND THE GCD OF TWO 16-BIT UNSIGNED INTEGERS.
2.12 DEVELOP AND EXECUTE AN ALP TO COMPUTE THE FACTORIAL OF A POSITIVE INTEGER N
USING RECURSIVE PROCEDURE
.
.MODEL SMALL
.STACK
.DATA
NUM DW 5
RESULT DW ?
.CODE
MOV AX,@DATA ; INITIALIZE THE DS REGISTER
MOV DS,AX
MOV AX,01 ; INITIALIZE THE RESULT AS 01 IF THE NUMBER IS 0
.MODEL SMALL
.DATA
COUNT EQU 05H
LIST DW 2357H, 0A579H, 0C911H, 0C000H
POSNUM DW 01 DUP(0)
NEGNUM DW 01 DUP(0)
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, LIST
MOV CL, COUNT
BACK: MOV AX,[SI]
SHL AX,01
JC NEG1
INC POSNUM
JMP NEXT
NEG1: INC NEGNUM
NEXT: ADD SI, 02
DEC CL
JNZ BACK
MOV AH, 4CH
INT 21H
.MODEL SMALL
.DATA
COUNT EQU 05H
LIST DW 2357H,0A579H,0C911H,0C000H
EVENNUM DW 0 1 DUP(0)
ODDNUM DW 01 DUP(0)
.CODE
MOV AX,@DATA
MOV DS, AX
LEA SI, LIST
MOV CL, COUNT
BACK: MOV AX,[SI]
ROR AX,01
JC ODD1
INC EVENNUM
JMP NEXT
ODD1: INC ODDNUM
NEXT: ADD SI, 02
DEC CL
JNZ BACK
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
X DW 0088H
ZERO DW 01H DUP (00)
ONE DW 01H DUP (00)
.CODE
MOV AX,@DATA
MOV DS,AX
MOV AX,X
MOV CX,08H
BACK: SHR AX,01H
JNC NEXT
INC [ONE]
JMP FW
NEXT: INC [ZERO]
FW: DEC CX
JNZ BACK
MOV AH,4CH
INT 21H
END
2 out of 5Code
3.4 DEVELOP AND EXECUTE AN ALP TO FIND WHETHER 2 OUT OF 5 CODE OR NOT FOR A GIVEN
NUMBER (THE FIRST 3 MSB’S MUST BE ZERO AND IN THE REMAINING 5 BITS 2 BITS MUST BE
ONES)
.MODEL SMALL
.STACK
.DATA
DAT DB 03H
MSG1 DB 'VALID CODE','$'
MSG2 DB 'INVALID CODE','$'
ONE_C DB 0
.CODE
MOV AX,@DATA
MOV DS,AX
MOV CX,05
MOV AL,DAT
AND AL,0E0H
CMP AL,00H
JNZ FAIL
MOV AL,DAT
BACK: ROR AL,01
JNC NEXT
INC ONE_C
NEXT: LOOP BACK
CMP ONE_C,02
JNZ FAIL
LEA DX,MSG1
JMP DISP
FAIL: LEA DX,MSG2
DISP: MOV AH,09H
INT 21H
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
MSG1 DB 'GIVEN BYTE IS PALINDROME $'
MSG2 DB 'GIVEN BYTE IS NOT PALINDROME $'
INPUT DW 0A5A5H
COUNT EQU 16
.CODE
MOV AX,@DATA
MOV DS, AX
MOV BX, INPUT
MOV CX, COUNT
MOV DX, BX
CLC
UP: ROL BX, 01H
RCR DX, 01H
LOOP UP
CMP BX, DX
JZ NEXT
LEA DX, MSG2
MOV AH, 09H
INT 21H
JMP LAST
NEXT: LEA DX, MSG1
MOV AH, 09H
INT 21H
LAST: MOV AH, 4CH
INT 21H
END
MOV AH,09H
LEA DX,MSG
INT 21H
ENDM
.MODEL SMALL
.DATA
NUM DW 8C8 8H
MSG1 DB 'NUMBER IS NIBBLEWISE PALIN','$ '
MSG2 DB 'NUMBER IS NOT NIBBLEWISE PALIN','$'
.CODE
MOV AX,@DATA
MOV DS,AX
MOV AX,NUM
MOV CL,04H
MOV BX,AX
CLC
BACK: ROR BL,1
DEC CL
JNZ BACK
CMP BH,BL
JZ PALIN
DISP MSG2
JMP LAST
PALIN: DISP MSG1
LAST: MOV AH,4CH
INT 21H
END
4. BRANCH/LOOP INSTRUCTIONS:
Programs on Arrays
4.1 DEVELOP AND EXECUTE AN ALP TO SORT A GIVEN SET OF 8 BIT UNSIGNED INTEGERS INTO
ASCENDING/ DESCENDING ORDER USING BUBBLE SORT ALGORITHM.
.MODEL SMALL
.STACK
.DATA
A DB 0DH,0CH,0AH,0BH,0EH
COUNT DW $-A
.CODE
MOV AX,@DATA
MOV DS,AX
MOV BX,COUNT
LEA SI,A
DEC BX
NXTPASS: MOV CX,BX
MOV SI,0
NXTCOMP: MOV AL,A[SI]
INC SI
CMP AL,A[SI]
JB NEXT ; FOR DESCENDING JA NEXT
XCHG AL,A[SI]
MOV A[SI-1],AL
NEXT: LOOP NXTCOMP
DEC BX
JNZ NXTPASS
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
COUNT EQU 05H
LARGEST DB 01H DUP(?)
LIST DB 52H,23H,26H,45H,15H
.CODE
MOV AX,@DATA
MOV DS,AX
LEA SI,LIST
MOV CL,COUNT
MOV AL,[SI]
DEC CL
.MODEL SMALL
.DATA
N1 DB 23H, 57H, 0A5H, 79H, 0C3H, 22H, 0C9H, 11H
N2 DB 12H, 37H, 0C5H, 0DEH, 0A3H, 9AH, 29H, 14H
SUM DB 8 DUP (?)
DIFF DB 8 DUP (?)
.CODE
MOV AX,@DATA
MOV DS, AX
MOV CX, 8
MOV BX, 7
MOV DX, 0
CLC
ADDAGN:MOV AL, N1[BX]
ADC AL, N2[BX]
MOV SUM[BX], AL
DEC BX
LOOP ADDAGN
JNC NEXT
INC DX
NEXT: MOV CX, 8
MOV BX, 7
CLC
SUBAGN:MOV AL, N1[BX]
SBB AL, N2[BX]
MOV DIFF[BX], AL
DEC BX
LOOP SUBAGN
MOV AH, 4CH
INT 21H
END
5. STRING MANIPULATIONS
5.1. DEVELOP AND EXECUTE AN ALP TO TRANSFER A GIVEN SOURCE STRING TO DESTINATION
STRING USING STRING INSTRUCTIONS
.
.MODEL SMALL
.DATA
SRC DB 'RRCE','$'
LEN EQU ($-SRC)
DST DB 4 DUP(?),'$ '
.CODE
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
LEA SI,SRC
LEA DI,DST
MOV CX,LEN
CLD
REP MOVSB
MOV AH,09H
LEA DX,DST
INT 21H
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
SRC DB 'RRCE','$'
LEN EQU ($-SRC)
RES DB '$', 6 DUP(?),'$'
.CODE
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
LEA SI,SRC
LEA DI,RES
MOV CX,LEN
ADD DI,CX
DEC DI
BACK: CLD
LODSB
STD
STOSB
LOOP BACK
MOV AH,09H
LEA DX,RES+1
INT 21H
MOV AH,4CH
INT 21H
END
5.3. DEVELOP AND EXECUTE AN ALP TO FIND WHETHER THE STRING IS PALINDROME OR NOT.
.MODEL SMALL
.DATA
SRC DB 'NAYAN','$'
COUNT EQU 05H
MSG1 DB 'PAL','$'
MSG2 DB 'NOT PAL','$'
.CODE
MOV AX,@DATA
MOV DS,AX
LEA SI,SRC
LEA DI,SRC+4
MOV CX,COUNT
BACK: MOV AL,[SI]
MOV BL,[DI]
CMP AL,BL
JNZ FAIL
INC SI
DEC DI
DEC CX
JNZ BACK
LEA DX,MSG1
JMP DISP
FAIL: LEA DX,MSG2
DISP: MOV AH,09 H
INT 21H
MOV AH,4CH
INT 21H
END
LEA DX,MSG
MOV AH,09H
INT 21H
ENDM
.MODEL SMALL
.DATA
MSG1 DB 'ENTER THE STRING:$'
MSG2 DB 'ENTER THE CHARACTER TO BE SEARCHED:$'
MSG3 DB 'CHARACTER FOUND $'
MSG4 DB 'CHARACTER NOT FOUND $'
SRCH DB ?
CHAR DB 50
DB 00
DB 50 DUP(0)
.CODE
MOV AX,@DATA
MOV DS,AX
DISP MSG1
LEA DX,CHAR
MOV AH,0AH
INT 21H
DISP MSG2
MOV AH,01H
INT 21H
MOV CH,00H
MOV CL,CHAR+1
LEA BX,CHAR+2
UP: CMP AL,[BX]
JE SKIP
INC BX
LOOP UP
DISP MSG4
JMP LAST
SKIP: DISP MSG3
LAST: MOV AH,4CH
INT 21H
END
5.5. DEVELOP AND EXECUTE AN ALP THAT DETERMINES IF A GIVEN SUB-STRING IS PRESENT
OR NOT IN A MAIN STRING OF CHARACTERS. THE RESULT (1: PRESENT ,0:ABSENT) CAN BE
LEFT IN A MEMORY LOCATION.
.MODEL SMALL
.DATA
STRG DB ' GOD IS GREAT ','$'
COUNT1 DW ($-STRG)
SUBSTRG DB 'IS','$ '
COUNT2 DW ($-SUBSTRG)
RESULT DB ?
.CODE
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
MOV CX,COUNT1
LEA SI,SUBSTRG
LEA DI,STRG
CLD
MOV AL,[SI]
NEXT: REPNZ SCASB
INC SI
MOV DX,CX
SUB CX, COUNT2
JB STOP
MOV CX,COUNT2
DEC CX
REPNZ CMPSB
JNZ NOTFND
MOV RESULT,01H
ENDALL: MOV AH,4CH
INT 21H
STOP: MOV RESULT,00H
JMP ENDALL
NOTFND: MOV CL,DL
LEA SI,SUBSTRG
JMP NEXT
END
6. DOS INTERRUPTS: PROGRAM TO USE DOS INT 21H FUNCTION CALLS
6.1 DEVELOP AND EXECUTE AN ALP TO READ A CHARACTER FROM A KEYBOARD
.MODEL SMALL
.DATA
NUM DB ?
.CODE
MOV AX, @DATA
MOV DS, AX
MOV AH, 01H
INT 21H
MOV NUM, AL
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.CODE
MOV AX,@DATA
MOV DS,AX
MOV DX,09H
MOV AH,0AH
INT 21H
MOV AH,4CH
INT 21H
END
6.3 DEVELOP AND EXECUTE AN ALP TO DISPLAY CHARACTER A TO Z WITH SPACE BETWEEN
ON CONSOLE
.MODEL SMALL
.STACK
.CODE
MOV CX,26
MOV DL,'A'
BACK: MOV AH,02
INT 21H
INC DL
PUSH DX
MOV DL,20H
MOV AH,02
INT 21H
POP DX
LOOP BACK
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
DISP DB 'HI,HOW R U ? $'
.CODE
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET DISP
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
FILENAME DB 'TXT.ASM'
.CODE
MOV AX,@DATA
MOV DS,AX
MOV CX,0
MOV DX,OFFSET FILENAME
MOV AH,3CH
INT 21H
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.DATA
FILENAME DB 'NEWTEXT.TXT’,0
STRMSG DB "HELLO$"
FL_ HDL DW ?
WRITEME DB "HI$"
LEN EQU ($-WRITEME)
BUFFER DB LEN DUP(20H)
.CODE
MOV AX,@DATA
MOV DS,AX
MOV DX, OFFSET STRMSG
MOV AH,09H
INT 21H
MOV CX,0
MOV DX, OFFSET FILENAME
MOV AH, 3CH
INT 21H
MOV DX, OFFSET FILENAME
MOV AL,2
MOV AH,3DH
INT 21H
MOV FL_HDL,AX
MOV DX, OFFSET WRITEME
MOV BX, FL_HDL
MOV CX,LEN
MOV AH,40H
INT 21H
MOV BX, FL_HDL
MOV AH, 3EH
INT 21H
MOV DX, OFFSET FILENAME
MOV AL,2
MOV AH, 3DH
INT 21H
MOV FL_HDL, AX
MOV DX, OFFSET BUFFER
MOV BX, FL_HDL
MOV CX, LEN
MOV AH, 3FH
INT 21H
MOV FL_HDL, AX
;MOV BX, FL_HDL
;MOV AH, 3EH
;INT 21H
MOV DX, OFFSET BUFFER
MOV AH, 09H
INT 21H
MOV AH, 4CH
INT 21H
END
.MODEL SMALL
.DATA
YR1 DW ?
MT1 DB ?
DT1 DB ?
WK1 DB ?
DAYS DB "SUN$MON$TUE$WED$THU$FRI$SAT$"
MONTHS DB "JAN$FEB$MAR$ APR$MAY$JUN$JUL$AUG$SEP$OCT$NOV$DEC$"
.CODE
MOV AX,@DATA
MOV DS,AX
MOV AH,2AH
INT 21H
MOV YR1,CX
MOV MT1,DH
MOV DT1,DL
MOV WK1,AL
MOV AL,DT1
MOV AH,00
MOV DL,0 AH
DIV DL
OR AX,3030H
MOV BL,AL
MOV BH,AH
MOV DL,BL
MOV AH,02
INT 21H
MOV DL,BH
MOV AH,02
INT 21H
MOV DX, OFFSET MONTHS
MOV AH,00
MOV AL,MT1
DEC AL
MOV BL,04
MUL BL
ADD DX,AX
MOV AH,09
INT 21H
MOV DX,OFFSET DAYS
MOV AH,00
MOV AL,WK1
MOV BL,04
MUL BL
ADD DX,AX
MOV AH,09
INT 21H
MOV AH,4CH
INT 21H
END
.MODEL SMALL
.STACK
.CODE
MOV AH,2CH
INT 21H
MOV AL,CH
CALL DISP
MOV DL,':'
MOV AH,2
INT 21H
MOV AL,CL
CALL DISP
MOV AH,4CH
INT 21H
DISP PROC NEAR
AAM
ADD AX,3030H
MOV BX,AX
MOV DL,BH
MOV AH,2
INT 21H
MOV DL,BL
MOV AH,2
INT 21H
RET
DISP ENDP
END
Interfacing Experiments
7.1 READ THE STATUS OF EIGHT INPUT BITS FROM THE LOGIC CONTROLLER INTERFACE AND
DISPLAY FF IF IT IS EVEN PARITY BITS OTHERWISE DISPLAY 0. ALSO DISPLAY THE
.
NUMBER OF 1’S IN THE INPUT DATA
.MODEL SMALL
.STACK64
.DATA
MSG1 DB 13 ,10,’THE NO. OF 1’S IN INPUT DATA IS:’,’$’
MSG2 DB ? , ?,’$’
.CODE
MOV AX, @DATA
MOV DS, AX
LEA DX, MSG1
MOV AH, 09H
INT 21H
MOV DX, 0123H
MOV AL, 82H
OUT DX, AL
MOV DX, 0121H
IN AL, DX
MOV BL, 00H
MOV CX, 0 8H
LOOP1:ROR AL, 01H
JNC NOCOUNT
INC BL
NOCOUNT:LOOP LOOP1
MOV AL, BL
AND AL, OFH
CALL BINASCII
MOV MSG2+1, AL
MOV AL, BL
AND AL, 0F0H
MOV CL, 04H
ROR AL, CL
CALL BINASCII
MOV MSG2, AL
Dept of ECE, ACSCE, Bangalore Page 27
MICROPROCESSOR LAB MANUAL -10ECL-68
7.2 DISPLAY MESSAGES FIRE AND HELP ALTERNATELY WITH FLICKERING EFFECTS ON A 7
SEGMENT DISPLAY INTERFACE FOR A SUITABLE PERIOD OF TIME. ENSURE A FLASHING RATE
THAT MAKES IT EASY TO READ BOTH THE MESSAGES.
.MODEL SMALL
.DATA
FIRST DB 86H, 0AFH, 0F9H, 08EH
SECOND DB 8CH, 0C7H, 86 H, 89H
.CODE
BEGIN:MOV AX, @DATA
MOV DS, AX
MOV AL, 80H
MOV DX, 0123H
OUT DX, AL
MOV CX, 0 5H
NEXT:MOV SI, OFFSET FIRST
CALL FLASH
CALL DELAY
CALL DELAY
MOV SI, OFFSET SECOND
CALL FLASH
CALL DELAY
CALL DELAY
LOOP NEXT
MOV AH, 4CH
INT 21H
FLASH PROC NEAR
PUSH CX
PUSH BX
MOV CX, 0 4H
LOOP1:MOV BL, 08H
MOV AL, [SI]
LOOP2:ROL AL, 1
MOV DX, 0121H
OUT DX, AL
PUSH AX
MOV DX, 0122H
MOV AL, 0FFH
OUT DX, AL
MOV AL, 00H
OUT DX, AL
POP AX
DEC BL
JZ NEXT1
JMP LOOP2
NEXT1:INC SI
LOOP LOOP1
POP BX
POP CX
RET
FLASH ENDP
DELAY PROC NEAR
PUSH CX
PUSH BX
MOV CX, 0 8FFFH
L1: MOV BX, 0FFFH
L2: DEC BX
JNZ L2
LOOP L1
POP BX
POP CX
RET
DELAY ENDP
END
.MODEL SMALL
.CODE
MOV DX, 0123H
MOV AL, 80H
OUT DX, AL
MOV CX, 2 00
MOV DX, 0121H
MOV AL, 88H
L1: OUT DX, AL
CALL DELAY ROR AL, 1
LOOP LI
MOV AH, 4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV CX, 0 FFFH
L2: MOV BX, OFFFH
L3: DEC BX
JNZ L3
LOOP L2
POP CX
RET
DELAY ENDP
END
.MODEL SMALL
.CODE
MOV DX, 0123H
MOV AL, 80H
OUT DX, AL
MOV CX, 2 00
MOV DX, 0120H
MOV AL, 88H
L1: OUT DX, AL
CALL DELAY
ROL AL, 1
LOOP LI
MOV AH, 4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV CX, 0 FFFH
L2: MOV BX, OFFFH
L3: DEC BX
JNZ L3
LOOP L2
POP CX
RET
DELAY ENDP
END
7.4 SCAN THE 3X8 KEYPAD FOR KEY CLOSURE AND TO STORE THE CODE OF THE KEY PRESSED
IN A MEMORY LOCATION OR DISPLAY ON THE SCREEN. ALSO DISPLAY ROW AND COLUMN
NUMBERS OF THE KEY PRESSED.
ROW DB ?
COL DB ?
.CODE
START1:MOV AX, @DATA
MOV DS, AX
MOV AL 90H
MOV DX, CR
OUT DX, AL
START:MOV AL, 80H
MOV ROW, 1
MOV COL, 1
MOV CH, 0
MOV BL, 3
NEXTROW:ROL AL, 1
MOV BH, AL
MOV DX, PC
OUT DX, AL
MOV CL, 8
MOV DX, PA
IN AL, DX
NEXTCOL:RORAL, 1
JC DISPLAY
INC CH
IN COL
DEC CL
JNZ NEXTCOL
MOV COL, 1
INC ROW
MOV AL, BH
DEC BL
JNZ NEXTROW
X: JMP START
DISPLAY:DISP M1
MOV DL, CH
CMP DL, 0AH
JC DIGIT
ADD DL, 07H
DIGIT:ADD DL, 30H
MOV AH,2
INT 21H
ADD ROW, 30H
ADD COL, 30H
DISP M2
MOV DL, ROW
MOV AH, 2
INT 21H
DISP M3
MOV DL, COL
MOV AH, 2
INT 21H
DISP M4
MOV AH, 8
INT 21H
CMP AL, ‘c’
JZ X
Dept of ECE, ACSCE, Bangalore Page 31
MICROPROCESSOR LAB MANUAL -10ECL-68
VIVA QUESTIONS
1. Differentiate between micro processor and microcomputer.
2. What are the differences between 8086 and 8088 µP?
3. What are the functions of each general purpose registers?
4. What are the important features of queue?
5. How does the performance of µP improve by having BIU and EU?
6. What is the importance of flag register?
7. What are the different types of data on which 808 6 ALU work s?
8. Why 8086 µP cannot work on floating point numbers?
9. Give an example and explain how AF is used by the system?
10. How can you access data from the stack memory area without pop ping fro m the
top of the stack?
11. How does the µP generate 20 bit address even though it has 16 bit registers?
12. What are the control flags? Describe each one of them.
13. Give two instructions that clear the AX register to zero.
14. Which segment register may not be popped from the stack?
15. Which is more efficient-a MOV with an offset or an LEA instruction?
16. Explain ho w XLAT instruction works?
17. When is the add ress object transfer instruction used?
18. Name all the memory reference add ressing modes.
19. What is the difference between register indirect and indexed or based addressing mode?
20. Explain why the µP always fetches 16 bits code from memory into the queue, even though the queue is 8 bits?
21. What are the instructions that have a “V” bit in the instruction Op code?
22. What is the use of MOD field in the instruction Opcode?
23. Does “S” and “W” field always appear together in an instruction Opcode? Why?
24. What does the “Z” bit in an instruction indicate?
25. What are the cases in which the segment override can not be used?
26. Which are the addressing modes that are not availab le in MOV instruction?
27. What is the maximum size of the stack one can have at any instant of time in 8 086?
28. Can a programmer have more than one stack memory? Support your answer.
29. Which register cannot be popped from the top o f the stack? Give reasons.
30. In indirect addressing mode, how many I/O devices can 8086 access?
31. How many I/O devices can 8086 access?
32. How one can differentiate whether µP is reading from memory or I/O.
33. Why is zero prefixed whenever there is an alphabet as first digit hexadecimal number?
34. Which are the instructions in data transfer group that affect the flags?
90. How micropro cessor is protected using DEN and DT/R signals?
91. How 8086 and 8088 differ with respect to pins?
92. What is the difference between memory read and I/O read cycle?
93. Describe the response of 8086 when its reset pin is asserted high.
94. Why are bu ffers often needed on the address, data and control busses in µP system?
95. Why do we require PCLK signal in 8284 chip?
96. What are the sources of interrupt to 8086?
97. How does 8086 respond to an interrupt?
98. What is the priority of interrupts in 8086?
99. How is the interrupt vector table arranged?
100. Does nested interrupt work in 8086? How?
101. Why do we require PIC 8259? What are its important features?
102. What are the different ways in which SP/EN pin used in 8259?
103. Are CAS0-CAS2 (cascaded) lines required in 8259? Why?
104. What are the maximu m numbers of interrupting devices that can be connected to 8259 in cascaded
mode? How many 8 259’s are
required for the same?
105. How does the priority resolver resolve the highest priority?
106. What is the sequence of operations performed when there is an interrupt to 8259 interrupt controller?
107. Is the call address of 8 ad visab le to program 8259 when interfaced to 808 6?
108. How do the ICWs differ for master and slave in8259?
109. How is specially fully nested mode helpful?
110. What way is buffer mode helpful in system?
111. How does 8259 know that you are programming op eration command word?
112. What is the advantage of specific over non specific End of interrupt?
113. Mention the advantages and disadvantages of Automatic End of interrupt?
114. How do we set priority in 8259?
115. What is special mask mode?
116. What are the differences between static RWM and dynamic RWM?
117. How is static memories classified?
118. How does 8086 access 16 bit data from odd address?
119. Give some examples for conditional and unconditional CPU initiated I/O devices.
120. What are the differences between programmable and non programmable I/O devices?
121. When do you use co mmon cathode and co mmon anode 7-segment display unit?
122. Why do we require two address lines A0 and A1 on 825 5?
123. What are the combinations that are available in Mode 0 in 8 255?
124. How does the control word of 8255 change if the MSB bit is 0 and 1.
125. Explain the operation of 8255 in Mode 1.
126. Give some applications for using 8255 in Mode 1 and Mode 2.
127. What is dynamic refresh while interfacing 8 seven segment displays to microprocessor through 8255?
128. What is the function of GATE pin in 8254 timer?
129. What is the minimum and maximum clock freq uency that can be provided to 8254?
130. What are the different modes in which 8254 can be programmed? Give some applications of each mode.
131. What is the use of counter latch command option in the control word of 8254?
132. Do we always get square wave in Mode 3 of 8254 > Explain.
133. How is read back co mmand helpful?
134. When do you prefer memory mapped I/O? What are its disadvantages?
135. What is fold back address? What are its advantages and disadvantages?
136. Is it possible to interface 8255 and 8253 to 8086 when only 8 I/O space is provided?
137. Give some practical applications of ADC and DAC together.
138. Why do we require a delay after exciting a winding in a stepper motor before exciting next?
139. What is the use of interrupt INTR in ADC?
140. What is an instruction, instruction set and a bus?