Experiment No.2-Arithmetic Operation: Addition of Two 16-Bit Numbers-Signed & Unsigned
Experiment No.2-Arithmetic Operation: Addition of Two 16-Bit Numbers-Signed & Unsigned
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
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
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
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
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
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