8085程式用於乘以兩個8位數
在本程式中,我們將瞭解如何使用 8085 微處理器乘以兩個 8 位數。
問題陳述
編寫 8085 組合語言程式,將儲存在記憶體位置的兩個 8 位數相乘,並將 16 位結果儲存到記憶體中。
討論
8085 沒有乘法運算。要獲得乘法的結果,我們應該使用重複加法的方法。
兩個 8 位數相乘後,可能會生成 1 位元組或 2 位元組的數字,因此我們使用兩個暫存器來儲存結果。
我們將資料儲存在 8000H 和 8001H 位置。結果儲存在 8050H 和 8051H 位置。
輸入
地址 | 資料 |
---|---|
. . . | . . . |
8000 | DC |
8001 | AC |
. . . | . . . |
流程圖
程式
地址 | 十六進位制程式碼 | 標籤 | 助記符 | 註釋 | |
---|---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 載入第一個運算元地址 | ||
F003 | 46 | MOV B, M | 將第一個運算元儲存到 B | ||
F004 | 23 | INX H | 增加 HL 對 | ||
F005 | AF | XRA A | 清除累加器 | ||
F006 | 4F | MOV C, A | 將 00H 儲存在暫存器 C 中 | ||
F007 | 86 | LOOP | ADD M | 將記憶體元素與累加器相加 | |
F008 | D2, 0C, F0 | JNC SKIP | 當進位標誌為 0 時,跳過下一個任務 | ||
F00B | 0C | INR C | 增加 C,當進位為 1 時 | ||
F00C | 05 | SKIP | DCR B | 減少 B 暫存器 | |
F00D | C2,07, F0 | JNZ LOOP | 當 Z 標誌不為 1 時跳轉到迴圈 | ||
F010 | 21,50, 80 | LXI H,8050H | 載入目標地址 | ||
F013 | 71 | MOV M, C | 將 C 暫存器內容儲存到記憶體中 | ||
F014 | 23 | INX H | 增加 HL 對 | ||
F015 | 77 | MOV M, A | 將累加器內容儲存到記憶體中 | ||
F016 | 76 | HLT | 終止程式 |
輸出
地址 | 資料 |
---|---|
. . . | . . . |
8050 | 93 |
8051 | D0 |
. . . | . . . |
廣告