用单片机汇编语言编写从30H开始的100数据的排列 从小到大程序

30H开始的100个数 实现排列 从小到大

一批单字节无符号数,以R0为首地址指针,R2中为字节数,将这批数进行升序排列.
SORT: MOV A,R0 ;
MOV R1,A ;(R1)为首地址
MOV A,R2 ;字节数送入R5
MOV R5,A ;(R5)为字节数
CLR F0 ;互换标志位F0清零
DEC R5 ;循环n-1
MOV A,@R1 ;
LOOP: MOV R3,A ;(R3)为前一个数
INC R1 ;地址指向下一个数
CLR C ;
MOV A,@R1 ;取下一个数
SUBB A,R3 ;比较大小
JNC LOOP1 ;如果进位位Cy=0,则转移
SETB F0 ;互换标志位F0置1
MOV A,R3 ;前面大的数放到A
XCH A,@R1 ;互换后,小的数在A,大数在@R1
DEC R1 ;(R1)指向前一个地址
XCH A,@R1 ;小的数放到前一个地址
INC R1 ; (R1)指向下一个地址
LOOP1: MOV A,@R1 ;取下一个数
DJNZ R5,LOOP
JB F0,SORT 如果直接寻址位=1,则转移
RET这是单片机汇编语言的经典冒泡法排序,看懂了,对你很有帮助!把R0=30H ,R2=100H-30H代入,就可以得到你要的结果
温馨提示:答案为网友推荐,仅供参考
相似回答