8085微處理器中兩個16位二進位制數相乘的程式


在這裡,我們將看到一個英特爾8085微處理器的程式。此程式將計算兩個16位數字的乘積。

問題陳述 -

編寫一個8085組合語言程式,將儲存在8000H - 8001H和8002H - 8003H中的兩個16位數字相乘。

討論 -

此程式從記憶體位置8000H – 8001H和8002H – 8003H獲取16位資料。32位結果儲存在位置8050H – 8053H。

這裡我們測試了兩個16位數字。結果如下。

1111H × 1111H = 01234321H

1C24H × 0752H = 00CDFF88H

輸入

第一個輸入

地址
資料


8000
11
8001
11
8002
11
8003
11


第二個輸入

地址
資料


8000
24
8001
1C
8002
52
8003
07



流程圖

程式

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


LXI SP,2000H
初始化堆疊指標
F003
2A, 00, 80


LHLD 8000H
從8000H - 8001H載入16位資料
F006
EB


XCHG
交換HL和DE中的資料
F007
2A, 02, 80


LHLD 8002H
載入第二個16位數字
F00A
E5


PUSH H
將HL對壓入堆疊
F00B
C1


POP B
從堆疊載入BC,使用HL對內容
F00C
21, 00, 00


LXI H,0000H
清空HL對
F00F
22, 52, 80


SHLD 8052H
將0000H儲存為結果的低2位元組
F012
19
LOOP
DAD D
將第一個數字新增到HL對
F013
D2, 1F, F0


JNC NINC
如果CY = 0,跳轉到NINC
F016
E5


PUSH H
將HL壓入堆疊
F017
2A, 52, 80


LHLD 8052
從結果的低2位元組載入HL對
F01A
23


INX H
增加HL對
F01B
22, 52, 80


SHLD 8052H
將HL對儲存為結果的低2位元組
F01E
E1


POP H
將堆疊內容彈出到HL對
F01F
0B
NINC
DCX B
減少BC暫存器對
F020
78


MOV A,B
將B載入到A
F021
B1


ORA C
將C與A進行或運算
F022
C2, 12, F0


JNZ LOOP
當Z = 0時,跳轉到LOOP
F025
22, 50, 80


SHLD 8050H
將HL對儲存到8050H
F028
76


HLT
終止程式

 

輸出

第一個輸出

地址
資料


8050
21
8051
43
8052
23
8053
01


第二個輸出

地址
資料


8050
88
8051
FF
8052
CD
8053
00


更新於: 2019年10月9日

808 次檢視

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告