8085程式用於乘以兩個兩位BCD數


現在讓我們來看一個Intel 8085微處理器的程式。這個程式將找到兩個BCD數的乘積結果。

問題陳述

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

討論

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

眾所周知,8085沒有乘法指令,因此我們必須使用重複加法方法。在這個過程中,在每次加法之後,我們都會調整累加器值以獲得十進位制等價物。當存在進位時,我們會增加MS-Byte的值。 我們可以使用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對儲存在8050和8051位置
F027
76

HLT
終止程式


輸出

第一個輸出

地址
資料
.
.
.
.
.
.
8050
40
8051
02
.
.
.
.
.
.

第二個輸出

地址
資料
.
.
.
.
.
.
8050
81
8051
00
.
.
.
.
.
.

更新於: 2019年7月30日

3K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告