8086 program to Subtract two 8 bit numbers
13:07
ØØ Explanation :
· Consider that a byte of data is present in the AL register and second byte of data is present in the BL register.
· We have to subtract the byte in BL from the byte in AL. Using sub instruction subtract the contents of two registers. Result will be stored in the AL register.
· Display the result using display routine.
For example :
|
AL = 0A H
|
0A H
|
(10)10
| |
BL = 04 H
|
–
|
04 H
|
(4)10
| |
06H
|
ØØ Algorithm :
Step 1 : Initialise the data segment.
Step 2 : Get the first number in AL register.
Step 3 : Get the second number in BL register.
Step 4 : Subtract the two numbers. Corel – 2
Step 5 : Display the result.
Step 6 : Stop
ØØ Flowchart : Refer flowchart 9.
ØØ Program :
.model small
.data
a db 0AH
b db 04H
.code
mov ax, @data ; Initialize data section
mov ds, ax
mov al, a ; Load number1 in al
mov bl, b ; Load number2 in bl
sub al, bl ; subtract numbers and result in al
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:\>tasm 8bit-sub.asm
Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland International
Assembling file: 8bit-sub.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 438k
C:\>tlink 8bit-sub.obj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International
Warning: No stack
C:\>8bit-sub
06
C:\>
0 comments: