8085微處理器上實現升序氣泡排序的程式


在這裡,我們將看到一個8085程式,用於將一組數字按升序排列。

問題陳述

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

討論

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

輸入

地址
資料


8040
06
8041
06
8042
05
8043
04
8044
01
8045
02
8046
03


 

流程圖

程式

地址
十六進位制程式碼
標籤
助記符
註釋
8000
21, 40, 80
START
LXI H, 8040H
指向輸入緩衝區的指標
8003
16, 00


MVI D, 00H
D暫存器用作標誌暫存器
8005
4E


MOV C, M
用資料計數初始化C暫存器
8006
0D


DCR C
設定C暫存器用於比較計數
8007
23


INX H
指向下一個位置
8008
7E
CHECK
MOV A, M
獲取數字
8009
23


INX H
轉到下一個位置
800A 
BE


CMP M
將當前記憶體位置的內容與累加器的內容進行比較
800B 
DA, 14, 80


JC NEXTBYT
如果(A) < 第二個位元組,則不交換
800E 
46


MOV B, M
獲取第二個位元組進行交換
800F 
77


MOV M, A
將第一個位元組儲存在第二個位置
8010
2B


DCX H
指向第一個位置
8011
70


MOV M, B
將第二個位元組儲存在第一個位置
8012
23


INX H
準備好進行下一次比較
8013
16, 01


MVI D, 01H
將1載入到D中作為交換的餘數
8015
0D
NEXTBYT
DCR C
遞減比較計數
8016
C2, 08, 80


JNZ CHECK
如果比較計數不為0,則返回
8019
7A


MOV A, D
將標誌位放入A
801A 
0F


RRC
將標誌位D0放入進位
801B 
DA, 00, 80


JC START
如果標誌為1,則發生了交換
801E 
76


HLT
終止程式

 

輸出

地址
資料


8041
01
8042
02
8043
03
8044
04
8045
05
8046
06


更新於:2019年10月9日

443 次檢視

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告