[go: up one dir, main page]

0% found this document useful (0 votes)
20 views39 pages

Alp Lab 2024 - New

The document outlines a series of experiments for a B.Sc. Computer Science Assembly Language Programming Lab, detailing various programming tasks such as addition, subtraction, multiplication, and division of numbers, as well as operations on arrays and strings. Each experiment includes an aim, program structure, and results indicating successful execution. The document serves as a practical guide for students to implement and verify assembly language programs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views39 pages

Alp Lab 2024 - New

The document outlines a series of experiments for a B.Sc. Computer Science Assembly Language Programming Lab, detailing various programming tasks such as addition, subtraction, multiplication, and division of numbers, as well as operations on arrays and strings. Each experiment includes an aim, program structure, and results indicating successful execution. The document serves as a practical guide for students to implement and verify assembly language programs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 39

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

You might also like