8085微處理器中兩個8位數的乘法程式(移位加法法)
讓我們來看一個8085微處理器的問題。在這個問題中,我們將看到如何使用移位加法法(而不是加法法)來乘以兩個數字。
問題陳述 −
編寫一個8085組合語言程式,使用移位加法法來乘以兩個8位數。
討論 −
移位加法法是一種高效的流程。在這個程式中,我們從記憶體位置8000H和8001H獲取數字。16位結果儲存在8050H及其後的位置。
在這個方法中,我們將第一個數字放入DE暫存器對中。實際數字放在E暫存器中,D暫存器保持00H。第二個數字被放入A暫存器中。由於數字是8位數,因此我們將累加器內容移位八次。當旋轉時進位標誌被設定時,DE的內容將與HL相加。最初HL對將保持0000H。然後HL也與其自身相加。這樣就生成了結果。
輸入
地址 | 資料 |
---|---|
… | … |
8000 | 25 |
8001 | 2A |
… | … |
流程圖
程式
地址 | 十六進位制程式碼 | 標號 | 助記符 | 註釋 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向第一個運算元 | |
F003 | 5E | MOV E,M | 將第一個運算元載入到E | |
F004 | 16, 00 | MVI D,00H | 清零D暫存器 | |
F006 | 23 | INX H | 指向下一個位置 | |
F007 | 7E | MOV A,M | 獲取下一個運算元 | |
F008 | 0E, 08 | MVI C,08H | 用08H初始化計數器 | |
F00A | 21, 00, 00 | LXI H, 0000H | 清零HL對 | |
F00D | 0F | LOOP | RRC | 將累加器內容右移 |
F00E | D2, 12, F0 | JNC SKIP | 如果進位標誌為0,則跳轉到SKIP | |
F011 | 19 | DAD D | 將DE與HL相加 | |
F012 | EB | SKIP | XCHG | 交換DE和HL |
F013 | 29 | DAD H | 將HL與自身相加 | |
F014 | EB | XCHG | 再次交換DE和HL的內容 | |
F015 | 0D | DCR C | 遞減C暫存器 | |
F016 | C2, 0D, F0 | JNZ LOOP | 如果Z=0,則跳轉到LOOP | |
F019 | 22, 50, 80 | SHLD 8050H | 儲存結果 | |
F01C | 76 | HLT | 結束程式 |
輸出
地址 | 資料 |
---|---|
… | … |
8050 | 12 |
8051 | 06 |
… | … |
廣告