8085微處理器中兩個兩位BCD數的乘法程式


在這裡,我們將看到一個8085微處理器程式,該程式將找到兩個BCD數的乘法結果。

問題陳述

編寫一個8085組合語言程式來查詢兩個BCD數的乘積。這些數字儲存在8000H和8001H位置。

討論

在這個程式中,資料從8000H和8001H獲取。結果儲存在8050H和8051H位置。

眾所周知,8085沒有乘法指令,因此我們必須使用重複加法的方法。在這個過程中,在每次加法之後,我們都會調整累加器的值以獲得十進位制等效值。當有進位時,我們就會增加MSB(最高有效位)的值。我們可以使用INR指令來遞增,但這裡使用ADI 01H。INR指令不會影響CY標誌,因此我們需要ADI指令。

輸入

第一個輸入

地址
資料


8000
12
8001
20


第二個輸入

地址
資料


8000
27
8001
03


 

流程圖

 

 

程式

地址
十六進位制程式碼
標籤
助記符
註釋
F000
21, 00, 80


LXI H,8000H
載入第一個運算元地址
F003
46


MOV B,M
將第一個運算元儲存到B暫存器
F004
23


INX H
增加HL暫存器對
F005
4E


MOV C,M
將第二個運算元儲存到C暫存器
F006
1E, 00


MVI E, 00H
清除E暫存器
F008
63


MOV H,E
清除H暫存器
F009
7B


MOV A,E
清除A暫存器
F00A
B9


CMP C
比較C和A
F00B
CA, 23, F0


JZ DONE
當Z=0時,跳轉到DONE
F00E
80
LOOP:
ADD B
將B加到A
F00F
27


DAA
十進位制調整
F010
57


MOV D,A
將A儲存到D
F011
D2, 19, F0


JNC NINC
跳轉到NINC
F014
7C


MOV A,H
將H儲存到A
F015
C6, 01


ADI 01H
將A增加1
F017
27


DAA
十進位制調整
F018
67


MOV H,A
將A恢復到H
F019
7B
NINC:
MOV A,E
將E載入到A
F01A
C6, 01


ADI 01H
將A增加1
F01C
27


DAA
十進位制調整
F01D
5F


MOV E,A
將A恢復到E
F01E
B9


CMP C
比較C和A
F01F
7A


MOV A,D
將D載入到A
F020
C2, 0E, F0


JNZ LOOP
跳轉到LOOP
F023
6F
DONE:
MOV L,A
將A載入到L
F024
22, 50, 80


SHLD 8050H
將HL暫存器對儲存到8050H和8051H位置
F027
76


HLT
終止程式


輸出

第一個輸出

地址
資料


8050
40
8051
02


第二個輸出

地址
資料


8050
81
8051
00


更新於:2019年10月9日

瀏覽量:506

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告