使用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 |
| … | … |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP