8086 program to Add 8 bit BCD numbers
03:08
ØØ Explanation :
·
Consider that a byte of data is present in the
AL register and a second byte of data is present in the BL register. We have to
add byte in AL with the byte in BL. Using add instruction, add the contents of
2 registers.
·
Result will be stored in the AL register.
·
Use DAA instruction that will check if BCD is
valid, if it is not valid then 6 is added to give proper BCD result. Display
the result.
ØØ Algorithm :
Step I : Initialize the data memory.
Step II : Get the first BCD number in AL.
Step III : Get the second BCD number in BL.
Step IV : Add the two BCD numbers.
Step V : Using DAA, adjust result to valid BCD
number.
Step VI : Display the result.
Step VII : Stop.
ØØ Flowchart : Refer
flowchart 13.
ØØ Program :
.model small
.data
a db 09H
b db 02H
.code
mov
ax, @data ; Initialize data section
mov
ds, ax
mov
al, a ;
Load number1 in al
mov
bl, b ;
Load number2 in bl
add
al, bl ; add numbers and result in al
daa ; adjust result to
valid BCD number
mov
ch, 02h ; Count of digits to be displayed
mov
cl, 04h ; Count to roll by 4 bits
mov
bh, al ;
Result in reg bh
l2: rol bh,
cl ; roll bl so that msb comes
to lsb
mov
dl, bh ;
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
add-bcd8.asm
Turbo
Assembler Version 3.0 Copyright (c) 1988, 1991 Borland
International
Assembling
file: add-bcd8.asm
Error
messages: None
Warning
messages: None
Passes: 1
Remaining
memory: 438k
C:\programs>tlink
add-bcd8
Turbo
Link Version 3.0 Copyright (c) 1987,
1990 Borland International
Warning: No
stack
C:\programs>add-bcd8
11
C:\programs>
0 comments: