顺序程序设计:拆字和拼字
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微处理器原理课实验日志
一、实验题目:顺序程序设计:拆字和拼字
二、实验结果
本次实验目的是为了掌握顺序程序的编写方法,掌握拆字和拼字的方法,学会编写和调试程序的过程和方法以及掌握C51编写方法。
实验一、实现拆字功能,阅读理解程序并完成程序的填空。最后运行程序,验证是否正确。程序如下:
ORG 0000H
AJMP START
ORG 0100H
START:
MOV DPTR,#0200H ;指定的字节
MOVX A,@DPTR
MOV B,A;数据暂存
SW AP A(1);A中数据高位和低位交换
ANL A,#0FH ;屏敝高位
INC DPTR
MOVX @DPTR,A
INC DPTR
MOV A,B
ANL A,#0FH (2)
MOVX @DPTR,A
LOOP: SJMP LOOP
END
运行程序,然后对X:0200H赋值,点击分步运行,就能观察到0201H、0202H值的变化。结果如下:
实验二、学习用C语言编写拆字程序,理解XBYTE,DBYTE等语句的含义。程序如下:
#include"reg51.h"
#include"absacc.h"
void main()
{
XBYTE[0x0200]=0x69;
XBYTE[0x0201]=XBYTE[0x0200];
XBYTE[0x0201]>>=4; ; 将0201H中的数右移4位
XBYTE[0x0202]=XBYTE[0x0200];
XBYTE[0x0202]&=0x0f;
}
运行结果如下:
实验三,拼写程序,题目为:分别编写汇编语言程序和C程序,把片内RAM30H 、31H两个字节的低位分别送入32H的高位和低位,
过程与拆字程序相反。
假设(30H)=12H, (31H)=34H,运行程序后(32H)=24H 第一、用汇编语言编写的程序如下:
ORG 0000H
AJMP START
ORG 0100H
START:
MOV 30H, #12H
MOV 31H, #34H
MOV A, 30H
ANL A, #0FH
SW AP A
MOV 32H, A
MOV A,31H
ANL A,#0FH
ORL 32H,A
LOOP: SJMP LOOP
END
运行结果如下:
第二、用C语言编写的程序:
#include"reg51.h"
#include"absacc.h"
void main()
{ DBYTE[0x30]=#0x12;
DBYTE[0x31]=#0x34;
DBYTE[0x32]=DBYTE[0x30];
DBYTE[0x32]&=0x0f;
DBYTE[0x32]<<=4;
DBYTE[0x31]&=0x0f;
DBYTE[0x32]|=DBYTE[0x31];
}
运行结果如下:
三、实验过程中的问题及解决方案
在本次实验中,遇到的问题是在第一个实验中不知道怎么把值69用汇编语句,实现对外部存储单元的赋值。最后在老师的讲解下,直接双击0x0200这个单元,就可以对它赋值,最后运行。
在第三个实验中,对用C语言编写的程序,不知道怎么或语句怎么写,在请教老师之后得以解决,但是,在编译程序时没有问题,运行程序出现了错误。一直没有找到问题,在最后重新建立工程,文件等必要步骤之后,就完成了程序的运行。