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
.
.
.
.
.
.

更新於: 2019年7月30日

4K+ 瀏覽量

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告