8085程式用於加兩個連續的陣列位元組


在這裡,我們將瞭解如何使用8085新增陣列中的兩個連續元素。

問題陳述

編寫8085程式,將陣列的兩個連續元素相加並將結果儲存在同一位置。進位將放在另一個位元組的底部。數字從8001位置開始儲存。陣列的大小儲存在8000位置。

討論

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

輸入

地址
資料


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


 

流程圖

 

程式

地址
十六進位制程式碼
標籤
助記符
註釋
F000
21, 00, 80
 
LXI H,8000
指向獲取陣列大小
F003
7E
 
MOV A,M
將陣列大小載入到記憶體中
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
呼叫配對加法子程式
F00C
05
 
DCR B
將B減1
F00D
C2, 08, F0
 
JNZ LOOP
跳轉到迴圈
F010
76
 
HLT
終止程式
F011
0E, 00
PADD
MVI C,00H
清除C標誌
F013
7E
 
MOV A,M
將第一個數字從記憶體載入到A
F014
23
 
INX H
指向下一個位置
F015
86
 
ADD 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
BC
8002
01
8003
0E
8004
01
8005
49
8006
00
8007
03
8008
01
8009
DE
800A
00


 

更新於: 2019年7月30日

691 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.