Vous êtes sur la page 1sur 30

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

Vous aimerez peut-être aussi