第3章 Thumb-2指令系统4H

合集下载

第三章第二节thumb2指令集及汇编格式资料

第三章第二节thumb2指令集及汇编格式资料
该文件也包含了所有寄存器的声明
用户文件与库文件通过stm32f10x_lib.h建立关系,该文件中 定义了所有外设头文件的头文件,用于声明头文件,因此需 要include在用户的文件中
而文件stm32f10x_conf.h则指定具体的参数,用户可以对此 文件进行修改
外设的操作步骤
PPP代表任意外设 1. 在主应用文件中,声明一个结构
程序入口,而是作为主堆栈的标志 可以在设置中修改,但一般不做修改 9 .code16和code32 作为16位指令和32位指令开始的标志 等同于THUMB和ARM
10 END
END指示符告诉编译器已经到了源程序结尾。
语法格式:
END 使用说明:
每一个汇编源程序都包含END指示符,以告诉本源程 序的结束。
}
IAR的固件库
由ST公司开发,包括驱动程序和应用函数的 函数库
版本:3.4 优点:
入手快 便于开发,节约时间
缺点:
结构复杂繁琐 原理不够清晰
PPP:某一外设名称
说明
每一个外设都有一个对应的源文件: stm32f10x_ppp.c和一个对应的头文件: stm32f10x_ppp.h
硬件资源分配:
PC6----PC9分别连到4个LED,定义为 LED1~4
跑马灯实验
控制过程
点亮LED
相应管脚输出高电平 即相应管脚置1
管脚如何控制?
特殊寄e:GPIO控制
GPIO寄存器结构
GPIO寄存器结构,GPIO_TypeDef和AFIO_TypeDef,在文件
Example:GPIO控制
一、什么是GPIO?
GPIO,英文全称为General-Purpose IO ports,也就是通 用IO口。嵌入式系统中常常有数量众多,但是结构却比较 简单的外部设备/电路,对这些设备/电路有的需要CPU为 之提供控制手段,有的则需要被CPU用作输入信号。而且, 许多这样的设备/电路只要求一位,即只要有开/关两种状 态就够了,比如灯亮与灭。对这些设备/电路的控制,使 用传统的串行口或并行口都不合适。所以在微控制器芯片 上一般都会提供一个“通用可编程IO接口”,即GPIO。

B45-4.2.ARM-Thumb-Thumb2指令指令基础(2019)

B45-4.2.ARM-Thumb-Thumb2指令指令基础(2019)
;到保存到R0指定的存储单元
LDR R2,[R3,#0x0C]
• 6) 多寄存器寻址
多寄存器寻址一次可传送几个寄存器值,允许一条指令
传送16个寄存器的任何子集或所有寄存器。多寄存器寻址
指令举R6例0如x下?04?:
0x04 0x4000000C
LDMIRA4R10!x,?0{3?R2-R7,R12} 0;;x将R02R3~1指R7向0、的xR41单02元中0中0(R0的10自数0动据8 加读1出)到 STMIRA3R00!x,?0{2?R2-R7,R12} 0;x将0寄2 存器0Rx24~0R070、0R0102的4 值保
• 9) 相对寻址
相对寻址是基址寻址的一种变通。由程序计数器
PC提供基准地址,指令中的地址码字段作为偏移量,
两者相加后得到的地址即为操作数的有效地址。相
对寻址指令举例如下:
BL SUBR1
;调用到SUBR1子程序
BEQ LOOP
;条件跳转到LOOP标号处
...
LOOP MOV R6,#1
...
SUBR1...
R2 0x?01? R1 0x40000000
0;;x存(0R1到0自R0存动指0储加x向器14的)0存00储0;00单0元中
LDMIA R1!,{R2-R4,R6}
• 7 )堆栈寻址
堆栈是一个按特定顺序进行存取的存储区,操作 顺序为“后进先出” 。堆栈寻址是隐含的,它使用 一个专门的寄存器(堆栈指针)指向一块存储区域(堆 栈),指针所指向的存储单元即是堆栈的栈顶。存储 器堆栈可分为两种:
地址的存储单元中,即寄存器为操作数的地址指针。 寄存器间接寻0址x4指00令00举00例00如x下AA:
LDR R1,[R2]

第3章Thumb-2指令系统4H解析

第3章Thumb-2指令系统4H解析

3.1 Thumb-2指令集简介


