Microprocessors & Interfacing Lab 1
EXPERIMENT NO.1
ADDITION OF TWO 16-BIT NUMBERS-SIGNED & UNSIGNED
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
SUBTRACTION OF TWO 16-BIT NUMBERS-SIGNED & UNSIGNED
AIM: To write an assembly language program to perform subtraction 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
SUB 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 = 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
MULTIPLICATION OF TWO 16-BIT UNSIGNED NUMBERS
AIM: To write an assembly language program to perform multiplication of two 16-bit
unsigned numbers.
REGISTERS USED: AX,DS
FLAGS AFFECTED: OF,CF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 2000H
OPR2 DW 4000H
RESLW DW ?
RESHW DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
MUL OPR2
MOV RESLW,AX
MOV RESHW,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
MULTIPLICATION OF TWO 16-BIT SIGNED NUMBERS
AIM: To write an assembly language program to perform multiplication of two 16-bit
signed numbers.
REGISTERS USED: AX,DS
FLAGS AFFECTED: OF,CF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 7593H
OPR2 DW 6845H
RESLW DW ?
RESHW DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
IMUL OPR2
MOV RESLW,AX
MOV RESHW,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
DIVISION OF UNSIGNED NUMBERS
AIM: To write an assembly language program to perform division of 16-bit
unsigned number by 8-bit unsigned number.
REGISTERS USED: AX,DS
FLAGS AFFECTED: IF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 2C58H
OPR2 DB 56H
RESQ DB ?
RESR DB ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
DIV OPR2
MOV RESQ,AL
MOV RESR,AH
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
DIVISION OF SIGNED NUMBERS
AIM: To write an assembly language program to perform division of 16-bit
signed number by 8-bit signed number.
REGISTERS USED: AX,DS
FLAGS AFFECTED: IF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
OPR1 DW 26F8H
OPR2 DB 0AAH
RESQ DW ?
RESR DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,OPR1
IDIV OPR2
MOV RESQ,AL
MOV RESR,AH
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
AIM: To write an ALP to perform the addition of two ASCII bytes.
REGISTERS USED: AX,DS
FLAGS AFFECTED: AF,CF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
CHAR DB '8'
CHAR1 DB '6'
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AH,00H
MOV AL,CHAR
ADD AL,CHAR1
AAA
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
AIM: To write an ALP to perform the subtraction of two ASCII bytes.
REGISTERS USED: AX,DS
FLAGS AFFECTED: AF,CF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
CHAR DB '9'
CHAR1 DB '5'
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AH,00H
MOV AL,CHAR
SUB AL,CHAR1
AAS
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
AIM: To write an ALP to perform the multiplication of two ASCII bytes.
REGISTERS USED: AX,DS
FLAGS AFFECTED: PF,SF,ZF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
NUM1 DB 09
NUM2 DB 05
RES DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AH,00
MOV AL,NUM1
MUL NUM2
AAM
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
AIM: To write an ALP to perform the multiplication of two ASCII numbers.
REGISTERS USED: AX,DS
FLAGS AFFECTED: PF,SF,ZF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
DIVIDEND DW 0607H
DIVISOR DB 09H
RESQ DB ?
RESR DB ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,DIVIDEND
AAD
MOV CH,DIVISOR
DIV CH
MOV RESQ,AL
MOV RESR,AH
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
LOGICAL AND OPERATION
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
AIM: To write an Assembly language program to perform the Logical OR 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
OR AX,OPR2
MOV RES,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: OPR1 = 6493H
OPR2 = 1936H
OUTPUT: RES = 7DB7H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 13
LOGICAL XOR OPERATION
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
LOGICAL NOT OPERATION
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
OUTPUT: RES = 9B6CH
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 15
SHIFT ARITHMETIC / LOGICAL LEFT OPERATION
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
OUTPUT: RES = 2C72H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 16
SHIFT LOGICAL RIGHT OPERATION
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
OUTPUT: RES = 431CH
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 17
SHIFT ARITHMETIC RIGHT OPERATION
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
OUTPUT: RES = C31CH
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 18
ROTATE RIGHT WITHOUT CARRY
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
OUTPUT: RES = 8B1CH
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 19
ROTATE RIGHT WITH CARRY
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
OUTPUT: RES = 0B1CH
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 20
ROTATE LEFT WITHOUT CARRY
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
OUTPUT: RES = 012FH
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 21
ROTATE LEFT WITH CARRY
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
OUTPUT: RES = 012EH
________________________________________________________________________
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
OUTPUT: LIST (DS: 0000H) = 01H,02H,03H,04H,05H
________________________________________________________________________
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
OUTPUT: LIST (DS: 0000H) = 05H,04H,03H,02H,01H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 24
PACKED BCD TO UNPACKED BCD
AIM: To write an assembly language program to perform packed bcd into unpacked
bcd conversion.
REGISTERS USED: AX,DS,BL,CL
FLAGS AFFECTED: PF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
BCD DB 49H
COUNT DB 04H
UBCD1 DB ?
UBCD2 DB ?
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AL,BCD
MOV BL,AL
AND AL,0FH
MOV UBCD1,AL
MOV AL,BL
AND AL,0F0H
MOV CL,COUNT
ROR AL,CL
MOV UBCD2,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: BCD = 49
OUTPUT: UBCD1 = 09
UBCD2 = 04
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 25
BCD TO ASCII CONVERSION
AIM: To write an assembly language program to perform BCD to ASCII conversion.
REGISTERS USED: AX,DS,BL,CL
FLAGS AFFECTED: PF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
BCD DB 49H
COUNT DB 04H
ASCII1 DB ?
ASCII2 DB ?
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AL,BCD
MOV BL,AL
AND AL,0FH
OR AL,30H
MOV ASCII1,AL
MOV AL,BL
AND AL,0F0H
MOV CL,COUNT
ROR AL,CL
OR AL,30H
MOV ASCII2,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
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
OUTPUT: STR1 (DS:0010H) = 04H,F9H,BCH,98H,40H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 27
REVERSE STRING
AIM: To write an assembly language program to reverse the given string.
REGISTERS USED: AX,DS,SI,DI,CL
FLAGS AFFECTED: ZF,PF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
STR DB 01H,02H,03H,04H
COUNT EQU 02H
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV CL,COUNT
MOV SI,OFFSET STR
MOV DI,0003H
BACK:MOV AL,[SI]
XCHG [DI],AL
MOV [SI],AL
INC SI
DEC DI
DEC CL
JNZ BACK
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: STR (DS:0000H) = 01H,02H,03H,04H
OUTPUT: STR (DS:0000H) = 04H,03H,02H,01H
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 28
LENGTH OF THE STRING
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
OUTPUT: LENGTH = 07H (CL)
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 29
STRING COMPARISION
AIM: To write an assembly language program to compare the given strings.
REGISTERS USED: AX,DS,SI,DI,CL
FLAGS AFFECTED: ZF,CF
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
STR DB 04H,05H,07H,08H
COUNT EQU 04H
ORG 0010H
STR1 DB 04H,06H,07H,09H
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET STR
MOV DI,OFFSET STR1
MOV CL,COUNT
CLD
REP CMPSB
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
INPUT: STR (DS:0000H) = 04H,05H,07H,08H
STR1 (DS:0010H) = 04H,06H,07H,09H
OUTPUT: I ): IF STR = STR1 THEN ZF = 1 &
II ): IF STR ≠ STR1 THEN ZF = 0
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty
Microprocessors & Interfacing Lab 30
DOS / BIOS PROGRAMMING
●DISPLAY THE STRING●
AIM: To write an assembly language program to display the given string.
REGISTERS USED: AX,DS,DX
FLAGS AFFECTED: No flags are affected
PROGRAM:
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
MSG DB 0DH,0AH,"WELCOME TO MICROPROCESSORS LAB",0DH,0AH,"$"
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AH,09H
MOV DX,OFFSET MSG
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
END
RESULT:
WELCOME TO MICROPROCESSORS LAB
________________________________________________________________________
Dept.of E.C.E, S.K.D Engg College,Gooty