8085程式:相減陣列中兩個連續位元組


在這裡,我們將學習如何使用8085微處理器來減去陣列中兩個連續的元素。

問題陳述

編寫一個8085程式,該程式減去陣列中兩個連續的元素並將結果儲存在同一位置。結果將放置在與獲取它們相同的位置。數字從8001號位置開始儲存。陣列的大小儲存在8000號位置。

討論

我們將使用一個子程式來解決這個問題。該子程式將減去兩個連續的數字並將它們儲存到正確的位置。將多次呼叫該子程式以減去所有連續的數對。任務將執行元素數量的一半次。因此,我們獲取計數,然後將其右移以使其減半。我們透過進位位進行旋轉。如果進位位已為高電平,則可能會儲存不同的結果,因此我們使用STC和CMC指令清除進位位。

輸入

地址
資料


8000
0A
8001
E9
8002
D3
8003
AD
8004
61
8005
2A
8006
1F
8007
5D
8008
26
8009
A9
800A
35


 

流程圖

 

程式

地址
十六進位制程式碼
標號
助記符
註釋
F000
21, 00, 80
 
LXI H,8000
指向獲取陣列大小的位置
F003
7E
 
MOV A,M
將陣列大小載入到累加器A
F004
37
 
STC
設定進位標誌
F005
3F
 
CMC
反轉進位標誌
F006
0F
 
RRC
右移,帶進位
F007
47
 
MOV B,A
將A儲存到B
F008
23
LOOP:
INX H
指向下一個位置
F009
CD, 11, F0
 
CALL PADD
呼叫PADD子程式
F00C
05
 
DCR B
將B減1
F00D
C2, 08, F0
 
JNZ LOOP
跳轉到LOOP
F010
76
 
HLT
終止程式
F011
0E, 00
PADD:
MVI C,00H
清除C暫存器
F013
7E
 
MOV A,M
將第一個數字從記憶體載入到A
F014
23
 
INX H
指向下一個位置
F015
96
 
SUB M
A減去記憶體單元的值
F016
D2, 1A, F0
 
JNC STORE
如果進位標誌未設定,跳轉到STORE
F019
0C
 
INR C
否則,將C加1
F01A
71
STORE:
MOV M,C
將C儲存到記憶體
F01B
2B
 
DCX H
指向前一個位置
F01C
77
 
MOV M,A
將A儲存到記憶體
F01D
23
 
INX H
指向下一個位置
F01E
C9
 
RET
從子程式返回

 

輸出

地址
資料


8001
16
8002
00
8003
4C
8004
00
8005
0B
8006
00
8007
37
8008
00
8009
74
800A
00


更新於:2019年7月30日

215 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告