(基于ARM的)微機原理與接口技術(shù)筆記特別篇
首先是我的一次儀光培訓的手寫講義(更多請移步北航儀器光電人微信公眾號)

這些是GPIO的一些應用



IIC在后面的筆記還會繼續(xù)更新

然后是R710F的匯編語言使用舉例
0:寫在前面
下面的代碼都是從我的實驗報告里面粘的
實驗環(huán)境:KEIL ARM v5 需要安裝Legacy Device Pack以支持R710F
開項目點STR710FZ2 不copy啟動文件 關(guān)閉scatter文件
本人練習使用匯編語言心得:
程序需要注意分段和縮進問題(似乎是ARMCC匯編特有的)?
儲存結(jié)果的不要放到 readonly 段里面
調(diào)試需要關(guān)注寄存器和內(nèi)存和反匯編 直接進內(nèi)存找數(shù)據(jù) 注意大小端問題
1:兩個整數(shù)相加

運行效果:


2:BCD碼轉(zhuǎn)asc碼

運行效果


3:查階乘表
代碼

運行效果

4:求2個數(shù)的較大值
代碼

5:十六進制轉(zhuǎn)asc
思路:如果>10就先加7再轉(zhuǎn)換,否則直接轉(zhuǎn)換
代碼:

6:實現(xiàn)表達式

代碼

運行效果:

解析(節(jié)選自某個上古教程上的):

不對,所以必須有強制跳轉(zhuǎn)的指令
7:對一串數(shù)據(jù)求和
代碼

運行效果:

8:匯編求字符串長
代碼:

運行效果

9:復制內(nèi)存塊
代碼

運行效果:

10:用subprocedure求數(shù)組中最大值
代碼:

運行效果:

11:16進制轉(zhuǎn)字符串
注意需要修改棧底地址.棧是向下生長的,否則下標越界導致abort.
運行結(jié)果:(需要手工改地址0x20000000
處的值令輸入為0x2bfa
)
代碼:

運行效果:

12:用assembler解決下面這個問題

代碼:

運行結(jié)果

13:匯編調(diào)用C程序
注意scatter文件
項目結(jié)構(gòu)和匯編代碼:

C代碼
運行結(jié)果

14:內(nèi)嵌匯編
注意需要啟動文件

C程序代碼
運行效果

15:C調(diào)用匯編
項目結(jié)構(gòu) 需要啟動代碼

C代碼(可以不用stdio.h文件的)
匯編代碼

運行效果
