基於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 |
… | … |
廣告