8085 帶重疊的塊移動


在這個程式中,我們將學習如何將資料塊從一個位置移動到另一個位置。

問題陳述

編寫 8085 組合語言程式來移動資料塊。假設這些塊是重疊的。塊大小已給出,塊從 X 開始,我們必須將其移動到 Y 位置。

討論

重疊塊的移動比較棘手;我們需要使用一些特殊的技巧來移動重疊地址位置中的塊。這裡塊從 X 位置開始,我們必須將其移動到 Y 位置。Y 位置在塊內。因此 Y < X + 塊大小。

在這個程式中,資料儲存在 8010H 位置,我們將將其放置在 8014H。塊大小儲存在 8000H 位置。

為了將塊移動到一些重疊的位置,我們將從塊的末尾元素開始。所以首先移動塊的最後一個元素,然後移動前面的位元組。

輸入

地址
資料
.
.
.
.
.
.
8000
07
.
.
.
.
.
.
8010
11
8011
22
8012
33
8013
44
8014
55
8015
66
8016
77
.
.
.
.
.
.

流程圖

程式

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


LXI H, 8000H
載入查詢塊大小的位置
F003
4E


MOV C, M
將塊大小儲存到 C 暫存器
F004
06, 00


MVI B,00H
清除 B 暫存器
F006
21,10, 80


LXI H,8010H
將源地址載入到 HL 對
F009
11, 14, 80


LXI D, 8014H
將目標地址載入到 DE 對
F00C
09


DAD B
將 BC 與 HL 相加,指向源塊末尾的下一個位置
F00D
2B


DCX H
指向最後一個元素
F00E
EB


XCHG
交換 DE 和 HL 對的內容
F00F
09


DAD B
將 BC 與 HL 相加,指向目標塊末尾的下一個位置
F010
2B


DCX H
指向最後一個元素
F011
EB


XCHG
交換 DE 和 HL 對的內容
F012
7E
LOOP
MOV A, M
將記憶體元素載入到累加器
F013
12


STAX D
將累加器內容儲存到 D 指向的記憶體中
F014
1B


DCX D
減小 DE 暫存器對
F015
2B


DCX H
減小 HL 暫存器對
F016
0D


DCR C
減小 C 暫存器
F017
C2, 12, F0


JNZ LOOP
跳轉到迴圈
F01A
76


HLT
終止程式


輸出

地址
資料
.
.
.
.
.
.
8000
07
.
.
.
.
.
.
8010
11
8011
22
8012
33
8013
44
8014
11
8015
22
8016
33
8017
44
8018
55
8019
66
801A
77

更新於:2020年6月27日

2K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.