- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
山东大学单片机实验-(软件实验)
信息科学与工程学院
2016-2017学年第二学期
实 验 报 告
课程名称: 单片机原理与应用
实验名称: 2.2汇编程序实验2
实验报告
【实验题目】
片内RAM 30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据)
【实验要求】
编写源程序并进行必要的注释;
记录实验过程;
记录程序运行结果。
【实验过程及结果记录】
自我完成实验运行结果(实现了按从小到大的顺序对32个数进行排序并存放在从30H开始的32个单元中)
示例程序:
功能:实现求得一个八位二进制数高四位表示的二进制数乘以10和低四位表示的二进制数的和。如为两位压缩BCD码,则实现求得相应十进制数值,并以二进制形式存于内存单元中
程序及其注释?:
ORG?0000H?????????
AJMP?MAIN????
ORG?0030H????
MAIN:?
MOV?30H,?#45H;操作数存于30H单元???
?MOV?A,?30H;30H单元中的数送A?
??? ANL?A,#0FH;高四位清零,保留低四位????
MOV?31H,A;结果存于31H单元???
MOV?A,30H;重新取待操作数至A?
??? ANL?A,?#0F0H;低四位清零,保留高四位?
??? SWAP?A;自交换实现待操作数的高四位表示的二进制数存于A????
MOV?B,?#10????????
??? MUL?AB;待操作数的高四位表示的二进制数乘以10?
??? ADD?A,31H?;待操作数的高四位表示的二进制数乘以10后和低四位表示的二进制数相加
MOV?31H,A?;存结果于31H单元
SJMP $
END
自我完成实验
运行结果:
【实验源程序】
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV DPTR ,#TABLE
MOV R0,#32;指定读取数字循环的次数
MOV R1,#30H;指定读取数据存放的首地址
MOV R2,#00H
MOV A,R2;赋初值,R2的值代表表中数据的次序
READ:
MOVC A,@A+DPTR;利用查表指令读取数据并存放于A
MOV @R1,A
INC R2;指向表中下一个数据
INC R1;指向下一个存储单元
MOV A,R2
DJNZ R0,READ
MOV R7,#31;将遍历次数31送R7
LOOP1:
MOV R1,#30H;设置遍历寄存器R1的值
MOV A,R7
MOV R6,A;将比较次数寄存器R6的值设定为R7的值
MOV A,#30H
ADD A,R7
MOV R0,A;将最大值位置寄存器R0的值设定为#30H+R7
MOV B,@R1;取R1指向的单元的值到最大值寄存器B
LOOP2:
CLR C;将借位位CY清零
INC R1
MOV A,@R1
SUBB A,B;数据比较
MOV A,@R1;还原数据
JC JUDGE;有借位,即AB,则跳转到判断程序
MOV B,A
MOV A,R1
MOV R0,A;获得目前最大值的存储位置
JMP JUDGE
JUDGE:
DJNZ R6,LOOP2;内循环次数判断
MOV A,B
XCH A,@R1;存放最大数
MOV @R0,A
DJNZ R7,LOOP1;外循环次数判断
TABLE:DB 1,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
SJMP $
END
山东大学·微处理器原理与应用·实验报告
- 1 -
文档评论(0)