Cortex-M3 RTOS常用汇编指令
IMPORT关键字
IMPORT伪操作告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号,而且不论本源文件是否实际引用该符号,该符号都将被加入到本源文件的符号表中。
LDR指令
LDR指令的作用:将 存储器地址 所指地址处连续的4个字节(1个字)的数据传送到目的寄存器中。
LDR指令的格式:
LDR{条件} 目的寄存器 <存储器地址>
LDR指令的寻址方式比较灵活,只描述需要使用的格式:
LDR R0,=0xE000ED04
将立即数0xE000ED04设置到R0寄存器中去
LDR R0, =label
将label的绝对地址地址写入R0寄存器
STR指令
STR指令的作用:STR指令用于从源寄存器中将一个32位的字数据传送到存储器中.
STR指令的格式为:
STR{条件} 源寄存器,<存储器地址>
STR R0,[R1]
将寄存器R0中的字节数据写入以R1为地址的存储器中。
MRS指令
(Move to Register from State register)
MRS指令的作用:将特殊寄存器(状态寄存器CPSR和SPSR)的内容传送至通用寄存器。
MRS指令的格式为:
MRS{<条件码>}Rd,CPSR}SPSR
MRS R0, PSP
将PSP寄存器的值读取到R0寄存器中去
MSR指令
MSR指令的作用:将通用寄存器的内容传送至特殊寄存器。
MSR指令的格式为:
MSR{<条件码>}Rd,CPSR}SPSR
MSR PSP,R0
将R0寄存器的值读取到PSP寄存器中去
CBZ指令
CBZ指令的作用是: 比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)
CBZ指令的格式为
CBZ Rn, label
CBZ R0, label
如果R0寄存器的值为0 ,那就跳转到label位置执行,如果不为0就继续执行下一句代码
ORR指令
ORR指令的作用: ORR指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。
ORR指令的格式为:
ORR{条件}{S} 目的寄存器,操作数1,操作数2
ORR LR, LR, #0x04
将LR寄存器的值或上0x04,再将获得的值写入LR寄存器,
BX指令
BX指令的作用:BX指令是ARM指令系统中的带状态切换跳转指令。BX指令跳转到指令中所指定的目标地址,若目标地址的bit[0]为0,则跳转时自动将CPSR中的标志位T复位,即把目标地址的代码解释为ARM代码;若目标地址的bit[0]为1,则跳转时自动将CPSR中的标志位T置位,即把目标地址的代码解释为Thumb代码。
BX 指令的格式为:
BX{条件} 目标地址
BX LR
跳转至LR寄存器所在地址执行。
STMDB指令
stm: (store much)多数据存储,将寄存器的值存到地址上
stmdb(地址先减而后完成操作) stmfd(满递减堆栈);
STMDB R0!, {R4-R11}
将依次压入R4-R11的值存入R0所存地址处的数据, 先减地址,再压入数据。
LDMIA指令
ldm: (load much)多数据加载,将地址上的值加载到寄存器上
ldmia 完成操作而后地址递增
LDMIA R0!, {R4-R11}
将R0所在地址的数据依次恢复到R4-R11中,先赋值,在加地址
stmdb和ldmia指令一般配对使用,stmdb用于将寄存器存到某个地址上(一般是栈地址),ldmia用于将地址上
Cortex-M3 RTOS常用汇编指令相关推荐
- 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码...
浅析VS2010反汇编 2015年07月25日 21:53:11 阅读数:4374 第一篇 1. 如何进行反汇编 在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的反汇编信息.如下图所示. ...
- RISC-V 常用汇编指令
RISCV 常用汇编指令 相关寄存器 寄存器 ABI 名 用途 Saver x0 zero 读取时总为 0, 写入时不起任何效果 - x1 ra 存放函数返回地址 (return address) C ...
- Cortex-A7 常用汇编指令
Cortex-A7 常用汇编指令 一.处理器内部数据传输指令 1.mov 将数据从一个寄存器拷贝到另外一个寄存器,或者将一个立即数传递到寄存器里面 MOV R0,R1 @将寄存器 R1 中的数据传递给 ...
- 常用汇编指令(七大类)
常用汇编指令 汇编语言指令大致分为以下几类 一.传送类指令 二.算数运算类指令 三.位操作指令 四.串操作指令 五.控制转移类指令 六.处理器控制类指令 七.汇编指令伪指令 一.传送类指令 1.数据传 ...
- 逆向中常见寄存器及常用汇编指令
寄存器 通用寄存器 (前八个) 32位 16位 作用 EAX(累加器) AX 作用于操作数和结果的数据 EBX(基址寄存器) BX DS段中的数据指针 ECX(计数器) CX 用于字符串和循环操作 E ...
- x64 ASM 常用汇编指令
语法习惯 这里主要说AT&T风格的汇编语言风格.因为gdb看反汇编默认的风格就是AT&T风格的,Intel风格的这里就不做介绍. 立即数,$ 开头 寄存器,% 开头 取地址里面的值,偏 ...
- 常用汇编指令对标志位的影响
加法指令 ADD (addition) 指令对标志位的影响:CF=1 最高有效位向高位有进位CF=0 最高有效位向高位无进位OF=1 两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反. ...
- Linux常用汇编指令
一. 数据传输指令 1. 通用数据传输指令 mov 传送字或字节 ( movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 movabsq 传送绝对的四字 ) movsx 先符 ...
- Linux学习笔记---Cortex-A7 常用汇编指令
MOV指令 MOV R0,R1 @将寄存器R1中的数据传递给R0 MOV R0,#0X12 @将立即数0X12传递给R0寄存器 MRS指令 MRS R0,CPSR @将特殊 ...
- MCS-51单片机常用汇编指令大全
1.数据传送指令 寄存器寻址: MOV R0,30H :把30H单元内容赋给寄存器R0 直接寻址: MOV ACC,30H ;把30H单元内容赋给累加器A 立即寻址: MOV R0,#30H ;把立即 ...
最新文章
- GDAL库简介以及在Windows下编译过程
- 中国唯一的“国际数字化转型专家”,阿里云获Forrester认可
- Xamarin Essentials教程实现数据的传输功能实例
- 【Python-ML】最小二乘法
- IIS6中配置PHP
- RT2870 5370等移植(ARM,X86)
- 日志库 winston 的学习笔记 - logger.info 打印到控制台上的实现原理
- css --- [学习笔记]背景图片小结 css三大特性
- OpecCV颜色分割
- CrackMe022
- TX2Ubuntu16.04上安装 kinectV2
- Java中RMI远程调用demo
- 使用WUCDCreator将SCSI、RAID、SATA、SAS驱动程序集成到光盘中
- 6.6 RTC Dev Meetup|开发者硬核个人成长指南——如何领先于80% 的同行?
- TPT中脚本评估的正确打开方式 (上):强大的内置函数库
- C++利用opencv 按顺序遍历文件夹图片
- 【量子学习笔记】纯态、混合态、直积态及纠缠态的概念区分及理解
- 基于51单片机红外热释电人体感应蓝牙防盗报警器系统设计
- B站课代表神器--一键获取B站视频的完整字幕
- swiper插件的使用(快速实现轮播图)