ARM指令系统数据处理指令口数据处理指令可分为数据传送指令、算术逻辑运算指令和比较指令等。口数据传送指令用于在寄存器和存储器之间进行数据的双向传输。口算术逻辑运算指令完成常用的算术与逻辑的运算,该类指令不但将运算结果保存在目的寄存器中,同时更新CPSR中的相应条件标志位。口比较指令不保存运算结果,只更新CPSR中相应的条件标志位。21
21 数据处理指令 ❑ 数据处理指令可分为数据传送指令、算术逻辑运算指令和 比较指令等。 ❑ 数据传送指令用于在寄存器和存储器之间进行数据的双向 传输。 ❑ 算术逻辑运算指令完成常用的算术与逻辑的运算,该类指 令不但将运算结果保存在目的寄存器中,同时更新CPSR中 的相应条件标志位。 ❑ 比较指令不保存运算结果,只更新CPSR中相应的条件标志 位。 ARM 指令系统
ARM指令系统数据处理指令一灵活的第二操作数如: ADD{cond) {S}) Rd,Rn, Operand2若指定S,则根据操作结果更新Operand2可能的形式:条件码标志#immed 8rRm(, shift)R0= r1 + 100ADD r0, r1, #100RO= r1 + r2ADD rO, rl, r2RO=r1 +(r2算术右移一位)ADD rO, r1, r2, ASR #122
22 数据处理指令—灵活的第二操作数 如:ADD{cond}{S} Rd, Rn, Operand2 Operand2可能的形式: #immed_8r Rm{,shift} ADD r0, r1, #100 ADD r0, r1, r2 ADD r0, r1, r2, ASR #1 ARM 指令系统 R0 = r1 + 100 R0 = r1 + r2 R0 = r1 + (r2算术右移一位) 若指定S,则根据操作结果更新 条件码标志
ARM指令系统数据处理指令一Shift 移位模式ASR算术右移n位(1<=n<=32)nLSL逻辑左移n位亡(1<=n<=32)nLSRL(1<=n<=32)逻辑右移n位nROR亡(1<=n<=32)循环右移n位nRRX带扩展的循环右移1位LSL:逻辑左移0→LSR:逻辑右移7算术右移ASR:ROR:循环右移RRX:扩展为1的循环右移
23 数据处理指令—Shift 移位模式 ASR n 算术右移n位(1<=n<=32) LSL n 逻辑左移n位(1<=n<=32) LSR n 逻辑右移n位(1<=n<=32) ROR n 循环右移n位(1<=n<=32) RRX 带扩展的循环右移1位 type Rs type = ASR/LSL/LSR/ROT ARM 指令系统
ARM指令系统ASR算术右移n位即Rm中的内容除以2的n次方。将原来的位[31拷贝到寄存器左边的n位中,即空出的最高位补符号位。24
24 ASR 算术右移n位即Rm中的内容除以2的n次方。将原来的位 [31]拷贝到寄存器左边的n位中,即空出的最高位补符号 位。 ARM 指令系统
ARM指令系统LSR和LSL逻辑右移n位,即将Rm的内容除以2的n次方。寄存器左边的n位清零。逻辑左移n位,即将Rm的内容乘以2的n次方。寄存器右边的n位清零。25
25 LSR和LSL 逻辑右移n位,即将Rm的内容除以2的n次方。寄存器左边 的n位清零。 逻辑左移n位,即将Rm的内容乘以2的n次方。寄存器右边 的n位清零。 ARM 指令系统