8086 Program to unpack the packed BCD number
13:01
ØØ Explanation :
·
A digit BCD number is available in register AL.
We have to unpack this BCD number i.e. we have to separate the BCD digits. e.g
: If the number = 92 H then in unpack form the two digits will 02 H and 09 H.
i.e. we have to mask the lower nibble, first and rotate four times to the right
to get the MSB digit. Then to get the LSB digit mask the upper nibble. Display
the result. Masking lower nibble means ANDing the number with OF0 to get MSB.
ØØ Algorithm :
Step
I : Initialize the data memory.
Step
II : Load number into register AL.
Step
III : Mask
the lower nibble.
Step
IV : Rotate
4 times left to make
; MSB digit = LSB.
; MSB digit = LSB.
Step
V : Display
the digit.
Step
VI : Load
number in AL.
Step
VII : Mask upper nibble.
Step
VIII : Display the result.
Step
IX : Stop.
ØØ Flowchart : Refer
flowchart 6.
ØØ Program :
.model small
.data
a db 92H
.code
mov ax, @data ;
Initialize data section
mov ds, ax
mov al, a ;
Load number1 in al
and al, 0f0h ;
mask lower nibble
rcr al, 4 ;
rotate it 4 times to right to make it 09h
mov bh, al ;
store result in bh
call disp ;
display the upper nibble
mov al, a ;
Load number1 in al
and al, 0fh ;
mask upper nibble
mov bh, al ;
store result in bh
call disp ;
display the lower nibble
mov ah, 4cH ;
Terminate Program
int 21H
disp proc near
mov ch, 02h ;
Count of digits to be displayed
mov cl, 04h ;
Count to roll by 4 bits
l2: rol bh, cl ;
roll bl so that msb comes to lsb
mov dl, bh ;
load dl with data to be displayed
and l, 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, 02h
mov dl, ' '
int 21h
endp
ret
end
ØØ Result :
C:\programs>tasm
unpack.asm
Turbo
Assembler Version 3.0 Copyright (c) 1988, 1991 Borland
International
Assembling
file: unpack.asm
Error
messages: None
Warning messages: None
Passes: 1
Remaining
memory: 437k
C:\programs>tlink
unpack
Turbo
Link Version 3.0 Copyright (c) 1987,
1990 Borland International
Warning: No
stack
C:\programs>unpack
09 02
C:\programs>
0 comments: