Pages

Search in This Blog

Showing posts with label scan. Show all posts
Showing posts with label scan. Show all posts

Thursday, 16 February 2012

Addition of two packed BCD numbers entered through keyboard


  • 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