转http://blog.csdn.net/gaojinshan/article/details/11534569

16位数据操作指令 
名字 功能
ADC  带进位加法(ADD with Carry) 
ADD  加法 
AND  按位与。这里的按位与和C的”&”功能相同 
ASR  算术右移(Arithmetic Shift Right) 
BIC  按位清零(把一个数跟另一个无符号数的反码按位与) 
CMN  负向比较(把一个数跟另一个数据的二进制补码相比较) 
CMP  比较(Compare,比较两个数并且更新标志) 
CPY  把一个寄存器的值拷贝(COPY)到另一个寄存器中 
EOR  近位异或 
LSL  逻辑左移(Logic Shift Left) 
LSR  逻辑右移(Logic Shift Right) 
MOV  寄存器加载数据,既能用于寄存器间的传输,也能用于加载立即数 
MUL  乘法(Multiplication)
MVN  加载一个数的 NOT值(取到逻辑反的值)
NEG  取二进制补码
ORR  按位或
ROR  循环右移
SBC  带借位的减法
SUB  减法(Subtraction)
TST  测试(Test,执行按位与操作,并且根据结果更新Z)
REV  在一个32位寄存器中反转(Reverse)字节序
REVH  把一个32位寄存器分成两个(Half)16位数,在每个16位数中反转字节序
REVSH  把一个32位寄存器的低16位半字进行字节反转,然后带符号扩展到32位
SXTB  带符号(Signed)扩展一个字节(Byte)到 32位
SXTH  带符号(Signed)扩展一个半字(Half)到 32位
UXTB  无符号(Unsigned)扩展一个字节(Byte)到 32位
UXTH  无符号(Unsigned)扩展一个半字(Half)到 32位

16位转移指令 
名字 功能
B  无条件转移(Branch)
B<cond>  有条件(Condition)转移
BL  转移并连接(Link)。用于呼叫一个子程序,返回地址被存储在LR中
CBZ  比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)
CBNZ  比较,如果结果非零(Non Zero)就转移(只能跳到后面的指令)
IT  If-Then

16位存储器数据传送指令 
名字 功能
LDR  从存储器中加载(Load)字到一个寄存器(Register)中
LDRH  从存储器中加载半(Half)字到一个寄存器中
LDRB  从存储器中加载字节(Byte)到一个寄存器中
LDRSH  从存储器中加载半字,再经过带符号扩展后存储一个寄存器中
LDRSB  从存储器中加载字节,再经过带符号扩展后存储一个寄存器中
STR  把一个寄存器按字存储(Store)到存储器中
STRH  把一个寄存器存器的低半字存储到存储器中
STRB  把一个寄存器的低字节存储到存储器中
LDMIA  加载多个字,并且在加载后自增基址寄存器
STMIA  存储多个字,并且在存储后自增基址寄存器
PUSH  压入多个寄存器到栈中
POP  从栈中弹出多个值到寄存器中

其它16位指令 
名字 功能
SVC  系统服务调用(Service Call)
BKPT  断点(Break Point)指令。如果调试被使能,则进入调试状态(停机)。
NOP  无操作(No Operation)
CPSIE  使能 PRIMASK(CPSIE i)/FAULTMASK(CPSIE f)——清零相应的位
CPSID  除能 PRIMASK(CPSID i)/FAULTMASK(CPSID f)——置位相应的位

