8085程式用於乘以兩個8位數(移位加法方法)
現在讓我們來看一個英特爾8085微處理器的程式。在這個程式中,我們將看到如何使用移位加法方法來乘以兩個數字。
問題陳述:
編寫8085組合語言程式,使用移位加法方法乘以兩個8位數。
討論:
移位加法方法是一種高效的過程。在這個程式中,我們從記憶體位置8000H和8001H獲取數字。16位結果儲存在8050H開始的位置。
在這種方法中,我們將第一個數字放入DE暫存器對中。實際數字放在E暫存器中,D暫存器儲存00H。第二個數字被取入A暫存器。由於數字是8位數,因此我們將累加器的內容移位8次。當旋轉時進位標誌被設定時,DE的內容將與HL相加。最初HL暫存器對將儲存0000H。然後HL本身也與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與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 |
. . . | . . . |
廣告