8085程式用於加兩個連續的陣列位元組
在這裡,我們將瞭解如何使用8085新增陣列中的兩個連續元素。
問題陳述
編寫8085程式,將陣列的兩個連續元素相加並將結果儲存在同一位置。進位將放在另一個位元組的底部。數字從8001位置開始儲存。陣列的大小儲存在8000位置。
討論
我們將使用一個子程式來解決此問題。該子程式將新增兩個連續的數字並將它們儲存到正確的位置。該子程式將被多次呼叫以新增所有連續的配對。該任務將遵循元素數量的一半。因此,我們獲取計數,然後將其向右旋轉以使其減半。我們透過進位進行旋轉。如果進位已經很高,它可能會儲存不同的結果,因此我們使用STC和CMC指令清除進位。
輸入
| 地址 | 資料 |
|---|---|
| … | … |
| 8000 | 0A |
| 8001 | E9 |
| 8002 | D3 |
| 8003 | 61 |
| 8004 | AD |
| 8005 | 2A |
| 8006 | 1F |
| 8007 | 5D |
| 8008 | A6 |
| 8009 | A9 |
| 800A | 35 |
| … | … |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | | LXI H,8000 | 指向獲取陣列大小 |
| F003 | 7E | | MOV A,M | 將陣列大小載入到記憶體中 |
| F004 | 37 | | STC | 設定進位標誌 |
| F005 | 3F | | CMC | 取反進位標誌 |
| F006 | 0F | | RRC | 透過進位右移 |
| F007 | 47 | | MOV B,A | 將A儲存到B中 |
| F008 | 23 | LOOP | INX H | 指向下一個位置 |
| F009 | CD, 11, F0 | | CALL PADD | 呼叫配對加法子程式 |
| F00C | 05 | | DCR B | 將B減1 |
| F00D | C2, 08, F0 | | JNZ LOOP | 跳轉到迴圈 |
| F010 | 76 | | HLT | 終止程式 |
| F011 | 0E, 00 | PADD | MVI C,00H | 清除C標誌 |
| F013 | 7E | | MOV A,M | 將第一個數字從記憶體載入到A |
| F014 | 23 | | INX H | 指向下一個位置 |
| F015 | 86 | | ADD M | 將A和記憶體元素相加 |
| F016 | D2, 1A, F0 | | JNC STORE | 如果進位未設定,則跳轉到STORE |
| F019 | 0C | | INR C | 否則將C加1 |
| F01A | 71 | STORE | MOV M,C | 將C儲存到記憶體中 |
| F01B | 2B | | DCX H | 指向前一個位置 |
| F01C | 77 | | MOV M,A | 將A儲存到記憶體中 |
| F01D | 23 | | INX H | 指向下一個位置 |
| F01E | C9 | | RET | 從子程式返回 |
輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 8001 | BC |
| 8002 | 01 |
| 8003 | 0E |
| 8004 | 01 |
| 8005 | 49 |
| 8006 | 00 |
| 8007 | 03 |
| 8008 | 01 |
| 8009 | DE |
| 800A | 00 |
| … | … |
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP