8085程式:兩個多位元組數的減法


現在讓我們來看一個Intel 8085微處理器的程式。這個程式主要用於減去多位元組數。

問題陳述:

編寫8085組合語言程式,以新增兩個多位元組數。

討論:

我們使用3位元組數。這些數字儲存在記憶體位置8001H和8004H中。8000H位置儲存了另一個資訊。在這裡,我們儲存位元組計數。結果儲存在位置8050H中。

我們將第一個運算元塊地址放入DE暫存器對中,並將第二個運算元塊地址放入HL暫存器對中。BC暫存器對儲存結果的目標地址。首先,我們清除進位標誌。在8085中,沒有指令可以將CY標誌設定為0,因此我們需要兩個連續的指令。STC和CMC,第一個是將CY設定為1,然後對其取反使其為0。我們從記憶體中獲取數字,並執行帶借位的減法指令SBB以獲得結果。因此,生成整個結果。

輸入:

地址
資料
.
.
.
.
.
.
8000
03
8001
73
8002
21
8003
65
8004
88
8005
51
8006
27
.
.
.
.
.
.

流程圖:

程式:

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

LXI D,8001H
指向第一個運算元
F003
21, 04, 80

LXI H,8004H
指向第二個運算元
F006
01, 50, 80

LXI B,8050H
指向目標地址
F009
37

STC
設定進位
F00A
3F

CMC
取反進位
F00B
1A
LOOP
LDAX D
從DE指向的記憶體載入A
F00C
9E

SBB M
減去記憶體元素和借位
F00D
02

STAX B
將結果儲存到BC指向的記憶體中
F00E
23

INX H
增加HL暫存器對
F00F
13

INX D
增加DE暫存器對
F010
03

INX B
增加BC暫存器對
F011
3A, 00, 80

LDA 8000H
將大小載入到A中
F014
3D

DCR A
將A減1
F015
32, 00, 80

STA 8000H
將更新的大小儲存到記憶體中
F018
C2, 0B, F0

JNZ LOOP
如果Z=0,則跳轉到LOOP
F01B
76

HLT
終止程式

輸出:

地址
資料
.
.
.
.
.
.
8050
EB
8051
CF
8052
3D
.
.
.
.
.
.


更新於: 2019年7月30日

2K+瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告