Cortex-M3处理器使用的是Thumb-2指令集的子集,它的指 令工作状态只有Thumb-2状态。 Thumb-2继承了传统的Thumb指令集和ARM指令集的各自优 点,并不是Thumb的升级,包含16-bit指令集和32-bit指 令集两种长度的指令子集。 Thumb-2指令集体系架构,无需处理器进行工作状态的显 示切换,就可运行16位与32位混合代码,并由同一汇编器 对其进行汇编。

ASR算术右移(Arithmetic Shift Right):移位过程中保 持符号位不变,即若源操作数为正数,则数据位的高端空 出的位补0,否则补1;
可采用的移位操作

ROR循环右移(Rtate Right):由数据位的低端移出的位填 入数据位的高端空出的位;

RRX带扩展的循环右移(Rotate Right eXtended by 1 place):操作数右移一位,高端空出的位用原C标志值填 充。
R2 R1
0xAA 0xAA 0x55

MOV R1,R2
SUB
R0,R1,R2
;将R1的值减去R2的值,结果存R0
2、立即寻址
• 地址码字段(第一或第二操作数)直接给出是一整数 (称立即数),例: SUBS R0,R0,#1 ;R0减1结果放入R0,影响标志位
MOV R0,#0xFF000 ;将立即数0xFF000装入R0 程序存储 MOV R0,#0xFF00
条件码 EQ NE CS/HS CC/LO MI PL VS VC HI LS GE LT GT LE AL
指令执行条件码




在 Cortex-M3中,只有分支转移指令(B指令)才可以随 意使用条件码。例: BEQ label ;当 Z = = 1 时,程序转移到label 对于其它指令,只有在IF-THEN(IT)指令块中(最多4条) 才能加条件码,且必须加条件码。 IT已经带了一个T,最多再带3个T或E(与T相反的条件),T 、E排列无顺序。例: … CMP R0, R1 ; 比较R0和R1的值,影响标志位 ITTEE GT ; 下带4条指令,如R0>R1既GT成立,否则LE成立 MOVGT R2, R0 ; GT成立,则 R2 = R0 MOVGT R3, R1 ; GT成立,则 R3 = R1 MOVLE R2, R1 ; LE成立,则 R2 = R1 MOVLE R3, R0 ; LE成立,则 R3 = R0 …

第2章 Cortex-M3 内核原理3--Thumb-2指令系统

第2章  Cortex-M3 内核原理3--Thumb-2指令系统

3. 统一的汇编语言
• ARM指令集体系架构下,ARM指令与Thumb 指令分属不同的程序模块,由不同的汇编 器对其分别进行汇编。
• Thumb-2指令集体系架构下, 16bit指令与 32bit指令可以在同一程序模块出现,并由 同一汇编器对其进行汇编。
Toolchain flow with ARM7
ARM7TDMI
r0
r1
r2
r3
State Change
r4 r5
eg. ISR entry/exit
r6
r7
r8
r8
r9
r9
r10
r10
r11
r11
rr1134r1((2slpr))rr1134r1((2slrrpr11))34
(spr)13 (lrr)14
r13 r(1s3p)(srp1)4 r(1l4r)(lr)
2. Thumb-2指令集分类(续)
• 基于Thumb-2指令体系架构编写的代码在执 行 过 程 中 , 处 理 器 不 存 在 ARM 工 作 状 态 和 Thumb工作状态之间的切换。
• 那么,处理器必须能够自动识别当前指令长 度,是16-bit还是32-bit,以正确地执行Thumb2指令代码,它是如何识别呢?
4. Cortex-M3常用的Thumb-2指令集(续)
(1)数据传送指令(续)
MRS/MSR 指令中的Sreg寄存器:
符号 IPSR EPSR APSR IEPSR IAPSR EAPSR PSR MSP PSP PRIMASK BASEPRI BASEPRI_MAX FAULTMASK CONTROL
当前服务中断号寄存器
功能
执行状态寄存器。它里面含T 位,在CM3 中T 位必须是1。 上条指令结果的标志

第三章第二节thumb指令集及汇编格式

