山东大学单片机实验:2.2 汇编程序实验2

一,【实验题目】

   2.2 汇编程序实验2

二,【实验要求】 

片内 RAM 30H 开始的 32 个单元中分布着随机的有符号 8 位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到 30H 开始的 32 个单元中(低地址存放小数据) 。

三,【实验过程及结果记录】

对源代码中TABLE中的32个数进行排序。排序结果如右下角所示。

四,【实验源代码】

ORG 0000H
AJMP MAIN
ORG 0090H
MAIN:
MOV SP,#62H
MOV A,#0H
MOV R1,#30H
MOV R7,#20H
MOV DPTR,#TABLE
MOV R4,#1FH
LOOP1:
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC DPTR
MOV A,#0H
DJNZ R7,LOOP1;输入32个数
LOOP2: CLR C
MOV A,#1FH
SUBB A,R4
ADD A,#30H
MOV R1,A;令R1从该循环第一个数开始计算
MOV A,R4
MOV R2,A;使R2为计算次数
MOV A,R1
MOV R0,A;设置该循环初始值
LOOP3:
CLR C使C清零
MOV A,@R1
MOV R3,A;R3中存入R1所指数据
MOV A,R0 
SUBB A,R1;比较R0与R1的大小
JNZ X;判断相不相等判断出是否为该循环第一步,并执行跳转操作
CLR C
INC R1
X:
MOV A,@R0
SUBB A,@R1;比较R1与R0+1的大小
JC LOOP4;判断相不相等判断出是否为该循环第一步,并执行跳转操作
MOV A,R0
INC A
SUBB A,R1
JNZ Y
MOV A,R3
XCH A,@R1
MOV @R0,A
SJMP LOOP4
Y:
MOV A,R3
XCH A,@R0
MOV @R1,A
LOOP4:
INC R1
DJNZ R2,LOOP3;持续循环直至结束
INC R0
DJNZ R4,LOOP2;持续循环直至结束
SJMP $
ORG 0030H
TABLE: DB 11,3,9,2,17,4,11,6
DB 5,20,100,64,21,14,79,35	
DB 92,7,91,23,65,16,13,18
DB 18,73,65,101,27,19,62,69;输入32个数据
END

本文来自最最牛逼的王宇超同学!在此对其表示感谢!

© 版权声明
THE END
喜欢就支持以下吧
点赞6赞赏
分享
评论 抢沙发

请登录后发表评论