电子科技大学微嵌实验最新版Word文档格式.docx
- 文档编号:19552763
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:8
- 大小:141.37KB
电子科技大学微嵌实验最新版Word文档格式.docx
《电子科技大学微嵌实验最新版Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子科技大学微嵌实验最新版Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
核心代码如下:
ADDR0,R1
BVSSUM_END
CMPR1,R2
BHSSUM_END
ADDR1,#1
BSUN_L1
图1.2
可以看见最终结果显示在寄存器R8处,十六进制为13BA,转换成十进制为5050,实现了累加功能。
2.实验1.3:
C调用汇编实现字符串拷贝功能
LDRBR2,[R1],#1;
拷贝源字符串的一个字节
STRBR2,[R0],#1;
将拷贝的字节复制到目标空间
图1.3
图1.4
可以看出拷贝前srcstr是”aaaa”,dststr是”bbbb”,拷贝后srcstr是”aaaa”,dststr是”aaaa”,实现了字符串拷贝功能。
3.实验1.4:
汇编调用C实现求和1+2+...+10
MOVR0,#1
MOVR1,#2
MOVR2,#3
MOVR3,#10
BLg
MOVR8,R0
图1.5
可以看出最终结果显示在寄存器R8处,十六进制表示为0010,转换为十进制为0x10
4.实验1.5:
ARM汇编实现冒泡算法
代码如下:
AREASort,CODE,READONLY
ENTRY
start
MOVR4,#0
LDRR6,=src
ADDR6,R6,#len
LDRR7,=src
;
初始化R4作为循环计数器
inner2
MOVR1,R7
CMPR6,R7
BLEouter
将每次循环开始,正确设置R1的值为数组开始地址
如果所有数字均已排序,即R6<
=R7输出跳转到outer函数
inner
LDRR2,[R1]
LDRR3,[R1,#4]
CMPR2,R3
BGTexchange
判断相邻数字是否符合规律,不符合跳转到exchange函数
inner1
ADDR1,R1,#4
CMPR1,R6
BLTinner
ADDR4,R4,#4
CMPR4,#len
BLEsubtraction
exchange
STRR3,[R1]
STRR2,[R1,#4]
Binner1
subtraction
SUBR6,R6,#4
Binner2
outer
LDRR1,=src
srcDCD2,4,10,8,14,1,20
AREAArray,DATA,READWRITE
lenEQU7*4
END
图1.6排序前
在star函数中获得R6地址后,首先如上图,设置权限才能正确执行程序。
图1.7排序前
图1.8排序后
地址0x0000005C-0x00000078中保存的排序后的结果正确,程序实现了冒泡法排序功能。
二、实验总结
1.此次实验用汇编和C语言实现了1~N的累加、字符串的拷贝、数字求和以及冒泡法排序这几项功能,了解了汇编语言的基础指令及其意义,学会了使用了Keil编译器编写和调试程序。
2.知道了C程序与汇编语言相互调用的规则:
∙寄存器的使用规则:
“子程序间”通过寄存器R0~R3来传递参数。
如果更多参数需要传递,则需要使用堆栈。
(这也是第二题字符串复制中使用R0和R1的原因)在“子程序中”,使用寄存器R4~R11来保存局部变量。
∙寄存器R12用于子程序间scratch寄存器(用于保存SP,在函数返回时使用该寄存器出桟),记作IP。
∙寄存器R13用于数据栈指针,记作SP。
寄存器SP在进入子程序时的值和退出子程序时的值必须相等。
∙寄存器R14称为链接寄存器,记作LR。
它用于保存子程序的返回地址。
∙寄存器R15是程序计数器,记作PC。
三、实验思考题
1.Q:
ADD替换成ADDS,SUB替换成SUBS有什么影响?
A:
替换后,运算结果会影响标志寄存器。
因为ADD、SUB不带进位与借位,ADDS、SUBS带有进位与借位,运算完成要置符号位。
2.Q:
MOV替换成MOVNE有什么影响?
替换后只有在上一步比较结果为不相等的时候才会执行该指令。
(“NE”属于“cond”,意义为不相等)
3.Q:
STMIA换成STMIB,STMIA换成STMDA有什么区别?
换成STMIB是将每次传送后地址+4变成每次传送前地址+4,换成STMDA是将每次传送后地址+4变成每次传送后地址-4。
4.Q:
思考用ARM汇编实现1+3+5+…+(2n+1)或者2+4+6+…+2n。
实现1+3+5+….+(2n+1),将ADDR1,#1改为ADDR1,#2,设置R1初始值为1。
实现2+4+6+…..+2n,将ADDR1,#1改为ADDR1,#2,设置R1初始值为2.
5.Q:
实验3中如果去除汇编代码中的“EXPORTstrcopy”会有什么现象,为什么?
若去除汇编代码中的“EXPORTstrcopy”,则在c语言中无法调用该函数,因为EXPORT用于声明strcopy为全局标号。
6.Q:
实验4中如果去除汇编代码中的“IMPORT…..”会有什么现象,为什么?
无法调用C语言的main函数,因为该伪指令用于通知编译器要使用的标号或者变量在其他的源文件定义。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 实验 最新版
![提示](https://static.bdocx.com/images/bang_tan.gif)