第三章第二节thumb指令集及汇编格式
每一个汇编源程序都包含END指示符,以告诉本源程 序的结束。
第三章第二节thumb指令集及汇编格式
内嵌汇编
内嵌汇编(inline assembly)的语法如下:
asm(“指令” ); asm(“指令” );
第三章第二节thumb指令集及汇编格式
内嵌汇编代码举例
#include<stdio.h> void str_cpy(const char *src,char *dst) {
WFI
等待一个中断发生
第三章第二节thumb指令集及汇编格式
汇编语言设计
汇编语言程序设计更能充分发挥处理器的硬件 特性
两个优势
操作系统移植需要编写几百行底层硬件的汇编 语言程序,这是C语言不可取代的。
优化算法的时空效率,C语言的目标代码优化是 编译器完成的,而汇编语言的目标代码优化是 人工完成的。人是算法的创造者,也是编译器 的设计者,人工优化比编译器质量高。
int ch;
asm("mov r0,#1"); asm("mov r0, #1"); asm("add r0, r1");
}
第三章第二节thumb指令集及汇编格式
IAR的固件库
由ST公司开发,包括驱动程序和应用函数的 函数库
版本:3.4 优点:
入手快 便于开发,节约时间
B loop
;标号DOB没有顶格书写 ;命令不允许顶格书写 ;指令中大小写混合 ;无法跳转到loop标号,大小写 ;不一致
第三章第二节thumb指令集及汇编格式
几个重要伪指令
➢ 1. DCB:
标号 DCB 表达式
说明:DCB用于分配一块字节单元并用伪指令中指定的表达式 进行初始化。其中,表达式可以为使用双引号的字符串或0—— 255的数字,DCB可用“=”代替。

thumb指令系统

thumb指令系统

该指令中,Rd,Rm可以是R0-R15中任何一 个;若Rd和Rm是低寄存器,则更新条件标志码 标志N、Z、C和V。
③SP操作的ADD或SUB指令格式如下: op SP, #expr 其中,SP目标寄存器;也是第一个操作寄存器; #expr立即数,在-508-+508之间的4的整数倍的数 条件码标志:不影响条件码标志。
15
跳转指令
格 式 功 能
PC=label; 若有cond,则label必须在当前指令的-256~ +256字节范围内; 否则,label必须在当前指令的-2K~+2K字节 label 2K 2K 范围内
B{cond} label
BL label
R14=PC+4,PC=label; label必须在当前指令的-4M~+4M字 节范围内 PC=Rn,且切换处理器状态
数据处理指令是对通用寄存器进行操作。在大 多数情况下,操作的结果须放入其中一个操作 数寄存器中,而不是第3个寄存器中。 数据处理操作比ARM状态的更少。 访问寄存器R8~R15受到一定限制。 除MOV和ADD指令访问器R8~R15外,其它数据 处理指令总是更新CPSR中的状态标志。 访问寄存器R8~R15的Thumb数据处理指令不能 更新CPSR中的状态标志。
移位和循环移位作为独立的指令,对寄存器的内容进 行操作。这些指令可使用寄存器中的值或立即数来表示 移位量。 格式:OP Rd, Rs OP Rd, Rm,#expr 其中:Rd,Rm,Rs 必须在R0-R7中;
expr 若op是LSL,则为0-31,否则为1-32
条件码标志:指令会更新N、Z和C标志(若移位量为0, 则不影响C标志)。
SUBS SBCS RSBS MOVS MOVS MOVS MOVS MOVS MOVS

第三章-ARM-Thumb微处理器结构及指令系统-(2)PPT课件

第三章-ARM-Thumb微处理器结构及指令系统-(2)PPT课件

-
4
1. ARM存储器访问指令:单寄存器存储/加载指令
(1) LDR和STR——字和无注 令符意 有号T:,T字为 那可 么节选 即加后 使载缀 处。理/若器存指是储指令
LDR指令用于从内存中在 也读特 将取权 访模 问单式 看一下 成, 是字存在或储用字系户统模节数据存
入寄存器中,STR指令用于式 下将下 无进 效寄行 ,存的 不器。 能T与中在前用的索户引单模偏一式 字或字
说明 加载字数据
加载无符号字节数据
以用户模式加载字数据 以用户模式加载无符号字 节数据 加载无符号半字数据
加载有符号字节数据
加载有符号半字数据
操作
Rd←[addressing], addressing索引
Rd←[addressing], addressing索引
Rd←[addressing], addressing索引
节数据保存到内存。
移一起使用T。
指令格式如下:
LDR{cond}{T} Rd,<地址> ;将指定地址上的字数据读入Rd STR{cond}{T} Rd,<地址> ;将Rd中的字数据存入指定地址 LDR{cond}B{T} Rd,<地址> ;将指定地址上的字节数据读入Rd STR{cond}B{T} Rd,<地址> ;将Rd中的字节数据存入指定地址
“字和无符号字节a加ddr载ess存in储g索指引 令”
STR{cond}BT STR{cond}H
LDR/STR指令用“于半对字内和有存符变号量字节的加访载问存储、指内令。存缓冲区数
据的访问、查表、外围部件的控制操作等。若使用LDR指
令加载数据到PC寄存器,则实现程序跳转功能,这样也就

