8085程式實現降序氣泡排序


在本程式中,我們將瞭解如何使用氣泡排序技術對位元組塊進行降序排序。

問題陳述

編寫8085組合語言程式,對數字進行降序排序,其中n個數字儲存在從8041H開始的連續記憶體位置,n的值儲存在記憶體位置8040H(使用氣泡排序)。

討論

在本程式中,我們將使用氣泡排序技術對數字進行排序。這種排序技術將透過不同的趟進行執行。在每一趟中,最小的數字都儲存在列表的末尾。這裡我們從8041H到8046H獲取數字。陣列大小儲存在8040H。

輸入

地址資料
......
804006
804106
804205
804304
804401
804502
804603
......


流程圖

程式

地址十六進位制程式碼標籤助記符註釋
800021, 40, 80STARTLXI H, 8040H 指向輸入緩衝區的指標
800316, 00
MVI D, 00H D暫存器用作標誌暫存器
80054E 
MOV C, M 用資料計數初始化C暫存器
80060D 
DCR C 設定C暫存器用於比較計數
800723
INX H 指向下一個位置
80087E CHECKMOV A, M 獲取數字
800923
INX H 轉到下一個位置
800A BE 
CMP M 將當前記憶體位置的內容與累加器的內容進行比較
800B D2, 14, 80
JNC NEXTBYT 如果(A) >= 第二個位元組,則不交換
800E 46
MOV B, M 獲取第二個位元組以進行交換
800F 77
MOV M, A 將第一個位元組儲存在第二個位置
80102B 
DCX H 指向第一個位置
801170
MOV M, B 將第二個位元組儲存在第一個位置
801223
INX H 準備進行下一個比較
801316, 01
MVI D, 01H 將1載入到D中作為交換的餘數
80150D NEXTBYTDCR C 遞減比較計數
8016C2, 08, 80
JNZ CHECK 如果比較計數不為0,則返回
80197A 
MOV A, D 獲取A中的標誌位
801A 0F 
RRC 將標誌位D0放入進位
801B DA, 00, 80
JC START 如果標誌為1,則發生了交換
801E 76
HLT 終止程式


輸出

地址資料
......
804106
804205
804304
804403
804502
804601
......

更新於: 2019年7月30日

6K+ 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告