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基础汇编指令

一、伪操作

指令描述例子
.byte定义单字节数据.byte 0x12
.short定义双字节数据.short 0x1234
.long定义一个 4 字节数据.long 0x12345678
.equ赋值语句,格式为:.equ 常量名,不占用内存.equ num, 0x12,表示 num=0x12
.align数据字节对齐.align 4 表示 4 字节对齐
.end表示源文件结束
.global定义一个全局符号,可以是函数或者变量.global symbol

二、数据传输指令

指令描述例子
mov将立即数或者寄存器中的值传输到一个另一个通用寄存器中mov r0, r1
mrs将数据从特殊功能寄存器传输到通用寄存器中mrs r0, cpsr
msr将数据从通用寄存器传输到特殊功能寄存器中msr cpsr, r0

三、存储器访问指令

指令描述例子
ldr将4字节数据从内存读取到寄存器中LDR Rd, [Rn , #offset]
str将4字节数据从寄存器写到内存中STR Rd, [Rn, #offset]

ldr和str后面可以加上b或者h,例如ldrh是加载半字数据到寄存器中,寄存器的高16位会被清零,ldrb是加载字节数据到寄存器中,寄存器的高24位会被清零。
arm汇编中的ldr和mov有一些像,但是mov只能加载一个立即数,ldr可以将一个地址加载到通用寄存器,换句话说,ldr和mov都可以将一个值加载到通用寄存器中。

四、入栈和出栈

指令描述例子
push {reg list}将寄存器入栈push {r0~r2, r3}
pop {reg list}将寄存器出栈pop {r0~r2, r3}
stmfd sp!, {reg list}将寄存器入栈stmfd sp!, {r0~r2, r3}
ldmfd sp!, {reg list}将寄存器出栈ldmfd sp!, {r0~r2, r3}

五、跳转指令

指令描述例子
b label跳转到label(+/-2KB)b start
bl label带返回地址的的跳转bl start
bx reg间接跳转,将跳转到寄存器所在地址bx r0
blx reg带返回地址的间接跳转,将跳转到寄存器所在地址blx r0

七、算数运算

指令例子描述
ADD Rd, Rn, RmRd = Rn + Rm加法运算,指令为 ADD
ADD Rd, Rn, #immedRd = Rn + #immed
ADC Rd, Rn, RmRd = Rn + Rm + 进位带进位的加法
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:38:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 2:10:48-

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