基於X內容對兩個數字進行運算的8085程式


現在讓我們來看一個Intel 8085微處理器的程式。在這個程式中,我們將看到如何根據選擇執行不同的操作。

問題陳述:

編寫8085組合語言程式,根據選擇對兩個8位二進位制數執行一些運算。

討論:

在這個程式中,我們進行選擇。選擇值儲存在記憶體位置8000H(命名為X)。數字儲存在位置8001H和8002H。我們將結果儲存在位置8050H和8051H。

如果選擇是00H,則執行加法;如果是01H,則執行減法;如果是02H,則執行乘法運算。

輸入:

第一個輸入

地址
資料
.
.
.
.
.
.
8000
00
8001
97
8002
88
.
.
.
.
.
.

第二個輸入

地址
資料
.
.
.
.
.
.
8000
01
8001
97
8002
88
.
.
.
.
.
.

第三個輸入

地址
資料
.
.
.
.
.
.
8000
02
8001
05
8002
04
.
.
.
.
.
.

流程圖:

程式:

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

LXI H,8000H
指向獲取選擇
F003
7E

MOV A,M
將選擇載入到A
F004
FE, 00

CPI 00H
比較加法
F006
CA,14, F0

JZ ADD
跳轉到加法
F009
FE, 01

CPI 01H
比較減法
F00B
CA,26, F0

JZ SUB
跳轉到減法
F00E
FE, 02

CPI 02H
比較乘法
F010
CA, 38, F0

JZ MUL
跳轉到乘法
F013
76

HLT
終止程式
F014
23
ADD
INX H
指向第一個運算元
F015
7E

MOV A,M
將運算元載入到A
F016
23

INX H
指向下一個運算元
F017
86

ADD M
將M與A相加
F018
6F

MOV L,A
將A儲存到L
F019
D2, 21, F0

JNC SKP1
如果CY = 0,則跳轉到SKP1
F01C
26, 01

MVI H,01H
將H載入為01H
F01E
C3, 49, F0

JMP STORE
儲存結果
F021
26, 00
SKP1
MVI H,00H
清除HL
F023
C3, 49, F0

JMP STORE
將HL儲存為結果
F026
23
SUB
INX H
指向第一個運算元
F027
7E

MOV A,M
將運算元載入到A
F028
23

INX H
指向下一個運算元
F029
96

SUB M
從A中減去第二個運算元
F02A
6F

MOV L,A
將A儲存到L
F02B
D2, 33, F0

JNC SKP2
如果CY = 0,則跳轉到SKP2
F02E
26, FF

MVI H,FFH
將H載入為FFH
F030
C3, 49, F0

JMP STORE
儲存結果
F033
26, 00
SKP2
MVI H,00H
清除HL
F035
C3, 49, F0

JMP STORE
將HL儲存為結果
F038
23
MUL
INX H
指向第一個運算元
F039
5E

MOV E,M
將運算元載入到E
F03A
16, 00

MVI D,00H
清除D暫存器
F03C
23

INX H
指向下一個運算元
F03D
4E

MOV C,M
載入第二個運算元
F03E
21, 00, 00

LXI H,0000H
清除HL對
F041
19
LOOP
DAD D
將第一個運算元新增到HL
F042
0D

DCR C
遞減C
F043
C2, 41, F0

JNZ LOOP
如果Z = 0,則跳轉到LOOP
F046
C3, 49, F0

JMP STORE
儲存結果
F049
22, 50, 80
STORE
SHLD 8050H
從HL儲存結果
F04C
76

HLT
終止程式

輸出:

第一個輸出

地址
資料
.
.
.
.
.
.
8050
1F
8051
01
.
.
.
.
.
.

第二個輸出

地址
資料
.
.
.
.
.
.
8050
0F
8051
00
.
.
.
.
.
.

第三個輸出

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



更新於:2019年7月30日

241 次檢視

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.