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 | 當進位為1時,增加C暫存器 | |
F00C | 05 | SKIP: | DCR B | 減小B暫存器 |
F00D | C2, 07, F0 | JNZ LOOP | 當零標誌不為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 |
. . . | . . . |
廣告