8085微處理器中實現降序選擇排序的程式


在這裡,我們將看到一個8085微處理器程式。該程式將使用選擇排序技術對數字序列進行逆序排序。

問題陳述

編寫一個8085組合語言程式,使用選擇排序法對給定的序列進行降序排序。數字儲存在8001H及以後的地址中。8000H儲存塊大小。

討論

在選擇排序技術中,我們將從一組數字中選擇最小或最大項。在本例中,我們考慮降序排序,因此我們選擇最大數。透過取最大數,我們將其與當前指向位置的元素交換。在每次傳遞中,子塊的最大數都放置在正確的位置。

此程式有兩個子程式。第一個子程式將檢查一組數字中的最大數,第二個子程式將用於交換數字。

輸入

地址
資料


8000
06
8001
22
8002
55
8003
33
8004
66
8005
44
8006
11



流程圖

 

 

 

程式

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


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


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


MOV C,M
獲取計數
F007
23
DO
INX H
指向下一個位置以獲取塊
F008
7E


MOV A,M
將元素載入到A
F009
CD, 18, F0


CALL MAX
查詢最大值
F00C
BE


CMP M
比較M和A
F00D
CA, 13, F0


JZ GO
如果Z=1,它們相同,跳過交換
F010
CD, 2A, F0


CALL SWAP
交換最小值和當前內容
F013
0D
GO
DCR C
C減1
F014
C2, 07, F0


JNZ DO
如果Z=0,跳轉到DO
F017
76


HLT
終止程式
F018
E5
MAX
PUSH H
將HL壓入堆疊
F019
C5


PUSH B
將BC壓入堆疊
F01A
0D


DCR C
C減1
F01B
23
LOOP
INX H
指向下一個位置
F01C
BE


CMP M
將記憶體資料與A比較
F01D
D2, 23, F0


JNC SKIP
如果CY=0,跳轉到SKIP
F020
7E


MOV A,M
更新A的值
F021
54


MOV D,H
將H複製到D
F022
5D


MOV E,L
將L複製到E
F023
0D
SKIP
DCR C
C減1
F024
C2, 1B, F0


JNZ LOOP
如果Z=0,跳轉到LOOP
F027
C1


POP B
從堆疊中彈出BC
F028
E1


POP H
從堆疊中彈出HL
F029
C9


RET
從子程式返回
F02A
F5
SWAP
PUSH PSW
將AF儲存到堆疊中
F02B
C5


PUSH B
將BC壓入堆疊
F02C
1A


LDAX D
A = 獲取DE指向的地址處的資料
F02D
47


MOV B,A
將A複製到B
F02E
7E


MOV A,M
獲取HL指向的地址處的資料
F02F
12


STAX D
將A的內容儲存到DE指向的記憶體中
F030
70


MOV M,B
將B的內容儲存到HL指向的記憶體中
F031
C1


POP B
從堆疊中彈出BC
F032
F1


POP PSW
從堆疊中彈出AF
F033
C9


RET
從交換返回


輸出

地址
資料


8001
66
8002
55
8003
44
8004
33
8005
22
8006
11




地址
資料


8001
11
8002
22
8003
33
8004
44
8005
55
8006
66


更新於:2019年10月9日

瀏覽量:273

開啟你的職業生涯

完成課程獲得認證

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