基於8085微處理器選擇進行氣泡排序的程式
在這裡,我們將看到一個 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 將儲存一次遍歷中交換次數加 1 |
| 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,則轉到跳過 | |
| 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