(基于ARM的)微机原理与接口技术笔记特别篇
首先是我的一次仪光培训的手写讲义(更多请移步北航仪器光电人微信公众号)

这些是GPIO的一些应用



IIC在后面的笔记还会继续更新

然后是R710F的汇编语言使用举例
0:写在前面
下面的代码都是从我的实验报告里面粘的
实验环境:KEIL ARM v5 需要安装Legacy Device Pack以支持R710F
开项目点STR710FZ2 不copy启动文件 关闭scatter文件
本人练习使用汇编语言心得:
程序需要注意分段和缩进问题(似乎是ARMCC汇编特有的)
储存结果的不要放到 readonly 段里面
调试需要关注寄存器和内存和反汇编 直接进内存找数据 注意大小端问题
1:两个整数相加

运行效果:


2:BCD码转asc码

运行效果


3:查阶乘表
代码

运行效果

4:求2个数的较大值
代码

5:十六进制转asc
思路:如果>10就先加7再转换,否则直接转换
代码:

6:实现表达式

代码

运行效果:

解析(节选自某个上古教程上的):

不对,所以必须有强制跳转的指令
7:对一串数据求和
代码

运行效果:

8:汇编求字符串长
代码:

运行效果

9:复制内存块
代码

运行效果:

10:用subprocedure求数组中最大值
代码:

运行效果:

11:16进制转字符串
注意需要修改栈底地址.栈是向下生长的,否则下标越界导致abort.
运行结果:(需要手工改地址0x20000000
处的值令输入为0x2bfa
)
代码:

运行效果:

12:用assembler解决下面这个问题

代码:

运行结果

13:汇编调用C程序
注意scatter文件
项目结构和汇编代码:

C代码
运行结果

14:内嵌汇编
注意需要启动文件

C程序代码
运行效果

15:C调用汇编
项目结构 需要启动代码

C代码(可以不用stdio.h文件的)
汇编代码

运行效果
