Monday, May 27, 2019

8086 Assembly program to SUBTRACT two 8-bit BCD numbers

In assembly language 8086 we use mnemonics in order to perform arithmetic operations like SUB/SBB in subtraction.
So, Let's dive deep into what  SUB and SBB is ...

SUB:- It subtracts the data in source from data in destination and then stores result in destination. Source can be memory location or register or a number but destination should be register or a memory location(not immediate number). Remember that source and destination should be of same type and both shouldn't be memory locations.

Syntax: SUB <destination> <source>
Operation: destination← destination - source

SBB:- It is used to subtract source-operand and borrow. from destination-operand and then the result is stored in destination. Source can be memory location or register or a number but destination should be register or a memory location(not immediate number). Remember that source and destination should be of same type and both shouldn't be memory locations.

Syntax: SBB <destination> <source>
Operation: destination← destination - source - carry flag

DAS:- Usually used after SUB/SBB because DAS works on AL registers. This instruction is used to convert result of subtraction of 2packed numbers into 1-packed BCD number. in simple language, SUB/SBB adds BCD number in hexadecimal format and then DAS instruction converts this hexadecimal result into BCD result.

Syntax: DAS

Which flags get affected?
Ans- OF , CF, PF , AF, SF , ZF .

data segment
no1 db 02h
no2 db 03h
ans db ?
data ends
code segment
start : assume  cs :code,  ds :data
mov ax ,data
mov ds , ax
mov al , no1
mov bl ,no2
SUB al, b1
DAS
mov ans ,al
mov ah ,4ch
int 21h
code ends
end start


Programs:-


For many other Assembly Language  Programs related to microprocessor 8086 visit our  BLOG 

There are programs of largest ,smallest ,division ,multiplication,odd/even,block operation ,string operations,BCD ,etc

No comments:

Post a Comment