Wednesday, June 3, 2020

Assembly Program 8086 to add two 8-bit BCD number and to add two 16-bit BCD number

Hey !! Let's see program to multiply two 8 bit numbers and another program to add two 16 bit BCD number. First let's take a look at the theory.

Let's go!!


In assembly language 8086 we use mnemonics in order to perform arithmetic operations like ADD/ADC in addition.
So, Let's dive deep into what ADD and ADC is ....Scroll Down for Program↓...

ADD:- It adds number from source to destination without carry. 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: ADD <destination> <source>
Operation: destination← destination + source

ADC:- It adds number from source to destination with carry i.e , adds carry flag into result of addition. 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: ADC <destination> <source>
Operation: destination← destination + source + carry

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

Syntax: DAA

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



Below are 2 programs : Two 8-bit BCD addition and Two 16-bit BCD addition.



Sum of two 8-Bit BCD numbers using ALP 8086 :-
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
ADD al, b1
DAA
mov ans ,al
mov ah ,4ch
int 21h
code ends
end start


Sum of two 16-Bit BCD numbers using ALP 8086 :-
data segment
no1 dw 21h
no2 dw 31h
ans dw ?
data ends
code segment
start : assume  cs :code,  ds :data
mov ax ,data
mov ds , ax
mov ax , no1
mov bx , no2
ADD ax , bx
DAA
mov ans ,ax
mov ah ,4ch
int 21h
code ends
end start


Programs:-

For many other Assembly Language  Programs related to microprocessor 8086 , data structure, etc Subjects  related to MSBTE,Computer engineering, IT field visit our  BLOG 

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

No comments:

Post a Comment