8085 氣泡排序程式


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

問題陳述

編寫 8085 組合語言程式,對儲存在從 8041H 開始的連續記憶體位置中的 n 個數字進行升序排序,其中 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-07-30

2K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告