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 MIN
查詢最小值
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
MIN
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
DA, 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
11
8002
22
8003
33
8004
44
8005
55
8006
66


更新於: 2019-10-09

319 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告