采用冒泡法编写51单片机排序程序
2016-01-25 11:41
197 查看
试设计一个子程序,其功能为将(R0)指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。
悬赏分:10 - 解决时间:2010-5-7 22:59
;========================================
最佳答案:
下列程序使用冒泡法排序,经过KEIL仿真测试通过。
ORG 0000H
;------------------------下面先准备6个数字
MOV 40H, #8AH
MOV 41H, #3BH
MOV 42H, #0B9H
MOV 43H, #47H
MOV 44H, #29H
MOV 45H, #0AFH
CALL SORT6 ;调用排序子程序
SJMP $ ;停止,此时可以观察排序结果
;-------------------------------------
SORT6: ;排序子程序
MOV R6, #5 ;6个数字,比较5次
S1:
MOV R0, #40H ;起始地址
MOV B, R6
MOV R7, B
CLR PSW.5 ;交换标志清零
S2:
MOV B, @R0 ;取出前一个数
INC R0
MOV A, @R0 ;取出后一个数
CJNE A, B, S3 ;后-前
S3:
JNC N_JH ;够减就不用交换
MOV @R0, B ;交换存放
DEC R0
MOV @R0, A
INC R0
SETB PSW.5 ;设立交换标志位
N_JH:
DJNZ R7, S2
JNB PSW.5, S_END ;没有交换过,就结束
DJNZ R6, S1
S_END:
RET
;-------------------------------------
END
;========================================
回答者: 做而论道 - 十三级 2010-4-21 00:19
提问者对于答案的评价:谢谢~
原题网址:http://zhidao.baidu.com/question/148407042.html?fr=qrl&cid=865&index=1
悬赏分:10 - 解决时间:2010-5-7 22:59
;========================================
最佳答案:
下列程序使用冒泡法排序,经过KEIL仿真测试通过。
ORG 0000H
;------------------------下面先准备6个数字
MOV 40H, #8AH
MOV 41H, #3BH
MOV 42H, #0B9H
MOV 43H, #47H
MOV 44H, #29H
MOV 45H, #0AFH
CALL SORT6 ;调用排序子程序
SJMP $ ;停止,此时可以观察排序结果
;-------------------------------------
SORT6: ;排序子程序
MOV R6, #5 ;6个数字,比较5次
S1:
MOV R0, #40H ;起始地址
MOV B, R6
MOV R7, B
CLR PSW.5 ;交换标志清零
S2:
MOV B, @R0 ;取出前一个数
INC R0
MOV A, @R0 ;取出后一个数
CJNE A, B, S3 ;后-前
S3:
JNC N_JH ;够减就不用交换
MOV @R0, B ;交换存放
DEC R0
MOV @R0, A
INC R0
SETB PSW.5 ;设立交换标志位
N_JH:
DJNZ R7, S2
JNB PSW.5, S_END ;没有交换过,就结束
DJNZ R6, S1
S_END:
RET
;-------------------------------------
END
;========================================
回答者: 做而论道 - 十三级 2010-4-21 00:19
提问者对于答案的评价:谢谢~
原题网址:http://zhidao.baidu.com/question/148407042.html?fr=qrl&cid=865&index=1
相关文章推荐
- MCS-51单片机中断测试系统设计
- 计时秒表程序设计
- 用汇编语言编八路彩灯控制系统(流水灯)
- 关于单片机测量信号频率的精度问题
- 腾讯公司将为您检测密码强度,防止QQ被盗,请您输入密码
- 设计程序,用数码管显示按键编号
- 《Web前端开发修炼之道》笔记一:高质量HTML
- 做个15路输出的彩灯
- 使用汇编语言编写程序,设计一个用8051单片机控制的循环彩灯控制系统
- 8个LED依次循环发光,3种显示效果,要求通过按钮切换
- 浅析Java中CountDownLatch用法
- 处理不确定数据的方法研究
- Ligerui表格基本操作(五)
- 【足迹C++primer】40、动态数组
- Java学习笔记九(泛型)
- spring4 学习4 spring MVC+mybatis+Mysql
- Project Euler欧拉计划
- 提高 ASP.NET Web 应用性能
- 基于51单片机的简易数字频率计
- Python 基础教程