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


更新於:2019年10月9日

739 次檢視

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告