IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> arm汇编教程笔记 -> 正文阅读

[嵌入式]arm汇编教程笔记

关键字

.globl

用**.globl**声明一个变量之后,连接器将会引用它。

.word

.word用于申请一个字大小的存储空间

label

label:instruction @ comment

label 即标号,表示地址位置,有些指令前面可能会有标号,这样就可以通过这个标号得到

指令的地址,标号也可以用来表示数据地址。注意 label 后面的“:”,任何以“:”结尾的标识

符都会被识别为一个标号。

instruction 即指令,也就是汇编指令或伪指令。

**@**符号,表示后面的是注释,就跟 C 语言里面的“/”和“/”一样,其实在 GNU 汇编文

件中我们也可以使用“/”和“/”来注释。

comment 就是注释内容。

MOV

将R1里面的数据赋值到R0中

e.g.

mov R0, R1

mov R0, #0X12

MRS

将特殊寄存器CPSR中的数值复制到R0中

e.g.

MRS R0, CPSR

MSR

MSR 指令用来将普通寄存器的数据传递给特殊寄存器,也是写特殊寄存器

e.g.

MSR CPSR, R0

LDR

LDR 主要用于从存储加载数据到寄存器 Rx 中,LDR 也可以将一个立即数加载到寄存器 Rx中,LDR 加载立即数的时候要使用“=”,而不是“#”。

e.g.

LDR R0**, =0X0209C004 @将寄存器地址 0X0209C004 加载到 R0 中,即 R0=**0X0209C004

LDR R1**, [R0]** @读取地址 0X0209C004 中的数据到 R1 寄存器中

STR

将 Rd 中的数据写入到存储器中的 Rn+offset 位置

e.g.

LDR R0**, =0X0209C004 @将寄存器地址 0X0209C004 加载到 R0 中,即 R0=**0X0209C004

LDR R1**, =0X20000002 @R1 保存要写入到寄存器的值,即 R1=**0X20000002

STR R1**, [R0]** @将 R1 中的值写入到 R0 中所保存的地址中

STR Rd, [Rn, #offset]

将 Rd 中的数据写入到存储器中的 Rn+offset 位置

PUSH

STMFD SP!

将寄存器列表存入栈中。

PUSH {R0~R3, R12} @将 R0~R3 和 R12 压栈

POP

LDMFD SP!

从栈中恢复寄存器列表。

POP {LR} @先恢复 LR

POP {R0~R3,R12} @在恢复 R0~R3,R12

B

跳转到 label,如果跳转范围超过了+/-2KB,可以指定 B.W

BX

间接跳转,跳转到存放于 Rm 中的地址处,并且切换指令集

BL

跳转到标号地址,并将返回地址保存在 LR 中。

BLX

结合 BX 和 BL 的特点,跳转到 Rm 指定的地址,并将返回地址保存在 LR 中,切换指令集。

算数运算

指令翻译含义
ADD Rd, Rn, RmRd = Rn + Rm加法运算,指令为 ADD
ADD Rd, Rn, #immedRd = Rn + #immed
ADC Rd, Rn, RmRd = Rn + Rm + 进位带进位的加法运算,指令为 ADC
ADC Rd, Rn, #immedRd = Rn + #immed +进位
SUB Rd, Rn, RmRd = Rn – Rm减法
SUB Rd, #immedRd = Rd - #immed
SUB Rd, Rn, #immedRd = Rn - #immed
SBC Rd, Rn, #immedRd = Rn - #immed – 借位带借位的减法
SBC Rd, Rn ,RmRd = Rn – Rm – 借位
MUL Rd, Rn, RmRd = Rn * Rm乘法(32 位)
UDIV Rd, Rn, RmRd = Rn / Rm无符号除法
SDIV Rd, Rn, RmRd = Rn / Rm有符号除法

逻辑运算

指令翻译含义
AND Rd, RnRd = Rd &Rn按位与
AND Rd, Rn, #immedRd = Rn &#immed
AND Rd, Rn, RmRd = Rn & Rm
ORR Rd, RnRd = Rd |Rn按位或
ORR Rd, Rn, #immedRd = Rn |#immed
ORR Rd, Rn, RmRd = Rn |Rm
BIC Rd, RnRd = Rd & (~Rn)位清除
BIC Rd, Rn, #immedRd = Rn & (~#immed)
BIC Rd, Rn , RmRd = Rn & (~Rm)
ORN Rd, Rn, #immedRd = Rn |(#immed)按位或非
ORN Rd, Rn, RmRd = Rn |(Rm)
EOR Rd, RnRd = Rd ^ Rn按位异或
EOR Rd, Rn, #immedRd = Rn ^ #immed
EOR Rd, Rn, RmRd = Rn ^ Rm
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:38:55  更:2022-01-17 11:41:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:37:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码