嵌入式硬件第五弹——ARM(2)

(续接上篇)

1.7 立即数

立即数:直接写在指令里的数值,不需要从寄存器、内存里读取。

判断规则:

  • 数值范围0~0xFF(一定是);
  • 二进制最高位1与最低位1之间位数不超过8位;
  • 二进制序列凑够8位后右边偶数个0。

2. 汇编指令

2.1 指令

2.1.1 ldr & str

ldr

  • 功能1:向寄存器中加载非立即数
  • 功能2:将RAM中的数据加载到寄存器

str

  • 功能:将寄存器中的数据写入RAM指定空间中

2.1.2 bic & orr

bic: 将寄存器中的值某几位清零(取决于立即数哪几位为1)

orr:将寄存器中的值某几位值1(取决于立即数哪几位为1)

2.1.3 b指令

无条件跳转

  • bl:函数调用时,会将返回地址保存到lr寄存器
  • b:函数调用时,无法将返回地址保存到lr寄存器
  • bx:跳转到lr寄存器对应返回地址

汇编调用C语言传参时:

  • 如果参数少于或等于4个时,可以通过通用寄存器R0 - R3进行传参
  • 当参数超过4个时,必须通过栈进行传参(入栈保护 出栈恢复)
  • C语言函数返回的结果保存到R0寄存器

2.1.4 cpsr寄存器操作

  1. 将cpsr寄存器中的值读到通用寄存器中R0

  2. 将R0寄存器中低5位的值先清0 bic

  3. 将R0寄存器中的低5位置设置为:10000 orr

  4. 将R0寄存器中的值回写到CPSR寄存器

2.1.5 mrs & msr

mrs指令:读取某个特殊寄存器的值到通用寄存器

msr指令:将某个通用寄存器的值写入到特殊寄存器

2.2 栈的分类

满减栈(ARM默认使用)、空减栈、满增栈、空增栈

  • 减栈:入栈时sp向下移动,地址变小;
  • 增栈:入栈时sp向上移动,地址变大;
  • 满栈:sp指向栈顶有效数据;
  • 空栈:sp指向栈顶下一个空位置。
相关推荐
桀人9 小时前
USART帧格式
网络·stm32·单片机·嵌入式硬件
qq_448011169 小时前
如何烧录TAU804的固件
单片机·嵌入式硬件
Jason_zhao_MR9 小时前
新一代电能数据采集终端方案
linux·人工智能·嵌入式硬件·fpga开发·嵌入式
Cerman9 小时前
商用处理器多点开花,边缘计算快速增长
嵌入式硬件·智能硬件
llilian_1611 小时前
失真度校准装置有哪些重点指标?失真度测量仪校准
功能测试·嵌入式硬件·51单片机·软件工程
恒锐丰科技林技术员11 小时前
EG3112 半桥栅极驱动芯片解析与应用
经验分享·嵌入式硬件·硬件工程
mftang13 小时前
CAN总线控制段:位级结构、DLC编码、代际扩展与错误处理的系统性分析
单片机·嵌入式硬件·can总线·控制段·数据长度代码
Jason_zhao_MR21 小时前
Linux与实时控制如何兼得
linux·嵌入式硬件·机器人·工业控制
BSD_CGQ1 天前
FSR传感器STM32 DMA高速采样工程实现(高精度、低CPU占用)
stm32·单片机·嵌入式硬件·压力传感器·源头工厂·柔性薄膜压力传感器·可变电阻压力传感器
芯岭技术郦1 天前
32 位 ARM® Cortex®-M0+ 内核MCU普冉MS32C001-C
单片机·嵌入式硬件