32位数据操作指令
名字 功能
ADC  带进位加法
ADD  加法
ADDW  宽加法(可以加 12 位立即数)
AND  按位与(原文是逻辑与,有误——译注)
ASR  算术右移
BIC  位清零(把一个数按位取反后,与另一个数逻辑与)
BFC  位段清零
BFI  位段插入
CMN  负向比较(把一个数和另一个数的二进制补码比较,并更新标志位)
CMP  比较两个数并更新标志位
CLZ  计算前导零的数目
EOR  按位异或
LSL  逻辑左移
LSR  逻辑右移
MLA  乘加
MLS  乘减
MOVW  把 16 位立即数放到寄存器的底16位,高16位清0
MOV  加载16位立即数到寄存器(其实汇编器会产生MOVW——译注)
MOVT  把 16 位立即数放到寄存器的高16位,低 16位不影响
MVN  移动一个数的补码
MUL  乘法
ORR  按位或(原文为逻辑或,有误——译注)
ORN  把源操作数按位取反后,再执行按位或(原文为逻辑或,有误——译注)
RBIT  位反转(把一个 32 位整数先用2 进制表达,再旋转180度——译注)
REV  对一个32 位整数做按字节反转
REVH/REV16 对一个32 位整数的高低半字都执行字节反转
REVSH  对一个32 位整数的低半字执行字节反转,再带符号扩展成32位数
ROR  圆圈右移
RRX  带进位的逻辑右移一格(最高位用C 填充,且不影响C的值——译注)
SFBX  从一个32 位整数中提取任意的位段,并且带符号扩展成 32 位整数
SDIV  带符号除法
SMLAL  带符号长乘加(两个带符号的 32 位整数相乘得到 64 位的带符号积,再把积加到另一个带符号 64位整数中)
SMULL  带符号长乘法(两个带符号的 32 位整数相乘得到 64位的带符号积)
SSAT  带符号的饱和运算
SBC  带借位的减法
SUB  减法
SUBW  宽减法,可以减 12 位立即数
SXTB  字节带符号扩展到32位数
TEQ  测试是否相等(对两个数执行异或,更新标志但不存储结果)
TST  测试(对两个数执行按位与,更新Z 标志但不存储结果)
UBFX  无符号位段提取
UDIV  无符号除法
UMLAL  无符号长乘加(两个无符号的 32 位整数相乘得到 64 位的无符号积,再把积加到另一个无符号 64位整数中)
UMULL  无符号长乘法(两个无符号的 32 位整数相乘得到 64位的无符号积)
USAT  无符号饱和操作(但是源操作数是带符号的——译注)
UXTB  字节被无符号扩展到32 位(高24位清0——译注)
UXTH  半字被无符号扩展到32 位(高16位清0——译注)

32位存储器数据传送指令 
名字 功能
LDR  加载字到寄存器
LDRB  加载字节到寄存器
LDRH  加载半字到寄存器
LDRSH  加载半字到寄存器,再带符号扩展到 32位
LDM  从一片连续的地址空间中加载多个字到若干寄存器
LDRD  从连续的地址空间加载双字(64 位整数)到2 个寄存器
STR  存储寄存器中的字
STRB  存储寄存器中的低字节
STRH  存储寄存器中的低半字
STM  存储若干寄存器中的字到一片连续的地址空间中
STRD  存储2 个寄存器组成的双字到连续的地址空间中
PUSH  把若干寄存器的值压入堆栈中
POP  从堆栈中弹出若干的寄存器的值

32位转移指令 
名字 功能
B  无条件转移
BL  转移并连接(呼叫子程序)
TBB  以字节为单位的查表转移。从一个字节数组中选一个8位前向跳转地址并转移
TBH  以半字为单位的查表转移。从一个半字数组中选一个16 位前向跳转的地址并转移

其它32位指令 
LDREX  加载字到寄存器,并且在内核中标明一段地址进入了互斥访问状态
LDREXH  加载半字到寄存器,并且在内核中标明一段地址进入了互斥访问状态
LDREXB  加载字节到寄存器,并且在内核中标明一段地址进入了互斥访问状态
STREX  检查将要写入的地址是否已进入了互斥访问状态,如果是则存储寄存器的字
STREXH  检查将要写入的地址是否已进入了互斥访问状态,如果是则存储寄存器的半字
STREXB  检查将要写入的地址是否已进入了互斥访问状态,如果是则存储寄存器的字节
CLREX  在本地的处理上清除互斥访问状态的标记(先前由 LDREX/LDREXH/LDREXB做的标记)
MRS  加载特殊功能寄存器的值到通用寄存器
MSR  存储通用寄存器的值到特殊功能寄存器
NOP  无操作
SEV  发送事件
WFE  休眠并且在发生事件时被唤醒
WFI  休眠并且在发生中断时被唤醒
ISB  指令同步隔离(与流水线和 MPU等有关——译注)
DSB  数据同步隔离(与流水线、MPU 和cache等有关——译注)
DMB  数据存储隔离(与流水线、MPU 和cache等有关——译注)

