8085程式實現以下函式:(a*b) + (c*d)
在這裡,我們將瞭解如何使用8085實現數學函式。
問題陳述
編寫一個程式來實現以下函式 (a*b) + (c*d),並將結果儲存在記憶體位置8204和8205中。使用子程式執行乘法運算。這裡a、b、c和d數字分別儲存在記憶體位置8200H、8201H、8202H和8203H中。
討論
8085中沒有乘法指令。因此,我們必須使用子程式來執行乘法。在這個子程式中,它從HL對指向的記憶體中獲取數字,並將結果返回到DE暫存器對。在將兩個部分相乘後,儲存中間結果,然後將它們相加以獲得最終結果。
輸入
| 地址 | 資料 |
|---|---|
| … | … |
| 8200 | 02 |
| 8201 | 03 |
| 8202 | 04 |
| 8203 | 05 |
| … | … |
| 地址 | 資料 |
|---|---|
| … | … |
| 8200 | CA |
| 8201 | C6 |
| 8202 | C8 |
| 8203 | 64 |
| … | … |
流程圖

程式
| 地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 |
|---|---|---|---|---|
| 8000 | 31, 00, 83 | START | LXI SP, 8300 H | 初始化堆疊指標SP = 8300 H |
| 8003 | 21, 00, 82 | | LXI H, 8200 H | 初始化記憶體指標HL = 8200 H,它是起始資料塊地址 |
| 8006 | CD, 19, 80 | | CALL MULTI | 呼叫子程式Multi..它將HL作為源資料塊指標,並將結果返回到DE暫存器對 |
| 8009 | D5 | | PUSH D | 儲存結果1,即a * b |
| 800A | 23 | | INX H | 指向下一對資料 |
| 800B | CD, 19, 80 | | CALL MULTI | 呼叫子程式Multi..它將HL作為源資料塊指標,並將結果返回到DE暫存器對 |
| 800E | C1 | | POP B | 獲取位於頂部的BC中的結果1 |
| 800F | E5 | | PUSH H | 儲存指標 |
| 8010 | EB | | XCHG | 獲取HL中的結果2,即c * d |
| 8011 | 9 | | DAD B | HL= HL+BC(結果1+結果2:乘積之和)。因此HL = a * b + c * d |
| 8012 | EB | | XCHG | 將結果儲存在DE中,HL將是目標指標 |
| 8013 | E1 | | POP H | 恢復記憶體指標 |
| 8014 | 23 | | INX H | 指向目標地址 |
| 8015 | 73 | | MOV M, E | 儲存在HL中,結果的LSB(HL)= E |
| 8016 | 23 | | INX H | 指向下一個位置 |
| 8017 | 72 | | MOV M, D | 儲存在HL中,結果的MSB(HL)=D |
| 8018 | 76 | | HLT | 停止 |
| 8019 | 4E | MULTI | MOV C, M | C = no1 |
| 801A | 23 | | INX H | HL= HL+1;指向下一個數字 |
| 801B | 46 | | MOV B, M | B = no2 |
| 801C | E5 | | PUSH H | 儲存HL暫存器對 |
| 801D | 26, 00 | | MVI H, 00 H | H = 00;跟蹤進位(進位暫存器:將包含結果的MSB) |
| 801F | 3E, 00 | | MVI A, 00 H | A = 00(和暫存器) |
| 8021 | 80 | UP | ADD B | A = A + B |
| 8022 | D2, 26, 80 | | JNC LOOP | 進位= 1?如果不是,則轉到迴圈 |
| 8025 | 24 | | INR H | H = H + 1 |
| 8026 | 0D | LOOP | DCR C | C = C – 1 |
| 8027 | C2, 21, 80 | | JNZ UP | Z = 0?如果不是,則轉到up |
| 802A | 6F | | MOV L, A | 從A獲取L中的和(結果的LSB) |
| 802B | EB | | XCHG | 從HL獲取DE中的結果 |
| 802C | E1 | | POP H | 恢復HL暫存器對 |
| 802D | C9 | | RET | 返回主程式 |
輸出
| 地址 | 資料 |
|---|---|
| … | … |
| 8204 | 1A |
| 8205 | 00 |
| … | … |
| 地址 | 資料 |
|---|---|
| … | … |
| 8204 | 5C |
| 8205 | EA |
| … | … |
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP