- Write an 8086 program that adds two packed BCD numbers input from the keyboard and computes and displays the result on the system video monitor
- Data should be in the form 64+89= The answer 153 should appear in the next line.
Program:
Mov dx, buffer address
Mov ah,0a
Mov si,dx
Mov byte ptr [si], 8
Int 21
Mov ah,0eh
Mov al,0ah
Int 10 ; BIOS service 0e line feed position cursor
sub byte ptr[si+2], 30h
sub byte ptr[si+3], 30h
sub byte ptr[si+5], 30h
sub byte ptr[si+6], 30h
Mov cl,4
Rol byte ptr [si+3],cl
Rol byte ptr [si+6],cl
Ror word ptr [si+2], cl
Ror word ptr [si+2], cl
Mov al, [si+3]
Add al, [si+6]
Daa
Mov bh,al
Jnc display
Mov al,1
Call display
Mov al,bh
Call display
Int 20
Display Subroutine:
mov bl,al ; Save original number and al,f0 ;Force bits 0-3 low
mov cl,4 ; Four rotates
ror al,cl ; Rotate MSD into LSD
add al,30 ; Convert to ASCII
mov ah,0e ; BIOS video service 0E
int 10 ; Display character
mov al,bl ; Recover original number
and al,0f ; Force bits 4-7 low
add al,30 ; Convert to ASCII
int 10 ; Display character
ret ; Return to calling program
;
;Input buffer begins here