04-Thumb指令集

04-Thumb指令集

转移链接产生两条格式3指令 格式3指令必须 指令必须成对 转移链接产生两条格式 指令;格式 指令必须成对 两条格式 指令; 出现而不能单独使用 同样BLX产生一条格式 指令和 而不能单独使用。 产生一条格式3指令和 出现而不能单独使用。同样 产生一条格式 一条格式3a指令 指令。 一条格式 指令。 汇编器根据当前指令地址、 汇编器根据当前指令地址、目标指令标识符的地址 以及对流水线行为的微调计算出应插入指令中相应的偏 移量。若转移目标不在寻址范围内则给出错误信息。 移量。若转移目标不在寻址范围内则给出错误信息。
② 编程模型
R0
Thumb指令集是 指令集是 ARM指令集的一个子 指令集的一个子 集,并只能对限定的 ARM寄存器进行操作。 寄存器进行操作。 寄存器进行操作 其编程模型如图示: 其编程模型如图示:
R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 SP(R13) ( ) LR(R14) ( ) PC(R15) ( ) 有阴影的寄存器 访问时受到限制
① 指令集特点
Thumb指令继承了ARM指令集的许多特点 指令继承了 指令继承了 指令集的许多特点 Thumb指令也是采用 指令也是采用Load/Store结构,有数据处 结构, 指令也是采用 结构 数据传送及流控制指令等。 理、数据传送及流控制指令等。 Thumb指令集丢弃了 指令集丢弃了 指令集丢弃了ARM指令集一些特性 指令集一些特性 大多数Thumb指令是无条件执行的,许多 指令是无条件执行的, 大多数 指令是无条件执行的 许多Thumb 数据处理指令采用2地址格式 地址格式, 数据处理指令采用 地址格式,即目的寄存器与一个源 寄存器相同; 寄存器相同; Thumb异常中断时表现的一些特点 异常中断时表现的一些特点 异常中断时 所有异常都会使微处理器返回到ARM模式状态, 模式状态, 所有异常都会使微处理器返回到 模式状态 并在ARM的编程模式中处理。 的编程模式中处理。 并在 的编程模式中处理 由于ARM微处理器字传送地址必须字对齐,半字 微处理器字传送地址必须字对齐, 由于 微处理器字传送地址必须字对齐 传送地址必须可被2整除 即半字对准); 整除( );而 传送地址必须可被 整除(即半字对准);而Thumb 指令是2个字节长 所以, 个字节长, 指令是 个字节长,所以,由Thumb执行状态进入异 执行状态进入异 常时其自然偏移与ARM不同。 不同。 常时其自然偏移与 不同
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LDR R1,[R2]
5、基址寻址
• 就是将基址寄存器的内容与给出的偏移量相加,形成 操作数的有效地址。用于查表、数组操作、功能部件 寄存器访问等。例: LDR R2,[R3,#0x0C];读R3+0x0C地址上的存储单元的值存R2
0x4000000C
0xAA
将R3+0x0C作为 R3 0x40000000 地址装载数据 R2 0xAA 0x55 LDR R2,[R3,#0x0C]
堆栈寻址

所以可以组合出四种类型的堆栈方 式: 向上生长的满栈、向上生长的空栈、 向下生长的满栈、向下生长的空栈。

Cortex-M3向下生长的满栈模型。

例: STMDB SP!, {R1-R7, LR} ; 将R1~R7、LR 入栈 LDMIA SP!, {R1-R7, PC} ; 出栈,到R1~R7、LR 寄存器
<指令码><目标寄存器>,<第一操作数>[,<第二操作数>]
Cortex-M3处理器支持8种基本寻址方式: –1、寄存器寻址 –2、立即寻址 –3、寄存器移位寻址 –4、寄存器间接寻址 –5、基址寻址 –6、多寄存器寻址 –7、堆栈寻址 –8、相对寻址
1、寄存器寻址
• 指令中的地址码字段(第一或第二操作数)给出的 是寄存器编号,操作数的值在寄存器中,指令执行 时直接取出寄存器值来操作。例: MOV R1,R2 ;将R2的值存入R1
3.1 Thumb-2指令集简介


Cortex-M3处理器使用的是Thumb-2指令集的子集,它的指 令工作状态只有Thumb-2状态。 Thumb-2继承了传统的Thumb指令集和ARM指令集的各自优 点,并不是Thumb的升级,包含16-bit指令集和32-bit指 令集两种长度的指令子集。 Thumb-2指令集体系架构,无需处理器进行工作状态的显 示切换,就可运行16位与32位混合代码,并由同一汇编器 对其进行汇编。
R2 R1
0xAA 0xAA 0x55
MOV R1,R2
SUB
R0,R1,R2
;将R1的值减去R2的值,结果存R0
2、立即寻址
• 地址码字段(第一或第二操作数)直接给出是一整数 (称立即数),例: SUBS R0,R0,#1 ;R0减1结果放入R0,影响标志位
MOV R0,#0xFF000 ;将立即数0xFF000装入R0 程序存储 MOV R0,#0xFF00
条件码 EQ NE CS/HS CC/LO MI PL VS VC HI LS GE LT GT LE AL
1 && Z = = 0 0 || Z = = 1
0 && N = = V 1 || N ! = V
指令执行条件码
在 Cortex-M3中,只有分支转移指令(B指令)才可以随 意使用条件码。例: BEQ label ;当 Z = = 1 时,程序转移到label 对于其它指令,只有在IF-THEN(IT)指令块中(最多4条) 才能加条件码,且必须加条件码。 IT已经带了一个T,最多再带3个T或E(与T相反的条件),T 、E排列无顺序。例: „ CMP R0, R1 ; 比较R0和R1的值,影响标志位 ITTEE GT ; 下带4条指令,如R0>R1既GT成立,否则LE成立 MOVGT R2, R0 ; GT成立,则 R2 = R0 MOVGT R3, R1 ; GT成立,则 R3 = R1 MOVLE R2, R1 ; LE成立,则 R2 = R1 MOVLE R3, R0 ; LE成立,则 R3 = R0 „
4、寄存器间接寻址
• 地址码段(第一或第二操作数)给出的是一个通用寄存 器的编号,所需的操作数保存在寄存器指定地址的存储 单元中,即寄存器为操作数的地址指针,例: LDR R1,[R2]; 将R2指向的存储单元的数据读出存R1 0x40000000 0xAA
R2 0x40000000
R1
0xAA 0x55
ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,再和 R1相“与”操作,结果放入R1
可采用的移位操作

LSL逻辑左移(Logical Shift Left):寄存器中数据位低 端空出的位补0; LSR逻辑右移(Logical Shift Right):寄存器中数据位高 端空出的位补0;
8、相对寻址

相对寻址是基址寻址的一种变通。由程序计数器 PC 提供 基准地址,指令中的地址码字段作为偏移量,两者相加 后得到的地址即为操作数的有效地址。 例: B WAITA ; 跳转到WAITA标号处,跳转范围+16MB BL SUBR1 ; 调用到SUBR1子程序,并存储返回地 ;址到LR中,其跳转范围为+16MB „ SUBR1 „ WAITA „
从代码中获得数据 R0 0xFF00 0x55
3、寄存器移位寻址
地址码字段(第一或第二操作数)在操作之前,先 进行移位操作。例: MOV R0,R2,LSL #3 ;R2 的值左移 3 位,结果存 R0 , ;即是R0=R2×8
逻辑左移3位
R2 R0 0x01 0x55 0x08 0x08
MO统

3.1 3.2 3.3 3.4 3.5
Thumb-2指令集简介 Cortex-M3八种寻址方式 简单的Thumb 汇编程序 Thumb-2指令基本格式 Cortex-M3常用的Thumb-2指令集
3.4 Thumb-2指令基本格式
1、指令基本格式:
2、指令执行条件码

使用指令条件码可以实现高效的逻辑操作,提高代码的 执行效率。不选为AL。
标志 Z==1 Z==0 C==1 C==0 N==1 N==0 V==1 V==0 C = = C = = N==V N!=V Z = = Z = = — 含义 相等 不相等,与EQ相反 进位(无符号数大于或等于) 未进位(无符号数小于) 负数 非负数 溢出 没有溢出 无符号数大于 无符号数小于或等于 有符号数大于或等于 有符号数小于 有符号数大于 有符号数小于或等于 无条件执行
第3章 Thumb-2指令系统

3.1 Thumb-2指令集简介 3.2 Cortex-M3八种寻址方式 3.3 简单的Thumb 汇编程序 3.4 Thumb-2指令基本格式
3.2 Cortex-M3八种寻址方式
寻址方式是根据指令中给出的地址码字段来实现寻找 真实操作数地址的方式。指令的简单格式: <opcode> <Rd>,<Rn>[,<Operand2>]
0x03 0x02 0x01
0x40000008 0x40000004 0x40000000
存储器
LDMIA R1!,{R2-R4,R6} STMIA R0!,{R2-R7,R12} ;将寄存器R2~R7、R12的值 ;存到R0指向的存储单元中 ;(R0自动加4)
7、堆栈寻址

堆栈是一个按特定顺序进行存取的存储区,后进先出。 堆栈寻址是隐含的,使用一个专门的寄存器--堆栈指针SP, 指向堆栈的存储单元即栈顶,2 种堆栈方式:向上生长与 向下生长的堆栈: 0x12345678 压栈 栈顶 0x12345678 SP 向上 增长 堆栈 存储 区 向下 增长 栈底
栈区
栈区
栈底 0x12345678
0x12345678 栈顶 SP
压栈
堆栈寻址

堆栈指针指向最后压入的有效数据项,称为满堆栈;
压栈
SP栈顶 SP栈顶 0x12345678
0x12345678
SP栈顶 SP栈顶
压栈
0x12345678
满堆栈 栈底

空堆栈 栈底
堆栈指针指向下一个待压入数据的空位置,称为空堆栈。
第3章 Thumb-2指令系统

3.1 Thumb-2指令集简介 3.2 Cortex-M3八种寻址方式 3.3 简单的Thumb 汇编程序 3.4 Thumb-2指令基本格式 3.5 Cortex-M3常用的Thumb-2指令集
6、多寄存器寻址
多寄存器寻址一次可传送几个寄存器值,允许一条指令 传送16个寄存器的任何子集或所有寄存器。例: LDMIA R1!,{R2-R4,R6} ; 将 R1 指向单元中的数据存到 ;R2~R4、R6中(R1自动加4) R6 0x04 0x?? 0x04 0x4000000C
R4 0x03 0x?? R3 0x02 0x?? R2 0x01 0x?? R1 0x40000000 0x40000010
嵌入式系统与应用
Embedded System Development 聊城大学 理工学院
曹银杰 caoyinjie@
第3章 Thumb-2指令系统
– 3.1 Thumb-2指令集简介 –3.2 Cortex-M3八种寻址方式 –3.3 简单的Thumb 汇编程序 –3.4 Thumb-2指令基本格式 –3.5 Cortex-M3常用的Thumb-2指令集

3、影响标志位的指令
在Cortex-M3中,下列指令将会更新 APSR 中的标志位: 16 位算术逻辑指令; 32 位带 S 后缀的算术逻辑指令; 比较指令(如CMP/CMN)和测试指令(如TST/TEQ); 直接操作 PSR/APSR 指令( MRS读和MSR写指令)。
4、第2个操作数的格式



立即数:#immN, –3、5、8、12、16位长度的常数表达式,如: MOVW R1,#0x1234 ; 操作数为#imm16,范围为0~65535 –由一个8 位数左移任意位而形成的常数,如: 0x3FC(0xFF<<2); –重复半字形式0x00XY00XY、0xXY00XY00、0xXYXYXYXY; Rm寄存器方式:操作数即为寄存器的数值,例: –SUB R1,R1,R2 ; R1减R2,保存到R1中 寄存器移位方式:Rm,Shift,将寄存器的移位结果作为操 作数,例移位方法如下: –ASR #n 算术右移n位(1<<n<<32); 例: –ADD R1, R1, R1, LSL #3 ;逻辑左移R1 = R1+R1×8
相关文档
最新文档