实验1 存储器块清零程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 存储器块清零程序
一、实验要求
指定存储器中某块的起始地址和长度,将其内容清零。
二、实验目的
1、学习使用模拟软件,编辑简单程序;
2、掌握存储器的读写方法;
3、了解存储器块操作块操作方法
三、实验内容
1、实验步骤
启动PC机,打开uVision2软件。
创建工程Project文件,然后创建main.c源程序,。实现对数据块Da[10]的清零函数ClearDataZone:
void ClearDataZone(unsigned char* Data,int n)
{
}
int main()
{
unsigned char Da[10]={0,1,2,3,4,5,6,7,8,9};
ClearDataZone(Da,10);
while(1);
}
2、对代码进行编译,编译无误后,进入Debug运行程序,打开数据窗口(DATA),点击暂停按钮,观察要清零的数据区是否被清零。同时打开反汇编代码窗口,找出这段C代码用到的汇编指令有哪些?并对反汇编代码截图。
指令:
MOV SJMP LJMP ORL CLR JNZ JZ LCALL DEC
3、针对2中你看到的每一句汇编代码写出相应的含义,并标出。
C:0x011B 7808 MOV R0,#0x08
含义:将0x08这个数据传送到R0寄存器中
C:0x0138 12013D LCALL ClearDataZone(C:013D)
含义:长调用指令,调用ClearDataZone函数
C:0x013B 80FE SJMP C:013B
含义:短转移指令
C:0x0144 1D DEC R5
含义:减1指令。将R5寄存器中的数据减一
C:0x0145 7001 JNZ C:0148
含义:若不为0就跳转
C:0x014A 6010 JZ C:015C
含义:若为0就跳转
C:0x0149 4C ORL A,R4
含义:逻辑或指令。将A和R4寄存器中的数据做或运算,所得结果放在R4中。C:0x0156 E4 CLR A
含义:清0指令
四、实验总结
懂得了实验里边一些汇编代码所包含的意思。