1TM第8章ARM汇编语言与嵌入式C混合编程本章首先简要的介绍了嵌入式C语言的编程规范,嵌入式开发中常用的位运算与控制位域及在嵌入式C程序设计中要注意的问题,为读者进行嵌入式C程序设计打基础。然后介绍在ARM汇编语言与嵌入式C语言进行相互调用的标准(AAPCS),并以大量的实例说明了相互调用应注意的问题。2TM2内容提要8.1嵌入式C编程规范8.2嵌入式C程序设计中的位运算8.3嵌入式C程序设计中的几点说明8.4嵌入式C程序设计格式8.5过程调用标准ATPCS与AAPCS8.6ARM汇编语言与嵌入式C混合编程3TM38.2嵌入式C程序设计中的位运算在嵌入式程序设计中,位操作是最常用的运算之一,因为在很多情况下要对寄存器中的某位或某个管脚进行操作,这些都需要用位操作来完成。位运算符描述位运算符描述&按位与~取反|按位或<<左移^按位异或>>右移4TM48.2.1按位与操作按位与运算符“&”是把参与运算的两个操作数所对应的各个二进制位进行按位相与。只有当对应的两个二进制位全为1时,结果才为1,否则为0。参与运算的两个操作数以补码形式出现。例如7&3,补码分别为00000111与00000011按位与运算后结果为00000011等于十进制的3。按位与操作可以实现将特定的位清零,也可以用于提取出某数的指定位。5TM58.2.1按位与操作例8-1通过取出LedStatus的特定位进行判断选择对端口B的数据寄存器进行特定的清零,控制LED1和LED2灯的点亮,其中端口B(rPDATAB)第2、3管脚分别连接LED1、LED2(管脚从0管脚开始编号,低电平点亮,程序不更改其他位)解:(1)根据LedStatus第0位的状态确定是否点亮LED1if((LedStatus&0x01)==0x01)rPDATAB=rPDATAB&0xFFFFFFFB;(2)根据LedStatus第1位的状态确定是否点亮LED2if((LedStatus&0x02)==0x02)rPDATAB=rPDATAB&0xFFFFFFF7;6TM68.2.2按位或操作按位或操作运算符“|”是把参与运算的两个操作数对应的各个二进制位进行按位相或。对应的两个二进制位中只要有一个为1,结果就为1,当两个对应的二进制位都为0时,结果位为0。参与运算的两个操作数均以补码形式出现。例如7|3,7的补码为00000111,3的补码为00000011,结果为00000111。按位与操作可以实现将特定位的置位操作,也可以用于提取出某数的指定位。7TM78.2.2按位或操作例8-2通过取出LedStatus的特定位进行判断选择对端口B的数据寄存器进行特定的置1,控制LED1和LED2灯的熄灭,其中端口B(rPDATAB)第2、3管脚分别连接LED1、LED2(管脚从0管脚开始编号,低电平点亮,程序不更改其他...