基於選擇的8085程式實現氣泡排序


現在讓我們來看一個Intel 8085微處理器的程式。在這個程式中,我們將看到如何基於選擇執行氣泡排序。

問題陳述:

編寫8085組合語言程式,對一組資料執行氣泡排序操作,並根據選擇將其排列成升序或降序。

討論:

在這個程式中,我們根據某種選擇將一些數字排列成升序或降序。我們將選擇儲存在A000H位置。如果選擇值為00H,則資料將按升序排序,否則將按降序排序。8000H儲存塊大小,8001H及其之後儲存資料。

輸入:

第一個輸入

地址
資料
.
.
.
.
.
.
8000
06
8001
22
8002
55
8003
33
8004
66
8005
44
8006
11
.
.
.
.
.
.
A000
00
.
.
.
.
.
.

第二個輸入

地址
資料
.
.
.
.
.
.
8000
06
8001
22
8002
55
8003
33
8004
66
8005
44
8006
11
.
.
.
.
.
.
A000
45
.
.
.
.
.
.

流程圖:

程式:

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

LXI SP,9000H
初始化堆疊
F003
21, 00, 80

LXI H,8000H
指向獲取塊大小
F006
4E

MOV C,M
獲取計數
F007
0D

DCR C
將C減1
F008
1E, 01
L1
MVI E,01H
E將儲存一輪交換次數加一
F00A
41

MOV B,C
儲存比較次數
F00B
23

INX H
指向下一個位置
F00C
7E
L2
MOV A,M
將記憶體載入到A
F00D
23

INX H
指向下一個位置
F00E
BE

CMP M
將記憶體元素與A比較
F00F
F5

PUSH PSW
將AF儲存到堆疊中
F010
3A, 00, A0

LDA A000
獲取選擇
F013
FE, 00

CPI 00H
將選擇與00H比較
F015
CA, 1F, F0

JZ ASC
如果Z = 1,則按升序排序
F018
F1

POP PSW
從堆疊中彈出AF
F019
D2, 29, F0

JNC SKIP
如果CY = 0,則跳轉到SKIP
F01C
C3, 23, F0

JMP EXG
否則跳轉到交換
F01F
F1
ASC
POP PSW
從堆疊中彈出AF
F020
DA, 29, F0

JC SKIP
如果CY = 1,則轉到skip
F023
56
EXG
MOV D,M
將記憶體載入到D
F024
77

MOV M,A
將A載入到記憶體
F025
2B

DCX H
指向先前位置
F026
72

MOV M,D
將D載入到記憶體
F027
23

INX H
指向下一個位置
F028
1C

INR E
增加交換次數
F029
05
SKIP
DCR B
將B減1
F02A
C2, 0C, F0

JNZ L2
如果Z = 0,則轉到L2迴圈
F02D
1D

DCR E
將E暫存器減1
F02E
CA, 38, F0

JZ DONE
如果Z = 1,則終止程式
F031
21, 00, 80

LXI H,8000H
指向塊的初始地址
F034
0D

DCR C
減少計數
F035
C2, 08, F0

JNZ L1
如果Z = 0,則轉到L1
F038
76
DONE
HLT
終止程式

輸出:

第一個輸出

地址
資料
.
.
.
.
.
.
8000
06
8001
11
8002
22
8003
33
8004
44
8005
55
8006
66
.
.
.
.
.
.

第二個輸出

地址
資料
.
.
.
.
.
.
8000
06
8001
66
8002
55
8003
44
8004
33
8005
22
8006
11
.
.
.
.
.
.



更新於:2019年7月30日

瀏覽量:558

開啟你的職業生涯

完成課程獲得認證

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