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