新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 匯編冒泡排序(51)(需調(diào)試器付初值)

匯編冒泡排序(51)(需調(diào)試器付初值)

作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
;此程序?qū)儆诿芭菖判蛩惴?,不能用查找表(只能在調(diào)試時(shí)用內(nèi)存表中設(shè)置處置進(jìn)行仿真實(shí)驗(yàn))(因?yàn)椴檎冶硎菙?shù)據(jù)是存放在rom中的,所以說是無法去修改的,無能為力,因此只能通過調(diào)試來實(shí)現(xiàn))

NumEQU31H;定義臨時(shí)次數(shù)變量(也可理解為總數(shù)據(jù)變量)

本文引用地址:http://m.butianyuan.cn/article/201611/315819.htm

ORG0000H

LCALLSTART;跳轉(zhuǎn)到排序算法

SJMP$;如果排序完成,在此循環(huán)

START:MOVR0,#50H;把地址0050h付給R0中

MOVNum,#4;所有數(shù)據(jù)個(gè)數(shù)放在Num中

CLRF0;用戶可以使用的標(biāo)志位清零(交換數(shù)據(jù)標(biāo)志)

DECNum;減1

MOVA,@R0;把其中的數(shù)送到A中

LOOP:MOVR2,A;把低字節(jié)地址中的數(shù)付給R2

INCR0;地址加一

CLRC;進(jìn)位標(biāo)志位清零

MOVA,@R0;把高字節(jié)地址中的數(shù)付給A

SUBBA,R2;帶進(jìn)位相減指令

JNCLOOP1;如果沒有借位,則高字節(jié)中比低字節(jié)中數(shù)據(jù)大,不用排,跳轉(zhuǎn)到loop1

;如果借位,下面是交換數(shù)據(jù)代碼

SETBF0;用戶可以使用的標(biāo)志位置1

MOVA,R2

XCHA,@R0;把低字節(jié)數(shù)送到高字節(jié)地址中

DECR0;地址減1,到低字節(jié)地址中

XCHA,@R0;把高字節(jié)中的數(shù)送到低字節(jié)地址中

INCR0;在把地址重新加一

LOOP1:MOVA,@R0

DJNZNum,LOOP;重新進(jìn)入下次循環(huán)(跳出時(shí),實(shí)現(xiàn)一次冒泡)

JBF0,START;循環(huán)進(jìn)行冒泡,如果交換標(biāo)志一直為0,則排序完成,結(jié)束

RET

END



關(guān)鍵詞: 匯編冒泡排序初

評(píng)論


技術(shù)專區(qū)

關(guān)閉