Home »
Embedded Systems
Find Sum of Two Arrays of 8-bit N Numbers | 8086
In this tutorial, we will learn how to find the sum of two arrays of 8-bit N numbers using 8086 Microprocessor?
By Ayush Sharma Last updated : May 22, 2023
Problem Statement
Write a program in 8086 microprocessor to find out the sum of two arrays of 8-bit n numbers, where size “n” is stored at offset 500 and the numbers of first array are stored from offset 501 and the numbers of second array are stored from offset 601 and store the result numbers into first array i.e offset 501.
Algorithm
- Store 500 to SI and 601 to DI and Load data from offset 500 to register CL and set register CH to 00 (for count).
- Increase the value of SI by 1.
- Load first number (value) from next offset (i.e 501) to register AL.
- Add the value in register AL by value at offset DI.
- Store the result (value of register AL ) to memory offset SI.
- Increase the value of SI by 1.
- Increase the value of DI by 1.
- Loop above 5 till register CX gets 0.
Program
MEMORY ADDRESS |
MNEMONICS |
COMMENT |
400 | MOV SI, 500 | SI←500 |
403 | MOV CL, [SI] | CL←[SI] |
405 | MOV CH, 00 | CH←00 |
407 | INC SI | SI←SI+1 |
408 | MOV DI, 601 | DI←601 |
40B | MOV AL, [SI] | AL←[SI] |
40D | ADD AL, [DI] | AL=AL+[DI] |
40F | MOV [SI], AL | AL->[SI] |
411 | INC SI | SI←SI+1 |
412 | INC DI | DI←DI+1 |
413 | LOOP 40B | JUMP TO 40B IF CX!=0 and CX=CX-1 |
415 | HLT | end |
Explanation
- MOV SI, 500: set the value of SI to 500
- MOV CL, [SI]: load data from offset SI to register CL
- MOV CH, 00: set value of register CH to 00
- INC SI: increase value of SI by 1.
- MOV DI, 600: set the value of DI to 600.
- MOV AL, [SI]: load value from offset SI to register AL
- ADD AL, [DI]: Add value of register AL by content at offset DI.
- MOV [SI], AL: store value of register AL at offset SI.
- INC SI: increase value of SI by 1.
- INC DI: increase value of DI by 1.
- LOOP 408: jump to address 408 if CX not 0 and CX=CX-1.
- HLT: stop