第3章 ARM指令集寻址方式
发布时间:2024-11-10
发布时间:2024-11-10
第3章 ARM指令集寻址方式ARM指令寻址方式可分为四大类: 数据处理指令寻址 Load/Store指令的寻址 批量Load/Store指令的寻址 协处理指令寻址。
TM
内容提要3.1 3.2 ARM指令的编码格式 数据处理指令寻址方式
3.33.4 3.5
Load/Store指令寻址批量Load/Store指令寻址方式 协处理器指令寻址方式
TM
2
3.1
ARM指令的编码格式
一般编码格式指令条件码
TM
3
一般编码格式
每条ARM指令占有4个字节,其指令长度为32位
cond(bit[31:28]) cond(bit[31:28]) 指令执行的条件码; 指令执行的条件码 type(bit[27:26])type(bit[27:26]) 指令类型码指令类型码 I (bit[25])第二操作数类型标志码。数据处理指令中I=1表示第二操 作数是立即数,I=0表示第二操作数是移位寄存器 opcode(bit[24:21]) 指令操作码; S (bit[20]) 决定指令的操作结果是否影响CPSR ; Rn (bit[19:16]) 包含第一个操作数的寄存器编码; Rd (bit[15:12]) 目标寄存器编码; Operand2(bit[11:0) 指令第二个操作数。TM
4
Type
描述
0001
数据处理指令及杂类Load/Store指令Load/Store指令
1011
批量Load/Store指令及分支指令协处理器指令与软中断指令
TM
5
指令条件码条件码 0000 0001 0010 0011 助记符后缀 EQ NE CS CC 标志 Z置位 Z清零 C置位 C清零 含义 相等 不相等 无符号数大于或等于 无符号数小于
01000101 0110 0111
MIPL VS VC
N置位N清零 V置位 V清零
负数正数或零 溢出 未溢出
10001001 1010 1011 1100 1101 1110
HILS GE LT GT LE AL
C置位Z清零C清零Z置位 N等于V N不等于V Z清零且(N等于V) Z置位或(N不等于V) 忽略
无符号数大于无符号数小于或等于 带符号数大于或等于 带符号数小于 带符号数大于 带符号数小于或等于 无条件执行
1111
NV
从不执行(不要使用)TM
6
条件码示例: C代码: if(a > b) a++; else 对应的汇编代码: CMP R0,R1 ;R0与R1比较 ADDHI R0,R0,#1
b++;
;若R0>R1,则R0=R0+1ADDLS R1,R1,#1 ;若R0≤R1,则R1=R1+1
TM
7
ARM汇编指令语法格式:<opcode>{<cond>}{S}<Rd>,<Rn>,<operand2>
注:在上面的基本格式中,“<>”符号内的项是必需的,“{}” 符 号内的项是可选的。 例如,<opcode>是指令助记符,这是必须书写的;而 {<cond>}为指令执行条件,是可选项。若不书写,则使用默 认条件AL(无条件执行)。TM
8
3.2 数据处理指令寻址方式
数据处理指令第2操作数的构成方式具体寻址类型
TM
9
数据处理指令第2操作数的构成方式 立即数方式
每个立即数由一个8位的常数进行32位循环 右移偶数位得到,其中循环右移的位数由一个 4位二进制的两倍表示。即:
<immediate>=immed_8进行32位循环右移( 2*rotate_4)位10
TM
10
?
思考与练习
1.以下8位立即数是否合法?0x0103C0000x12800000
× √
可以由0x4A循环右移10位得到
2.请列举2个立即数?0x4000003B(0xED循环右移2位) 0x0016C000(0x5B循环右移18位)
TM
11
例题:
SUBS R0,R0,#1 并且影响标志位
;R0减1,结果放入R0,
MOV R0,#0xFF000 ;将立即数0xFF000装 入R0寄存器“0x”表示
注:立即数要以“#”号为前缀,16进制数值时以
TM
12
寄存器方式 操作数即为寄存器的数值 如: MOV R3,R2
ADD R0,R1,R2
TM
13
寄存器移位方式 操作数为寄存器的数值做相应的移位而得 到。在ARM指令中移位操作包括逻辑左移 、逻辑右移、算术左移、算术右移、循环 右移和带扩展的循环右移
TM
14
TM
15
例MOV R0,R2,LSL #3 ;R2的值左移3位,结
;果放入R0,;即是 R0=R2×8
ANDS
R1,R1,R2,LSL R3 ;R2的值左移R3位,;然后和R1相,“与”操作,结果放入
R1
TM
16
上一篇:国际商务谈判语言沟通
下一篇:大学生就业分析讲座课件