器R0中。
图13更改
如图13所示,将r0中的值修改即修改变更globvar的值。
3
f实验分析
图14赋值
如图14所示,将r0的值赋予变更,修改变量的值。
图15改变pc
如图15所示,将连接寄存器值送到pc改变指针,使程序跳回。
4
f2汇编语言调用C程序
实验分析
图21加载
如图21所示,将32位立即数加载到pc指针里,给pc赋值。
图22保存返回地址
如图22所示,使用STR语句保存返回地址到连接寄存器里。
5
f实验分析
图23设置参数1
如图23所示,使用r0寄存器存放第一个参数。
图24设置参数2
如图24所示,使用r1寄存器存放第二个参数。
6
f实验分析
图25设置参数3
如图25所示,使用r2寄存器存放第三个参数。
图26设置参数4
如图26所示,使用r3寄存器存放第四个参数。
7
f实验分析
图27设置参数5
如图27所示,第五个数利用堆栈传递。
图28
如图28所示,前四个数利用寄存器存储,调整指针将第五个数放在堆栈段里。
8
f实验分析
图29跳转
如图29所示,利用bl语句调用C程序中的g。
图210c程序
如图210所示,调到C程序执行C语言,利用add语句和ldr语句调整数据栈指针并返回。
【遇到的问题】实验一用的是书上给的代码,有错误运行不了,问了同学然后改了一
些代码,后正确。在汇编语言调用C程序时,执行完C语言程序后没能返回到汇编程序。在代码中注释了ldrpc,sp4指令,没能使指针返回。
9
f实验总结
本次试验主要是加深C语言和汇编混合编程的使用,在一步一步的调试的过程中加深了解并学会使用混合编程。加深了一些在课堂学到的ARM指令,学到了两种语言互相调用的方法。本次实验由于实验三做的不是很顺利,一直有错误没有改过来,所以没有达到完美。
教师评语
10
fr