ARM(CM3)的汇编指令的更多相关文章

  1. [zhuan]arm中的汇编指令

    http://blog.csdn.net/qqliyunpeng/article/details/45116615 一. 带点的(一般都是ARM GNU伪汇编指令)   1. ".text& ...

  2. ARM中的---汇编指令

    一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是"以下是代码段& ...

  3. ARM体系结构和汇编指令

    第一节 可编程器件的编程原理 1. 可编程器件的特点 1 . CPU在固定频率的时钟控制下节奏运行 2 . CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 3 . 这些可以被CPU解 ...

  4. ARM中的汇编指令

    Arm指令,32位的指令集,一共有16条的基本指令,每条指令都可以按条件执行, 指令都是32bit的,高四位是条件码[31:28], Thumb指令,16位的指令集,执行效率比arm指令集要低,但是节 ...

  5. ARM汇编指令调试方法

    学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...

  6. 常用ARM汇编指令

    常用ARM汇编指令 [日期:2012-07-14] 来源:Linux社区  作者:xuyuanfan77 [字体:大 中 小]     在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初 ...

  7. ARM 汇编指令

    ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通 ...

  8. ARM汇编指令(未完待续)

    ARM指令自己在看的时候,看完之后就忘了,根本记不住,而且有些ARM汇编指令在平常的时候可能根本就用不到,所以也没必要把所有的ARM指令都去记忆,所以自己就想着不去一遍一遍的复习ARM指令,而是在平常 ...

  9. ARM汇编指令的一些总结-转

    ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...

  10. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 :  -- AR ...

随机推荐

  1. Linux命令之kill

    kill [-s signal | -p] [ --] pid… kill –l [signal] 终止指定进程.命令kill将指定的信号发送到指定的进程或进程组.如果没有指定信号,则发送SIGTER ...

  2. 10、Flask实战第10天:视图使用装饰器

    在实际开发中,我们有时候会用到自己定义装饰器并应用到函数视图或者类视图里面:比如:我们要想进入个人中心页面,首先要验证你是否登录,否则进不去,下面我们来模拟这个场景 定义一个装饰器 from func ...

  3. 第1天-html快速入门

    开发工具:HBuilder 创建项目: 在电脑本地磁盘创建项目目录,如"D:\project" 打开HBuilder,这个工具默认会创建一个项目,我们删掉即可,然后新建项目:&qu ...

  4. POJ 1486 Sorting Slides(二分图匹配)

    [题目链接] http://poj.org/problem?id=1486 [题目大意] 给出每张幻灯片的上下左右坐标,每张幻灯片的页码一定标在这张幻灯片上, 现在问你有没有办法唯一鉴别出一些幻灯片 ...

  5. 【单调队列】【动态规划】bzoj3831 [Poi2014]Little Bird

    f(i)=min{f(j)+(D(j)<=D(i))} (max(1,i-k)<=j<=i) 有两个变量,很难用单调队列,但是(引用): 如果fi<fj,i一定比j优秀.因为如 ...

  6. 【点分治】poj1741 Tree / poj2114 Boatherds / poj1987 Distance Statistics

    三道题都很类似.给出1741的代码 #include<cstdio> #include<algorithm> #include<cstring> using nam ...

  7. python3-os模块中的os.walk(目录树生成器)

    #先看源码 def walk(top, topdown=True, onerror=None, followlinks=False): """Directory tree ...

  8. N进制加法

    我是网络公司的一名普通程序员,英文名Steven,发音比较像“师弟”,自从入职培训自我介绍后,大家就称我为“二师弟”,我喜欢看科幻小说,也喜欢做梦,有一次梦到外星球,发现外星人使用的并非10进制/16 ...

  9. Atom | 报错 Cannot load the system dictionary for zh-CN的解决办法

    文章目录 问题描述 推荐阅读 查找问题所在 解决方案 (二选一) 问题描述 最近这款优秀的编辑器 atom,报错 Cannot load the system dictionary for zh-CN ...

  10. 深入了解JavaScript权威指南

    JavaScript对象可以看作是属性的无序集合,每个属性就是一个键值对,可增可删.JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等.JavaScript对象除了可以保持自有的 ...