目的:掌握汇编语言程序设计和调试方法。
任务:了解单片机RAM中的数据操作。
编写程序将片内RAM 30H单元中的8位二进制数转换成10进制数。转换后的结果保存于31H和32H,31H低4位存放个位,高4位存放十位,32H低4位存放百位,高4位为0。
- 实验过程和结果
①根据上述实验内容及程序流程图,编写汇编语言源程序,并加上相应注释,注意扩展名为“*.asm”,将其保存。
②运行Keil uVision 开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立工程simlab1.uV2,CPU 为AT89S51,不用包含启动文件STARTUP.A51。
③编写好的源程序加入工程simlab1.uV2,并设置工程simlab1.uV2 属性,将其晶振频率设置为12MHz,选择输出可执行文件,仿真方式为“Use Simulator”。
④构造(Build)工程simlab1.uV2。如果输入有误进行修改,直至构造正确,生成可执行程序simlab1.hex 为止。
⑤运行程序,并用存储器观察窗口,观察内部RAM 30H, 31H, 32H 单元的值。
⑥更改30H 单元的值,重新运行程序,观察内部RAM 30H, 31H, 32H 单元的值。
程序流程图
观察程序的运行结果并截图;
结果示意图
通过本次实验能够根据流程图在自己理解并编写程序,在运行时也出现了很多的问题,在加深对程序命令的理解后,顺利的纠正了自己出现的问题,在一次次的修改后,终于通过了编译,完成了实验的要求。
ORG 0000H
START: MOV 30H,#68H 将操作数送给30H
MOV A,30H 将30H内的内容送给A
MOV R0,#31H 将31H送给R0
XCHD A,@R0 将R0和A交换低四位
SWAP A
RR A
RR A
RR A
RR A A循环右移
INC R0 寄存器R0增1
XCHD A,@R0 将R0和A交换低四位
END