Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
8086 program to determine subtraction of corresponding elements of two arrays
In this program we will see how to subtract the contents of two different arrays.
Problem Statement
Write 8086 Assembly language program to subtract the contents to corresponding elements which are stored in two different arrays
Discussion
In this example there are two different arrays. The arrays are stored at location 501 onwards and 601 onwards. The size of these two arrays are stored at offset location 500. We are taking the array size to initialize the counter, then by using loops we are subtracting the elements one by one
Input
| Address | Data |
|---|---|
| … | … |
| 500 | 04 |
| 501 | 09 |
| 502 | 03 |
| 503 | 08 |
| 504 | 06 |
| … | … |
| 601 | 04 |
| 602 | 01 |
| 603 | 02 |
| 604 | 03 |
| … | … |
Flow Diagram

Program
<span class="pln"> MOV SI</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500</span><span class="pln"> </span><span class="pun">;</span><span class="typ">Point</span><span class="pln"> </span><span class="typ">Source</span><span class="pln"> index to </span><span class="lit">500</span> <span class="pln"> MOV CL</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="pln">SI</span><span class="pun">]</span><span class="pln"> </span><span class="pun">;</span><span class="typ">Load</span><span class="pln"> the array size </span><span class="kwd">into</span><span class="pln"> CL</span> <span class="pln"> MOV CH</span><span class="pun">,</span><span class="pln"> </span><span class="lit">00</span><span class="pln"> </span><span class="pun">;</span><span class="typ">Clear</span><span class="pln"> </span><span class="typ">Upper</span><span class="pln"> half of CX</span> <span class="pln"> INC SI </span><span class="pun">;</span><span class="typ">Increase</span><span class="pln"> SI </span><span class="kwd">register</span><span class="pln"> to point </span><span class="kwd">next</span><span class="pln"> location</span> <span class="pln"> MOV DI</span><span class="pun">,</span><span class="pln"> </span><span class="lit">601</span><span class="pln"> </span><span class="pun">;</span><span class="typ">Destination</span><span class="pln"> </span><span class="kwd">register</span><span class="pln"> points to </span><span class="lit">601</span> <span class="pln">L1</span><span class="pun">:</span><span class="pln"> MOV AL</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="pln">SI</span><span class="pun">]</span><span class="pln"> </span><span class="pun">;</span><span class="typ">Load</span><span class="pln"> A </span><span class="kwd">with</span><span class="pln"> the data stored at SI</span> <span class="pln"> SUB AL</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="pln">DI</span><span class="pun">]</span><span class="pln"> </span><span class="pun">;</span><span class="typ">Subtract</span><span class="pln"> DI element </span><span class="kwd">from</span><span class="pln"> AL</span> <span class="pln"> MOV </span><span class="pun">[</span><span class="pln">SI</span><span class="pun">],</span><span class="pln"> AL </span><span class="pun">;</span><span class="typ">Store</span><span class="pln"> AL to SI address</span> <span class="pln"> INC SI </span><span class="pun">;</span><span class="pln">SI </span><span class="typ">Point</span><span class="pln"> to </span><span class="kwd">next</span><span class="pln"> location</span> <span class="pln"> INC DI </span><span class="pun">;</span><span class="pln">DI </span><span class="typ">Point</span><span class="pln"> to </span><span class="kwd">next</span><span class="pln"> location</span> <span class="pln"> LOOP L1 </span><span class="pun">;</span><span class="typ">Jump</span><span class="pln"> to L1 </span><span class="kwd">until</span><span class="pln"> the counter becomes </span><span class="lit">0</span> <span class="pln"> HLT </span><span class="pun">;</span><span class="typ">Terminate</span><span class="pln"> the program</span>
Output
| Address | Data |
|---|---|
| … | … |
| 500 | 04 |
| 501 | 05 |
| 502 | 02 |
| 503 | 06 |
| 504 | 03 |
| … | … |
Advertisements
