Sie sind auf Seite 1von 30

Microprocessors & Interfacing Lab

EXPERIMENT NO.2-ARITHMETIC OPERATION


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, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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 2s Complement of (-7593H)
OPR2 = 6845H
OUTPUT: RESLW = 9761H (AX)
2s Complement
RESHW = D01CH (DX) of (- 2FE3689FH)
CASE III: two negative numbers
INPUT: OPR1 = 8A6DH 2s Complement of (-7593H)
OPR2 = 97BBH 2s Complement of (-6845H)
OUTPUT: RESLW = 689FH (AX)
RESHW = 2FE3H (DX)

Dept.of E.C.E, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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 2s Complement of (-26F8H)
OPR2 = 56H
OUTPUT: RESQ = 8CH (AL) 2s Complement of (- 74H)
RESR = 00H (AH)
CASE III: one positive number & one negative number
INPUT: OPR1 = 26F8H
OPR2 = AAH 2s Complement of (-56H)
OUTPUT: RESQ = 8CH (AL) 2s Complement of (- 74H)
RESR = 00H (AH)

Dept.of E.C.E, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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) 2s Complement of (-4)

Dept.of E.C.E, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool 10

Microprocessors & Interfacing Lab

EXPERIMENT NO.3-LOGICAL OPERATIONS


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, Brindavan institute of engineering & Technology,kurnool 11

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 12

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 13

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 14

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 15

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 16

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 17

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 18

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 19

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 20

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 21

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 22

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 23

Microprocessors & Interfacing Lab

EXPERIMENT NO.4
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, Brindavan institute of engineering & Technology,kurnool 24

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool 25

Microprocessors & Interfacing Lab

SORTING-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, Brindavan institute of engineering & Technology,kurnool 26

Microprocessors & Interfacing Lab

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, Brindavan institute of engineering & Technology,kurnool 27

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool 28

Microprocessors & Interfacing Lab


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, Brindavan institute of engineering & Technology,kurnool 29

Microprocessors & Interfacing Lab

EXPERIMENT NO.5
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, Brindavan institute of engineering & Technology,kurnool 30

Das könnte Ihnen auch gefallen