B Sc.
COMPUTER SCIENCE
SEMESTER IV
ASSEMBLY LANGUAGE PROGRAMMING LAB
LIST OF EXPERIMENTS
1.ADDITION.
2.SUBTRACTION
3. MULTIPLICATION
4. DIVISION
5. SQUARE OF A NUMBER.
6. FIND THE 2’S COMPLEMENT OF A NUMBER.
7.MASK THE LOWER NIBBLE OF AN 8 BIT NUMBER
8. SWAP THE NIBBLE IN A BYTE
9. ODD OR EVEN
10. POSITIVE OR NEGATIVE
SECTION 2
11. LARGEST NUMBER IN AN ARRAY
12. SMALLEST NUMBER IN AN ARRAY
13.SORTING IN ASCENDING ORDER
14.SORTING IN DESCENDING ORDER
15.MOVING A STRING
16.DISPLAY OF STRINGS
17.READ AND DISPLAY STRINGS
18.CHECK A PASSWORD
19.ARITHMETIC OPERATION USING PROCEDURE
20.BINARY TO BCD CONVERSION USING PROCEDURE
PROGRAM 1
DATE: ADDITION
(a)AIM: Write an Assembly Language program (ALP) to add two 8-bit numbers.
PROGRAM
DATA SEGMENT
NUM1 DB 00H
NUM2 DB 00H
SUM DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV CL,00H
MOV AL, NUM1
MOV BL, NUM2
ADD AL, BL
MOV SUM, AL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified
(b)AIM: Write an Assembly Language program (ALP) to add two 8 bit numbers sum 16 bits.
PROGRAM
DATA SEGMENT
NUM1 DB 00H
NUM2 DB 00H
SUM DB 00H
CARRY DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV CL,00H
MOV AL, NUM1
MOV BL, NUM2
ADD AL, BL
JNC L1
INC CL
L1: MOV SUM, AL
MOV CARRY, CL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified
(c)AIM: Write an Assembly Language program (ALP) to add two 16 bit numbers.
PROGRAM
DATA SEGMENT
NUM1 DW 0000H
NUM2 DW 0000H
SUM DW 0000H
CARRY DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV CL,00H
MOV AX, NUM1
MOV BX, NUM2
ADD AX, BX
JNC L1
INC CL
L1: MOV SUM, AX
MOV CARRY, CL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified
PROGRAM 2
DATE: SUBTRACTION
AIM: Write an Assembly Language program (ALP) to subtract two 16 bit numbers.
PROGRAM
DATA SEGMENT
NUM1 DW 0000H
NUM2 DW 0000H
DIFFERENCE DW?
BORROWDB?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
CLC
MOV CL,00H
MOV AX, NUM1
MOV BX, NUM2
SBB AX, BX
JNC L1
INC CL
L1: MOV DIFFERENCE, AX
MOV BORROW, CL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified
PROGRAM 3
DATE: MULTIPLICATION
(a)AIM: Write an Assembly Language program (ALP) to multiply two 8-bit numbers.
PROGRAM
DATA SEGMENT
MULTIPLICAND DB 00H
MULTIPLIER DB 00H
PRODUCT DW?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AL, MULTIPLICAND
MOV BL, MULTIPLIER
MUL BL
MOV PRODUCT, AX
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified
(b) AIM: Write an ALP to multiply two 16-bit numbers.
DATA SEGMENT
MULTIPLICAND DW 0000H
MULTIPLIER DW 0000H
PRODUCTL DW ?
PRODUCTH DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, MULTIPLICAND
MOV BX, MULTIPLIER
MUL BX
MOV PRODUCTL, AX
MOV PRODUCTH, DX
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified
PROGRAM 4
DATE: DIVISION
(a)AIM : Write an ALP to divide a 16 bit number by an 8bit number.
PROGRAM
DATA SEGMENT
DIVIDEND DW 0000H
DIVISOR DB 02H
QUOT DB?
REM DB?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, DIVIDEND
MOV BL, DIVISOR
DIV BL
MOV QUO, AL
MOV REM, AH
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified
PROGRAM 5 SQUARE OF A NUMBER
AIM : Write an ALP to find the square of a number.
PROGRAM
DATA SEGMENT
DATA1 DB 00H
SQR1 DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,DATA1
MUL AL
MOV SQR1,AX
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 6: FIND THE 2’S COMPLEMENT OF A NUMBER
AIM: Write an ALP to find the 2’s complement of a number.
DATA SEGMENT
DATA1 DB 00H
RESULT DB?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AL, DATA1
NEG AL
MOV RESULT, AL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
OBSERVATION
BEFORE EXECUTION AFTER EXECUTION
075C:0001 -- 55H 075C:0001-- 55H
075C:0002 -- 00H 075C:0002 -- ABH
PROGRAM 7: MASK THE LOWER NIBBLE OF AN 8 BIT NUMBER
AIM: Write an ALP to mask the lower nibble of an 8 bit number
PROGRAM
DATA SEGMENT
DATA1 DB 00H
RESULT DB?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE. DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AL, DATA1
AND AL,0F0H
MOV RESULT, AL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
OBSERVATION
BEFORE EXECUTION AFTER EXECUTION
075C:0001 -- 84H 075C:0001-- 84H
075C:0002 -- 00H 075C:0002 -- 80H
PROGRAM 8: SWAP THE NIBBLE IN A BYTE
AIM: Write an ALP to swap the nibble in a byte.
PROGRAM
DATA SEGMENT
DATA1 DB 00H
RESULT DB?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,DATA1
MOV CL,04H
ROR AL,CL
MOV RESULT,AL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
OBSERVATION
BEFORE EXECUTION AFTER EXECUTION
075C:0001 -- 84H 075C:0001-- 84H
075C:0002 -- 00H 075C:0002 -- 48H
PROGRAM 9: ODD OR EVEN
AIM : Write an ALP to check whether a given number is odd or even. If odd then
store 01H to memory location else store 00H.
ALGORITHM
Step 1: Start
Step 2: Move data 00H to CL register.
Step 3: Move content of memory location pointed by DATA to AL register.
Step 4: Shift the content of AL register right once.
Step 5: If carry flag is reset go to step 7 to store 00H for even number else go to step 6 .
Step 6: Increment the content of CL register by 1.
Step 7: Move the content of CL register to memory location pointed by RESULT.
Step 8: Stop.
PROGRAM 9: ODD OR EVEN
AIM : Write an ALP to check whether a given number is odd or even. If odd then
store 01H to memory location else store 00H.
PROGRAM
DATA SEGMENT
DATA DB 00H
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS, AX
MOV CL, 00H
MOV AL, DATA
SHR AL, 01H
JNC L1
INC CL
L1: MOV RESULT,CL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 10: POSITIVE OR NEGATIVE
AIM : Write an ALP to check whether a given number is positive or negative. If
negative then store 01H to memory location else store 00H.
PROGRAM
DATA SEGMENT
DATA DB 80H
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS, AX
MOV CL, 00H
MOV AL, DATA
SHL AL, 01H
JNC L1
INC CL
L1: MOV RESULT,CL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 11: LARGEST NUMBER IN AN ARRAY
AIM : Write an ALP to find the largest number in an array.
ALGORITHM
Step 1: Start
Step 2: Get count in the CX register.
Step 3: Set comparison count by decrementing CX by 0ne
Step 4: Initialize the offset address of array to SI.
Step 5: Get first number to AL.
Step 6: Increment SI to point to the next number.
Step 7: Compare AL with the next number.
Step 8: If AL > next no. go to step 10 otherwise go to next step.
Step 9: Get larger no. to AL.
Step 10: Decrement count in CX and it is not equal to zero go to step 6 otherwise go to the
next step.
Step 11: Store the largest number in AL to memory.
Step 12: Stop.
OBSERVATION
SAMPLE DATA: 01H,07H,0AH,0FH,01H
BEFORE EXECUTION AFTER EXECUTION
075C:0001 -- 05H(COUNT) 075C:0001-- 05H(COUNT)
075C:0002 -- 01H 075C:0002 -- 01H
075C:0003 -- 07H 075C:0003 -- 07H
075C:0004 -- 0AH 075C:0004 -- 0AH
075C:0005 -- 0FH 075C:0005 -- 0FH
075C:0006 -- 01H 075C:0006 -- 01H
075C:0007 -- 00H 075C:0007 -- 0FH(largest no.)
PROGRAM 11: LARGEST NUMBER IN AN ARRAY
AIM : Write an ALP to find the largest number in an array.
PROGRAM
DATA SEGMENT
COUNT DB ?
ARRAY DB ?
LARGEST DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS, AX
MOV CH,00H
MOV CL,COUNT
DEC CL
LEA SI,ARRAY
MOV AL,[SI]
BACK: INC SI
CMP AL,[SI]
JNC L1
MOV AL,[SI]
L1: LOOP BACK
MOV LARGEST,AL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 12: SMALLEST NUMBER IN AN ARRAY
AIM : Write an ALP to find the smallest number in an array.
ALGORITHM
Step 1: Start
Step 2: Get count in the CX register.
Step 3: Set comparison count by decrementing CX by 0ne
Step 4: Initialize the offset address of array to SI.
Step 5: Get first number to AL.
Step 6: Increment SI to point to the next number.
Step 7: Compare AL with the next number.
Step 8: If AL < next no. go to step 10 otherwise go to the next step.
Step 9: Get smaller no. to AL.
Step 10: Decrement count in CX and it is not equal to zero go to step 6 otherwise go to the
next step.
Step 11: Store the smallest number in AL to memory.
Step 12: Stop.
OBSERVATION
SAMPLE DATA: 01H,07H,0AH,0FH,01H
BEFORE EXECUTION AFTER EXECUTION
075C:0001 -- 05H(COUNT) 075C:0001-- 05H(COUNT)
075C:0002 -- 01H 075C:0002 -- 01H
075C:0003 -- 07H 075C:0003 -- 07H
075C:0004 -- 0AH 075C:0004 -- 0AH
075C:0005 -- 0FH 075C:0005 -- 0FH
075C:0006 -- 01H 075C:0006 -- 01H
075C:0007 -- 00H 075C:0007 -- 01H(smallest no.)
PROGRAM 12: SMALLEST NUMBER IN AN ARRAY
AIM : Write an ALP to find the smallest number in an array.
PROGRAM
DATA SEGMENT
COUNT DB ?
ARRAY DB ?
SMALLEST DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS, AX
MOV CH,00H
MOV CL,COUNT
DEC CL
LEA SI,ARRAY
MOV AL,[SI]
BACK: INC SI
CMP AL,[SI]
JC L1
MOV AL,[SI]
L1: LOOP BACK
MOV SMALLEST,AL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 13: SORTING IN ASCENDING ORDER
AIM : Write an ALP to sort the numbers in an ascending order.
ALGORITHM
Step 1: Start
Step 2: Get cycle count in BX register.
Step 3: Decrement BX
Step 4: Set comparison count in CX register.
Step 5: Initialize the offset address of array to SI.
Step 6: Get the number to AL.
Step 7: Compare AL with the next number.
Step 8: If AL < next no. go to step 10 otherwise go to the next step.
Step 9: Exchange the numbers.
Step 10: Increment SI
Step 10: Decrement comparison count in CX and it is not equal to zero go to step 6
otherwise go to next step.
Step 11: Decrement cycle count in BX.
Step 12: Cycle count in BX is not equal to zero go to step 4
Step 13: Stop.
OBSERVATION
SAMPLE DATA: 07H,02H,01H,0AH,08H
BEFORE EXECUTION AFTER EXECUTION
075C:0000 -- 00H 075C:0000-- 00H
075C:0001 -- 05H(COUNT) 075C:0001-- 05H(COUNT)
075C:0002 -- 07H 075C:0002 -- 01H
075C:0003 -- 02H 075C:0003 -- 02H
075C:0004 -- 01H 075C:0004 -- 07H
075C:0005 -- 0AH 075C:0005 -- 08H
075C:0006 -- 08H 075C:0006 -- 0AH
PROGRAM 13: SORTING IN ASCENDING ORDER
AIM : Write an ALP to sort the numbers in an ascending order.
PROGRAM
DATA SEGMENT
COUNT DW ?
ARRAY DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS, AX
MOV BX,COUNT
DEC BX
NEXT: MOV CX,BX
LEA SI,ARRAY
BACK: MOV AL,[SI]
CMP AL,[SI+1]
JC L1
XCHG AL,[SI+1]
MOV [SI],AL
L1: INC SI
LOOP BACK
DEC BX
JNZ NEXT
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 14: SORTING IN DESCENDING ORDER
AIM : Write an ALP to sort the numbers in descending order.
ALGORITHM
Step 1: Start
Step 2: Get cycle count in BX register.
Step 3: Decrement BX
Step 4: Set comparison count in CX register.
Step 5: Initialize the offset address of array to SI.
Step 6: Get the number to AL.
Step 7: Compare AL with the next number.
Step 8: If AL > next no. go to step 10 otherwise go to next step.
Step 9: Exchange the numbers.
Step 10: Increment SI
Step 10: Decrement comparison count in CX and it is not equal to zero go to step 6 other
wise go to next step.
Step 11: Decrement cycle count in BX.
Step 12: Cycle count in BX is not equal to zero go to step 4
Step 13: Stop.
OBSERVATION
SAMPLE DATA: 07H,02H,01H,0AH,08H
BEFORE EXECUTION AFTER EXECUTION
075C:0000 -- 00H 075C:0000-- 00H
075C:0001 -- 05H(COUNT) 075C:0001-- 05H(COUNT)
075C:0002 -- 07H 075C:0002 -- 0AH
075C:0003 -- 02H 075C:0003 -- 08H
075C:0004 -- 01H 075C:0004 -- 07H
075C:0005 -- 0AH 075C:0005 -- 02H
075C:0006 -- 08H 075C:0006 -- 01H
PROGRAM 14: SORTING IN DESCENDING ORDER
AIM : Write an ALP to sort the numbers in descending order.
PROGRAM
DATA SEGMENT
COUNT DW ?
ARRAY DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS, AX
MOV BX,COUNT
DEC BX
NEXT: MOV CX,BX
LEA SI,ARRAY
BACK: MOV AL,[SI]
CMP AL,[SI+1]
JC L1
XCHG AL,[SI+1]
MOV [SI],AL
L1: INC SI
LOOP BACK
DEC BX
JNZ NEXT
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 15: MOVING A STRING
Step 1: Start
Step 2: Copy Base address of DS to AX
Step 3: Copy AX to DS
Step 4: Copy AX to ES
Step 5: Point SI at source location
Step 6: Point DI at destination location
Step 7: Copy count in CX register
Step 8: Clear direction flag so pointers SI and DI auto increment.
Step 9: Moved string bytes until all strings moved.
Step 10: Stop
Before execution After execution
CAS PUTHUPPALLY CAS PUTHUPPALLY CAS PUTHUPPALLY
PROGRAM 15: MOVING A STRING
AIM : Write an ALP to move a string from one location to another.
DATASEGMENT
ARRAY1 DB ‘CAS PUTHUPPALLY ‘
ARRAY 2 DB ?
DATA ENDS
CODESEGMENT
ASSUME CS: CODE, DS:DATA
START:MOV AX, @DATA
MOV DS, AX
MOV ES, AX
LEA SI, ARRAY1
LEA DI, ARRAY2
MOV CX,16
CLD
REP MOVSB
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 16: DISPLAY OF STRING
DATA SEGMENT
MSG DB 0AH,0DH “HELLO WORLD$”
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,0003H //CLEAR SCREEN
INT 10H
LEA DX, MSG //DISPLAY STRING
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified.
PROGRAM 16: Find the length of a String
Aim:Write an ALP to accept a string and to find the length of string.
DATA SEGMENT
MSG1 DB 0AH,0DH “ENTER A STRING: $”
MSG2 DB 0AH,0DH “ THE ENTERED STRING IS:$”
MSG3 DB 0AH,0DH “THE LENGTH OF THE STRING IS :$”
ARRAY DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS:DATA
START:MOV AX, DATA
MOV DS, AX
MOV AX,0003H //CLEAR SCREEN
INT 10H
LEA DX, MSG1 //DISPLAY STRING
MOV AH,09H
INT 21H
MOV CL,00H
LEA SI,ARRAY
AGAIN:MOV AH,01H
INT 21H
MOV[SI],AL
INC SI
INC CL
CMP AL,0DH
JNZ AGAIN
MOV DH,’$’
MOV [SI],DH
LEA DX, MSG2
MOV AH,09H
INT 21H
LEA DX, ARRAY
MOV AH,09H
INT 21H
LEA DX, MSG3
MOV AH,09H
INT 21H
DEC CL
MOV AL,CL
MOV AH,00H
MOV BL,0AH
DIV BL
MOV BL,AH
MOV BH,AL
MOV DL,BH
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,BL
ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
OBSERVATION
ENTERA STRING: CAS PUTHUPPALLY
THE ENTERED STRING IS: CAS PUTHUPPALLY
THE LENGTH OF THE STRING IS :15
PROGRAM 17: REVERSE THE STRING
AIM: Write an ALP to reverse a string after accepting it
DATA SEGMENT
MSG1 DB 0AH,0DH “ENTER A STRING: $”
MSG2 DB 0AH,0DH “ THE ENTERED STRING IS:$”
MSG3 DB 0AH,0DH “THE REVERSE IS :$”
ARRAY DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS:DATA
START:MOV AX, DATA
MOV DS, AX
MOV AX,0003H //CLEAR SCREEN
INT 10H
LEA DX, MSG1 //DISPLAY STRING
MOV AH,09H
INT 21H
MOV CL,00H
LEA SI,ARRAY
AGAIN:MOV AH,01H
INT 21H
MOV[SI],AL
INC SI
INC CL
CMP AL,0DH
JNZ AGAIN
MOV DH,’$’
MOV [SI], DH
LEA DX, MSG2
MOV AH,09H
INT 21H
LEA DX, ARRAY
MOV AH,09H
INT 21H
LEA DX, MSG3
MOV AH,09H
INT 21H
DEC SI
DEC SI
DEC CL
BACK:MOV DL, [SI]
MOV AH,02H
INT 21H
DEC SI
DEC CL
JNZ BACK
MOV AH,4CH
INT 21H
CODE ENDS
END START
PROGRAM 18: EVALUATE 6A+4B(USING PROCEDURE)
Aim: Write an ALP to evaluate 6A+4B
DATA SEGMENT
A DB 00H
B DB 00H
A1 DW 0000H
DATAENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,A
MOV AH,00H
MOV BL,06H
CALL MULT
MOV DX,AX
MOV AL,B
MOV AH,00H
MOV BL,04H
CALL MULT
ADD AX,DX
MOV A1,AX
INT3H
MULT PROC NEAR
MUL BL
RET
MULT ENDP
CODE ENDS
END START
PROGRAM 16: ARITHMETIC OPERATION USING PROCEDURE
ALGORITHM
Step 1: Start
Step 2: Move DATA1 to AL
Step 3: Mov DATA2 to BL
Step 4: Copy AL to CL
Step 5: Call Procedure P1
Step 6: Save sum in AL to memory pointed by SUM
Step 7: Copy CL to AL
Step 8: Call Procedure P2
Step 9: Save difference in AL to memory pointed by DIFFERENCE
Step 10: Copy CL to AL
Step 11: Call Procedure P3
Step 12: Save product in AL to memory pointed by PRODUCT
Step 13: Stop
PROCEDURE 1
Step 1: Start
Step 2: Add AL to BL
Step 3: Return to the main program.
Step 4: Stop
PROCEDURE 2
Step 1: Start
Step 2: Subtract BL from AL
Step 3: Return to the main program.
Step 4: Stop
PROCEDURE 3
Step 1: Start
Step 2: Multiply Al with BL.
Step 3: Return to the main program.
Step 4: Stop
OBSERVATION
BEFORE EXECUTION AFTER EXECUTION
075C:0001 -- 05H 075C:0001-- 05H
075C:0002 -- 02H 075C:0002 -- 02H
075C:0003 -- 00H 075C:0003 -- 07H (SUM)
075C:0004 -- 00H 075C:0004 -- 03H (DIFFERENCE)
075C:0005 -- 00H 075C:0005 -- 0AH (PRODUCT)
PROGRAM 16: ARITHMETIC OPERATION USING PROCEDURE
AIM : Write an ALP to find the sum,difference and product of two numbers using
procedures.
PROGRAM
.MODEL SMALL
.STACK 100H
.DATA
DATA1 DB 05H
DATA2 DB 02H
SUM DB ?
DIFFERENCE DB ?
PRODUCT DB ?
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS, AX
MOV AL,DATA1
MOV BL,DATA2
MOV CL,AL
CALL P1
MOV SUM,AL
MOV AL,CL
CALL P2
MOV DIFFERENCS.AL
MOV AL,CL
CALL P3
MOV PRODUCT,AL
INT 21H
MAIN ENDP
P1 PROC NEAR
ADD AL,BL
RET
P1 ENDP
P2 PROC NEAR
SUB AL,BL
RET
P2 ENDP
P3 PROC NEAR
MUL BL
RET
P3 ENDP
END MAIN
RESULT: The program is successfully built, executed and output is verified.
PROGRAM
DATE: ADDITION OF N NUMBERS
(A)AIM: : Write an Assembly Language program (ALP) to add N 8 bit numbers.
PROGRAM
DATA SEGMENT
COUNT DB 00H
ARRAY DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE. DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BL,00H
MOV CH,00H
MOV CL,COUNT
MOV AL,00H
LEA SI,ARRAY
BACK:ADD AL,[SI]
JNC L1
INC BL
L1: INC SI
LOOP BACK
MOV [SI],AL
INC SI
MOV [SI],BL
INT 3H
CODE ENDS
END START
RESULT: The program is successfully built, executed and output is verified