Microprocessors & Interfacing Lab Manual
Microprocessors & Interfacing Lab Manual
EXPERIMENT NO.1
AIM: To write an assembly language program to perform addition of two 16-bit signed
and unsigned numbers.
REGISTERS USED: AX,DS
FLAGS AFFECTED: AF,CF,OF,PF,SF,ZF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 4269H
OPR2 DW 1000H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
ADD AX,OPR2
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
UNSIGNED NUMBERS
INPUT: OPR1 = 4269H
OPR2 = 1000H
OUTPUT: RES = 5269H
SIGNED NUMBERS
INPUT: OPR1 = 9763H
OPR2 = A973H
OUTPUT: RES = 40D6H , CF = 1
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 2
RESULT:
UNSIGNED NUMBERS
INPUT: OPR1 = 4269H
OPR2 = 1000H
OUTPUT: RES = 3269H
SIGNED NUMBERS
INPUT: OPR1 = 9763H
OPR2 = 8973H
OUTPUT: RES = 0DF0H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 3
RESULT:
INPUT: OPR1 = 2000H
OPR2 = 4000H
OUTPUT: RESLW = 0000H (AX)
RESHW = 0800H (DX)
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 4
RESULT:
CASE I: Two positive numbers
INPUT: OPR1 = 7593H
OPR2 = 6845H
OUTPUT: RESLW = 689FH (AX)
RESHW = 2FE3H (DX)
CASE II: one positive number & one negative number
INPUT: OPR1 = 8A6DH 2’s Complement of (-7593H)
OPR2 = 6845H
OUTPUT: RESLW = 9761H (AX) 2’s Complement
RESHW = D01CH (DX) of (- 2FE3689FH)
CASE III: two negative numbers
INPUT: OPR1 = 8A6DH 2’s Complement of (-7593H)
OPR2 = 97BBH 2’s Complement of (-6845H)
OUTPUT: RESLW = 689FH (AX)
RESHW = 2FE3H (DX)
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 5
RESULT:
INPUT: OPR1 = 2C58H (DIVIDEND)
OPR2 = 56H (DIVISOR)
OUTPUT: RESQ = 84H (AL)
RESR = 00H (AH)
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 6
RESULT:
CASE I: two positive numbers
INPUT: OPR1 = 26F8H (DIVIDEND)
OPR2 = 56H (DIVISOR)
OUTPUT: RESQ = 74H (AL)
RESR = 00H (AH)
CASE II: one positive number & one negative number
INPUT: OPR1 = D908H 2’s Complement of (-26F8H)
OPR2 = 56H
OUTPUT: RESQ = 8CH (AL) 2’s Complement of (- 74H)
RESR = 00H (AH)
CASE III: one positive number & one negative number
INPUT: OPR1 = 26F8H
OPR2 = AAH 2’s Complement of (-56H)
OUTPUT: RESQ = 8CH (AL) 2’s Complement of (- 74H)
RESR = 00H (AH)
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 7
ASCII ADDITION
RESULT:
INPUT: CHAR = ‘8’
CHAR1 = ‘6’
OUTPUT: RES = 0104 (AX) unpacked BCD of 14
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 8
ASCII SUBTRACTION
RESULT:
CASE I:
INPUT: CHAR = ‘9’
CHAR1 = ‘5’
OUTPUT: RES = 0004 (AX)
CASE II:
INPUT: CHAR = ‘5’
CHAR1 = ‘9’
OUTPUT: RES = 00FC (AX) 2’s Complement of (-4)
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 9
ASCII MULTIPLICATION
RESULT:
INPUT: NUM1 = 09
NUM2 = 05
OUTPUT: RES = 0405 (AX) unpacked BCD of 45
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 10
ASCII DIVISION
RESULT:
INPUT: DIVIDEND = 0607H unpacked BCD of 67
DIVISOR = 09H
OUTPUT: RESQ = 07 (AL)
RESR = 04 (AH)
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 11
EXPERIMENT NO.3
AIM: To write an Assembly language program to perform the Logical AND operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: PF,SF,ZF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 6493H
OPR2 DW 1936H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
AND AX,OPR2
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 6493H
OPR2 = 1936H
OUTPUT: RES = 0012H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 12
LOGICAL OR OPERATION
RESULT:
INPUT: OPR1 = 6493H
OPR2 = 1936H
OUTPUT: RES = 7DB7H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 13
AIM: To write an Assembly language program to perform the Logical XOR operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: PF,SF,ZF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 6493H
OPR2 DW 1936H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
XOR AX,OPR2
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 6493H
OPR2 = 1936H
OUTPUT: RES = 7DA5H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 14
AIM: To write an Assembly language program to perform the Logical Invert operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: No flags are affected.
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 6493H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
NOT AX
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 6493H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 15
AIM: To write an Assembly language program to perform the Shift arithmetic / Logical
operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: SF,ZF,PF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 1639H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
SAL AX,01H (or) SHL AX,01H
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 1639H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 16
AIM: To write an Assembly language program to perform the Shift Logical Right
operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: SF,ZF,PF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 8639H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
SHR AX,01H
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 8639H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 17
AIM: To write an Assembly language program to perform the Shift Arithmetic Right
operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: SF,ZF,PF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 8639H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
SAR AX,01H
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 8639H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 18
AIM: To write an Assembly language program to perform the Rotate Right without carry
operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: CF,OF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 1639H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
ROR AX,01H
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 1639H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 19
AIM: To write an Assembly language program to perform the Rotate Right with carry
operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: CF,OF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 1639H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
RCR AX,01H
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 1639H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 20
AIM: To write an Assembly language program to perform the Rotate Left without carry
operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: CF,OF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 8097H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
ROL AX,01H
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 8097H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 21
AIM: To write an Assembly language program to perform the Rotate Left with carry
operation.
REGISTERS USED: AX,DS
FLAGS AFFECTED: CF,OF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 8097H
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
RCL AX,01H
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 8097H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 22
EXPERIMENT NO.5
ASCENDING ORDER
AIM: To write an assembly language program to arrange the given numbers in ascending
order.
REGISTERS USED: AX,DS,ES,SI,DI
FLAGS AFFECTED: AX,DS,SI,CX,DX
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
LIST DW 05H,04H,01H,03H,02H
COUNT EQU 05H
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV DX,COUNT-1
BACK:MOV CX,DX
MOV SI,OFFSET LIST
AGAIN:MOV AX,[SI]
CMP AX,[SI+2]
JC GO
XCHG AX,[SI+2]
XCHG AX,[SI]
GO:INC SI
INC SI
LOOP AGAIN
DEC DX
JNZ BACK
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: LIST (DS: 0000H) = 05H,04H,01H,03H,02H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 23
DESCENDING ORDER
AIM: To write an assembly language program to arrange the given numbers in ascending
order.
REGISTERS USED: AX,DS,SI,CX,DX
FLAGS AFFECTED: CF,AF,
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
LIST DW 03H,04H,01H,05H,02H
COUNT EQU 05H
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV DX,COUNT-1
BACK:MOV CX,DX
MOV SI,OFFSET LIST
AGAIN:MOV AX,[SI]
CMP AX,[SI+2]
JNC GO
XCHG AX,[SI+2]
XCHG AX,[SI]
GO:INC SI
INC SI
LOOP AGAIN
DEC DX
JNZ BACK
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: LIST (DS: 0000H) = 03H,04H,01H,05H,02H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 24
RESULT:
INPUT: BCD = 49
OUTPUT: UBCD1 = 09
UBCD2 = 04
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 25
RESULT:
INPUT: BCD = 49
OUTPUT: UBCD1 = 39
UBCD2 = 34
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 26
EXPERIMENT NO.3
MOVE BLOCK
AIM: To write an assembly language program to move the block of data from a source
location to the specified destination location.
REGISTERS USED: AX,DS,ES,SI,DI
FLAGS AFFECTED: No flags are affected
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
STR DB 04H,0F9H,0BCH,98H,40H
COUNT EQU 05H
DATA ENDS
EXTRA SEGMENT
ORG 0010H
STR1 DB 5 DUP(?)
EXTRA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AX,DATA
MOV ES,AX
MOV SI,OFFSET STR
MOV DI,OFFSET STR1
MOV CL,COUNT
CLD
REP MOVSB
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: STR (DS:0000H) = 04H,F9H,BCH,98H,40H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 27
REVERSE STRING
RESULT:
INPUT: STR (DS:0000H) = 01H,02H,03H,04H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 28
AIM: To write an assembly language program to find the length of the given string.
REGISTERS USED: AX,DS,SI,CL
FLAGS AFFECTED: ZF,PF,SF,AF,CF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
STR DB 01H,03H,08H,09H,05H,07H,02H
LENGTH DB ?
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AL,00H
MOV CL,00H
MOV SI,OFFSET STR
BACK:CMP AL,[SI]
JNC GO
INC CL
INC SI
JNZ BACK
GO:MOV LENGTH,CL
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: STR (DS:0000H) = 01H, 03H,08H,09H,05H,07H,02H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 29
STRING COMPARISION
RESULT:
INPUT: STR (DS:0000H) = 04H,05H,07H,08H
STR1 (DS:0010H) = 04H,06H,07H,09H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 30
RESULT:
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty