使用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月5日

281次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告