;此程序归于冒泡排序算法,不能用查找表(只能在调试时用内存表中设置处置进行仿真试验)(由于查找表是数据是存放在rom中的,所以说是无法去修正的,力不从心,因而只能经过调试来完结)
NumEQU31H;界说暂时次数变量(也可理解为总数据变量)
ORG0000H
LCALLSTART;跳转到排序算法
SJMP$;假如排序完结,在此循环
START:MOVR0,#50H;把地址0050h交给R0中
MOVNum,#4;一切数据个数放在Num中
CLRF0;用户能够运用的标志位清零(交流数据标志)
DECNum;减1
MOVA,@R0;把其间的数送到A中
LOOP:MOVR2,A;把低字节地址中的数交给R2
INCR0;地址加一
CLRC;进位标志位清零
MOVA,@R0;把高字节地址中的数交给A
SUBBA,R2;带进位相减指令
JNCLOOP1;假如没有借位,则高字节中比低字节中数据大,不必排,跳转到loop1
;假如借位,下面是交流数据代码
SETBF0;用户能够运用的标志方位1
MOVA,R2
XCHA,@R0;把低字节数送到高字节地址中
DECR0;地址减1,到低字节地址中
XCHA,@R0;把高字节中的数送到低字节地址中
INCR0;在把地址从头加一
LOOP1:MOVA,@R0
DJNZNum,LOOP;从头进入下次循环(跳出时,完结一次冒泡)
JBF0,START;循环进行冒泡,假如交流标志一向为0,则排序完结,完毕
RET
END