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常用汇编指令

1、常用指令

(1)LDR、STR、MOV

LDR R0,[R1]  #R0 = *R1,读取R1指向内存区域中的内容,存入R0
STR R0,[R1]  #*R1 = R0,将R0写入R1指向的内存区域
MOV R0,R1    #R0 = R1
MOV R0,#0X10 #R0 = 0x10
LDR R0,=0X12345678 #R0 = 0x12345678    #没有等号的话就是将0x12345678指向内存的值取出放入R0
    伪指令,所有指令是32位,但MOV不能一次赋32位的值,因为其本身有几位用来表示寄存器和指令

(2)add、sub

add r0,r1,#4 #r0=r1+4
sub r0,r1,#4 #r0=r1-4
sub r0,r1,r2 #r0=r1-r2

(3)B、bl

B           #无条件跳转指令
bl main     #跳转到main,并把下一条指令地址保存在lr寄存器中

(4)ldmia、stmdb

//栈是从高地址往下存的
ldmia sp,{fp,sp,pc}
    1.ldm为读内存,m为many
    2.高编号寄存器存在高地址内存的值,和后边写的顺序无关
    3.ia为increase after,即先读后增
stmdb sp!,{sp,ip,lr,pc}
    1.db为decrease before,即先减后存
    2.感叹号表示SP等于最终被修改的SP值

(5)MRS、MSR

MRS: 将程序状态寄存器的内容传送到通用寄存器中。MRS <Rd>,CPSR/SPSR
MSR: 将操作数的内容传送到程序状态寄存器的特定域中。MSR CPSR/SPSR,<Rd>
    MRC和MCR类似。

(6)teq、cmp

teq:测试寄存器和寄存器/立即数的值是否相等,如果相等置CPSR中条件位为1
    teq r0, r1           
    ADDeq  R0, R0, #1;  #若R0 == R1, eq为真,则R1=R1 + 1
cmp:比较两个操作数的大小
    CMP  R0, R1;
    ADDHI R0, R0, #1;  #若R0>R1,HI为真,则R0=R0+1
    ADDLS R1, R1, #1;  #若R0<=R1,LS为真,则R1=R1+1

(7)adr指令:计算相对偏移,寻址空间为前后4K

start:MOV r0,#10
ADR  r4,start     #等价于SUB r4,pc,#0xc,因为当前的pc值为此条指令+8 ,所以-0xc

2、其它?

ADC  带进位的加法指令
ADD 加法指令
AND  逻辑与指令
B    跳转指令
BIC  位清零指令
BL   带返回的跳转指令
BX   带状态切换的跳转指令,最低位为1时,执行Thumb指令,为0时,执行ARM指令执行
BLX  带返回和状态切换的跳转指令
CDP  协处理器数据操作指令
CMN  比较反值指令
CMP 比较指令
EOR 异或指令
LDC 存储器到协处理器的数据传输指令
LDM 加载多个寄存器指令
LDR 存储器到寄存器的数据传输指令
MCR 从ARM寄存器到协处理器寄存器的数据传输指令
MLA 乘加运算指令
MOV 数据传送指令
MRC 从协处理器寄存器到ARM寄存器的数据传输指令
MRS 传送CPSR或SPSR的内容到通用寄存器指令
MSR 传送通用寄存器到CPSR或SPSR的指令
MUL 32位乘法指令
MLA 32位乘加指令
MVN 数据取反传送指令
ORR 逻辑或指令
RSB 逆向减法指令
RSC 带借位的逆向减法指令
SBC 带借位减法指令
STC 协处理器寄存器写入存储器指令
STM 批量内存字写入指令
STR 寄存器到存储器的数据传输指令
SUB 减法指令
SWI 软件中断指令
SWP 交换指令
TEQ 相等测试指令
TST 位测试指令
--------------------------------------------------
条件码  助记符后缀    标志             含义
0000       EQ       Z置位             相等
0001       NE       Z清零             不相等
0010       CS       C置位             无符号数大于或等于
0011       CC       C清零             无符号数小于
0100       MI       N置位             负数
0101       PL       N清零             正数或零
0110       VS       V置位             溢出
0111       VC       V清零             未溢出
1000       HI       C置位Z清零        无符号数大于
1001       LS       C清零Z置位        无符号数小于或等于
1010       GE       N等于V            有符号数大于或等于
1011       LT       N不等于V          有符号数小于
1100       GT       Z清零且[N等于V]   有符号数大于
1101       LE       Z置位或[N不等于V] 有符号数小于或等于
1110       AL       忽略              无条件执行

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

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