Home »
Embedded Systems
Find addition of two 8-bit BCD numbers | 8086 Microprocessor
In this tutorial, we will learn how to find the addition of two 8-bit BCD numbers on 8086 Microprocessor?
By Ayush Sharma Last updated : May 22, 2023
Problem Statement
Write a program in 8086 microprocessor to find out the addition of two 8-bit BCD numbers, where numbers are stored from starting memory address 2000 : 500 and store the result into memory address 2000 : 600 and carry at 2000 : 601.
Algorithm
- Load data from offset 500 to register AL (first number)
- Load data from offset 501 to register BL (second number)
- Add these two numbers (contents of register AL and register BL)
- Apply DAA instruction (decimal adjust)
- Store the result (content of register AL) to offset 600
- Set register AL to 00
- Add contents of register AL to itself with carry
- Store the result (content of register AL) to offset 601
- Stop
Program:
ADDRESS | MNEMONICS | COMMENTS |
400 | MOV AL, [500] | AL ← [500] |
404 | MOV BL, [501] | BL ← [501] |
408 | ADD AL, BL | AL ← AL+BL |
40A | DAA | DECIMAL ADJUST AL |
40B | MOV [600], AL | AL → [600] |
40F | MOV AL, 00 | AL ← 00 |
411 | ADC AL, AL | AL ← AL+AL+cy(prev) |
413 | MOV [601], AL | AL → [601] |
417 | HLT | END |
Explanation
- MOV AL, [500]: load data from offset 500 to register AL
- MOV BL, [501]: load data from offset 501 to register BL
- ADD AL, BL: ADD contents of registers AL AND BL
- DAA: decimal adjust AL
- MOV [600], AL: store data from register AL to offset 600
- MOV AL, 00: set value of register AL to 00
- ADC AL, AL: add contents of register AL to AL with carry
- MOV [601], AL: store data from register AL to offset 601
- HLT: stop