8086 program to Add two 16 bit numbers
03:49
ØØ Explanation :
·
Consider that a word of data is present in the
AX register and a 2nd word of data is present in the BX register.
·
We have to add word in AX with the word in BX.
Using ADD instruction, add the contents.
·
Result will be stored in the AX register.
Display the result using display routine.
For example :
|
AX = 1234 H
|
|
1234
H
|
|
BX = 0100 H
|
+
|
0100
H
|
|
|
|
1334
H
|
ØØ Algorithm :
Step I : Initialise the data segment.
Step II : Get the first number in AX register.
Step III : Get the second number in BX register.
Step IV : Add the two numbers.
Step V : Display the result.
Step VI : Stop
ØØ Flowchart : Refer
flowchart
ØØ Program :
.model small
.data
a dw 1234H
b dw 0100H
.code
mov ax, @data ;
Initialize data section
mov ds, ax
mov ax, a ;
Load number1 in ax
mov bx, b ;
Load number2 in bx
add ax, bx ;
add numbers. Result in ax
mov ch, 04h ;
Count of digits to be displayed
mov cl, 04h ;
Count to roll by 4 bits
mov bx, ax ;
Result in reg bh
l2: rol bx, cl ;
roll bl so that msb comes to lsb
mov dl, bl ;
load dl with data to be displayed
and dl, 0fH ;
get only lsb
cmp dl, 09 ;
check if digit is 0-9 or letter A-F
jbe l4
add dl, 07 ;
if letter add 37H else only add 30H
l4: add dl, 30H
mov ah, 02 ;
Function 2 under INT 21H (Display character)
int 21H
dec ch ;
Decrement Count
jnz l2
mov ah, 4cH ;
Terminate Program
int 21H
end
ØØ Result :
C:\programs>tasm
16-add.asm
Turbo
Assembler Version 3.0 Copyright (c) 1988, 1991 Borland
International
Assembling
file: 16-add.asm
Error
messages: None
Warning
messages: None
Passes: 1
Remaining
memory: 438k
C:\programs>tlink
16-add
Turbo
Link Version 3.0 Copyright (c) 1987,
1990 Borland International
Warning: No
stack
C:\programs>16-add
1334
0 comments: