嵌入式硬件第五弹——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指向栈顶下一个空位置。
相关推荐
weixin_669545202 小时前
BC915E 5V/3.6A输入 两节升压充电IC,升压充电效率95%,输入最大支持18W,ESOP8 兼容IP2325
人工智能·单片机·嵌入式硬件·硬件工程·信息与通信
Heartache boy2 小时前
野火STM32_HAL库版课程笔记-空气、烟雾传感器公式换算
笔记·stm32·嵌入式硬件
玻璃杯中水2 小时前
硬件知识总结梳理-1(电阻+电容)
单片机·嵌入式硬件
EnglishJun2 小时前
ARM嵌入式学习(十一)--- IMX6ULL时钟配置
arm开发·学习
yuan199973 小时前
STM32F407 TIM3正交编码器应用指南
stm32·单片机·嵌入式硬件
lin辰傍边的风4 小时前
RS485收发架构移植要点
stm32·单片机·嵌入式硬件
π同学4 小时前
基于CH343的一种自动烧录模式电路设计分析
单片机·嵌入式硬件·eps32
国科安芯4 小时前
商业航天视角下角度编码传感器的应用与MCU的集成适配
大数据·网络·单片机·嵌入式硬件·架构·制造·安全性测试
森利威尔电子-4 小时前
森利威尔SL3041B 替换LM5018 100V降压3.3V 5V 12V恒压芯片
单片机·嵌入式硬件·集成电路·芯片·电源芯片