8086 program to Add 8 bit BCD numbers



ØØ       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>