微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 汇编冒泡排序(51)(需调试器付初值)

汇编冒泡排序(51)(需调试器付初值)

时间:11-18 来源:互联网 点击:
;此程序属于冒泡排序算法,不能用查找表(只能在调试时用内存表中设置处置进行仿真实验)(因为查找表是数据是存放在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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top