(26) 指令 LDR :
++ 补充 :
(27) STR :
+
可见,从语法上将, ! 提示编译器进行更复杂的编译,对应内涵更复杂的指令。
(28) LDR 与 STR 指令还可以带后缀,指出要操作的数据宽度。LDRB 与 LDRH ,还会清零未使用的寄存器的高位比特:
(29) 如此设计汇编指令的好处:
(30) 给出一个关于 ldr str 的测试:
执行上述代码的前提要设置 keil4 的模拟环境:
- 再学习一个 keil4 的调试窗口, 内存窗口:
从内存窗口可见,arm 处理器用的是小字节序。
(31) 操作内存,要依据 soc 的用户手册。比如课本上用的 s3c4000 的用户手册提示了程序员可以自由使用哪些内存:
(32)接着介绍各种寻址方式,感觉这里更应该叫寻值方式,就是程序如何取值:
+
+
+
++ 课本上说,这俩指令,对寄存器的书写顺序,没有要求,低地址自动对应小编号寄存器。
(33) 给个例子使用 ldr , 数组求和:
(34) 在举例,往栈里一次压入多个数据:
(35) 再举例,压栈的真正作用,函数调用时候的寄存器值的保存:
简化后的试验结果:
(36)
谢谢