电子科技大学微机实验报告(含思考题)河畔下的哈】实验

电子科技大学微机实验报告(含思考题)河畔下的哈】实验

ID:16008133

大小:24.00 KB

页数:11页

时间:2018-08-07

电子科技大学微机实验报告(含思考题)河畔下的哈】实验_第1页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验_第2页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验_第3页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验_第4页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验_第5页
资源描述:

《电子科技大学微机实验报告(含思考题)河畔下的哈】实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一 ARM汇编基础实验 1.掌握ARM汇编指令 2.学习掌握C与汇编混合编程基础 3.熟练使用ARM调试工具RVDS进行调试操作 1.熟悉ARM汇编 2.用ARM汇编实现1+2+...+N 3.C调用汇编实验(实现字符串拷贝功能) 4.汇编调用C实验 5.ARM汇编实现冒泡算法(选做) 1.ARM汇编、C语言 2.RVDS工具 硬件:PC机Pentium100以上 软件:Windows操作系统,RVDS软件 1.在汇编中使用C定义的全局变量 在汇编和C之间进行一些数据的传递,最简便的办法就是

2、使用全局变量。 在汇编中调用C中定义的全局变量,需要在汇编中IMPORT对应的全局变量。 IMPORT伪指令用于通知编译器要使用的标号或变量在其他的源文件中定义。 例如:汇编文件asmfile.s想调用C文件cfile.c中定义的全局变量a,则在汇编文件asmfile.s 前面要添加: IMPORTa 2.在汇编中调用C的函数 要在汇编中调用C文件中定义的函数,主要做两方面的工作: 首先:需要在汇编中IMPORT对应的C函数名。 其次:在调用该 C函数之前还需要通过汇编语言传递该函数的 参数。 C和汇编之间的

3、参数传递是通过ATPCS(ARMThumbProcedureCallStandard)的规定来进 行的。简单的说就是如果函数有不多于四个参数,对应的用ARM寄存器R0-R3来进行传递, 多于4个时借助栈。函数的返回值通过R0来返回。 3.在C中调用汇编的函数 在C中调用汇编文件中的函数,要做的主要工作有两个: 一:是在C中声明函数原型,并加extern关键字; 二:是在汇编中用EXPORT导出函数名,并用该函数名作为汇 编代码段的标识,最后用movpc,lr返回。然后,就可以 在C中使用该函数了。 EXPORT

4、伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。 1、用ARM汇编实现1+2+….n的运算。 2、理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。 在汇编文件testfile1.s中添加两行汇编代码,分别实现: 拷贝源字符串的一个字节到R2中 将拷贝的字节复制到目标空间 注意事项: 1.C文件和汇编文件都必须加到工程中去,否则编译会报错。 2.C文件和汇编文件要拷贝到工程目录下。 3、在汇编中调用C函数。 在汇编文件testfile2.s中相应位置添加汇编代码,

5、通过调用c函数g()实现1+2+3+glovb1, 结果存在R8中。 1、用ARM汇编实现1+2+….n的运算。 ;功能:计算1+2+3+4+...+N ;说明;N>=0,当N=0时结果为0,当N=1时结果为1 NEQU100; 定义N的值100 AREAExamples,CODE,READONLY;声明代码断Examples3 ENTRY;标识程序入口 CODE32 ARM_CODE LDRSP,=0X30003F00;设置堆栈指针 ADRR0,THUMB_CODE+1; BXR0;跳转并切换处理器

6、状态 LTORG;声明文字池 CODE16 THUMB_CODE LDRR0,=N;设置子程序SUM_N的入口参数 BLSUM_N;调用子程序SUM_N BTHUMB_CODE ;SUM_N ;功能:计算1+2+3+......+N ;入口参数:R0N的值 ;出口参数:R0运行结果 ;占用资源:R0 ;说明:当N=0时结果为0,当N=1时结果为1 ;若运算溢出,结果为0 SUM_N PUSH{R1-R7,LR};寄存器入栈保护 MOVSR2,R0;将n的值复制到R2,并影响相应条件标志 BEQSUM_E

7、ND;若N=0,则返回 CMPR2,#1 BEQSUM_END;若N=1,则返回 MOVR1,#1;初始化计数器R1=1 MOVR0,#0; 初始化计数器R0=1 SUN_L1 ;------------------------------------------ ;用汇编实现算法核心部分 ADDR0,R0,R1; BVSSUM_END; CMPR1,R2; BCSSUM_END; ADDR1,R1,#1; BSUN_L1 ;------------------------------------------

8、 SUM_END MOVR8,R0;将结果保存在R8中 POP{R1-R7,PC};寄存器出栈,返回 END 2、理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。 Arm汇编: ;文件名:TESTFILE11.S ;功能:从C语言中调用汇编语言 ;说明:使用ARMulate软件仿真调试 AREAExample1,CODE,READONLY;声明代码段Exam

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。