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 指令集和Thumb 指令集 -> 正文阅读

[嵌入式]【ARM汇编】ARM 指令集和Thumb 指令集

关于指令集

指令集是汇编的基础,是芯片的架构,不懂指令集看着汇编就只能干瞪眼了,所以把ARM指令集全都记录下来做个笔记。

可能会和WIN32的指令集有出入,比如WIN32中MOV可以把数据从内存中加载到寄存器中去,但在ARM的RISC结构中,MOV只能将数据从寄存器移动到寄存器,WIM32的看小甲鱼的视频。说白了X86是复杂指令集(CISC),ARM是精简指令集(RISC)。
复杂指令集是将很多操作集成起来,精简是可以很细节的去处理。
51的看刘健老师
ARM汇编初学者视频

ARM指令集

ARM指令是32位的,而Thumb指令时16位的。
如果在1K的存储空间中,可以放32条ARM指令,就可以放64条Thumb指令,因此在存放Thunb指令时,代码密度高。

助记符操作
MOV移动
ADD
SUB
RSB反减
CMP比较
TST测试
AND逻辑与
EOR逻辑或
LSL逻辑左移
ASR算术右移
MUL有符号长乘
SMUL
SMLAL有符号长累乘
MSR移入状态寄存器
B分支
BX分支与交换
LDR载入字
LDRH载入半字
LDRB载入字节
LDRSH载入有符号半字
LDRSB载入有符号字节
LDM载入乘
LDRBT转化载入寄存器字节
LDRT转化载入寄存器
MCR移入协处理器
LDC协处理器数据处理
MVN移非
ADC带进位加
SBC带进位减
RSC带进位反减
CMN比较取反
TEQ测试等价
BIC位清零
ORR逻辑 ( 包括 ) 或
MLA累乘
UMULL无符号长乘
UMLAL无符号长累乘
MRS由状态寄存器移出
BL分支与链接
SWI软件中断
STR恢复字
STRH恢复半字
STRB恢复字节
STRBT转化保存寄存器字节
STRT转化保存寄存器
STM多路保存
SWPB交换字节
MRC由协处理器移出
STC由协处理器保存

Thumb指令集

PS:和C不同,在汇编中可不区分大小写。

助记符操作
MOV移动
ADD
SUB
CMP比较
TST测试
AND逻辑与
EOR逻辑或
LSL逻辑左移
ASR算术右移
MUL
B分支
BX分支与交换
LDR载入字
LDRH载入半字
LDRB载入字节
LDRSH载入有符号半字
LDMIA载入乘
PUSH将寄存器推入堆栈
MVN移非
ADC带进位加
SBC带进位减
CMN比较取反
NEG去反
BIC位清零
ORR逻辑 ( 包括 ) 或
LSR逻辑右移
ROR右转
BL分支与链接
SWI软件中断
STR保存字
STRH保存半字
STRB保存字节
LDRSB载入有符号字节
STMIA多路保存
PUSH 将寄存器推入堆栈 POP将寄存器推出堆栈

Thumb不是完整的指令集
Thumb是ARM 指令集的一个子集
Thumb指令可以看做是ARM指令压缩形式的子集,是针对代码密度【1】的问题而提出的,它具有16为的代码密度。Thumb不是一个完整的体系结构,不能指望处理程序只执行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要时,可借助完善的ARM指令集,例如:所有异常自动进入ARM状态。

在编写Thumb指令时,先要使用伪指令CODE16声明,而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。编写ARM指令时,可使用伪指令CODE32声明。

Thumb 指令集分为:

  • 分支指令
  • 数据处理指令
  • 载入与保存指令
  • 批量载入与保存指令
  • 异常产生指令

Thumb模式下,R0~R7八个通用功能寄存器有效。与执行ARM指令时的R0~R7相同。 某些 Thumb 指令还访问程序计数器 (ARM 寄存器 15)、链接寄存器 (ARM 寄存器 14) 及
堆栈指针 (ARM 寄存器 13)。其他指令对 ARM 寄存器 8 ~ 15 的访问有所限制。

简单的指令集操作

mov ax,18		;18送入AX	ax=18
mov ah,78		;78送入AH		ah=78
add ax,8		;将寄存器AX中的数值加上8	ax+=8
LDR R0,0x1234	;0x1234这个地址存放到R0中

初学汇编,内容仅为笔记和参考。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:27:28  更:2022-04-04 12:30:11 
 
开发: 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 4:47:46-

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