ARM指令集详解(超详细!带实例!)_第1页
ARM指令集详解(超详细!带实例!)_第2页
ARM指令集详解(超详细!带实例!)_第3页
ARM指令集详解(超详细!带实例!)_第4页
ARM指令集详解(超详细!带实例!)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算术和逻辑命令ADC :四舍五入的加法(Addition withCarry)ADC条件S,Dest=op_1 op_2 carryADC将两个操作数相加,并将结果放在目标寄存器中。使用一个进位标志位进行大于32位的加法。以下示例添加两个128位计数:128位结果3360寄存器0、1、2、和3第一个128位:寄存器4,5,6,7第二个128位:寄存器8、9、10、11。ADDS R0、R4、R8;添加低成本单词ADCS R1、R5、R9;添加以下单词,包括进位ADCS R2、R6、R10添加第三个单词,包括进位ADCS R3、R7、R11添加高级单词,包括进位进行这种加法时,不要忘记设置s后缀以更改进位标志。ADD :加(Addition)ADD条件S,Dest=op_1 op_2ADD将两个操作数相加,并将结果放在目标寄存器中。操作数1可以是寄存器、操作数2可以是寄存器、移位寄存器或即时值:ADD R0、R1、R2;R0=R1 R2ADD R0、R1、# 256;R0=R1 256ADD R0、R2、R3、LSL # 1;R0=R2 (R3 1)加法可以在有符号数和无符号数中完成。AND :逻辑和(logicalAND)AND条件S,Dest=op_1 AND op_2AND将两个操作数的逻辑和结果放在目标寄存器中。对屏蔽在上面工作的位置很有用。操作数1可以是寄存器、操作数2可以是寄存器、移位寄存器或即时值:AND R0、R0、# 3;R0=保留R0的位0和1,丢弃其馀位。AND的真值表(如果两者都是1):Op_1 Op_2结果0 0 00 1 01 0 01 1 1BIC :位元清理(位元清除)BIC条件S,Dest=op_1 AND(!Op_2)BIC是一种从一个单词中清除位(与OR位设置相反)的方法。操作数2是32位掩码(mask)。如果遮罩具有设定的位元,则会清除此位元。未设置的掩码位表示此位未更改。BIC R0、R0、# 11;清除R0的位0、1和3。剩下的就留着吧。BIC真理表:Op_1 Op_2结果0 0 00 1 01 0 11 1 0注:逻辑表达式为Op_1 AND NOT Op_2EOR :逻辑xor(logicalExclusiveOR)EOR条件S,Dest=op_1 EOR op_2EOR对两个操作数执行逻辑xor,并将结果放在目标寄存器中。这对反转特定位很有用。操作数1可以是寄存器、操作数2可以是寄存器、移位寄存器或即时值:EOR R0、R0、# 3;反转R0的位0和1EOR真值表(两者都是1):Op_1 Op_2结果0 0 00 1 11 0 11 1 0MOV :传输(移动)MOV条件S,Dest=op_1MOV将值从其他寄存器、移动的寄存器或立即值装载到目标寄存器。可以为NOP命令的效果指定相同的寄存器,也可以转向一个寄存器:MOV R0、R0;R0=R0.NOP命令MOV R0、R0、LSL # 3;R0=R0 * 8如果R15是意图登录,程式计数器或旗标会被修改。用于将连接寄存器的内容传递到R15:并作为调用代码返回MOV PC,R14退出调用者MOVS PC、R14终止到调用程序并恢复标志位(不符合32位系统)MVN :传输逆值(MoveNegative)MVN条件S,Dest=!Op_1MVN将值从其他寄存器、移动的寄存器或立即值装载到目标寄存器。不同的是,在传输之前,比特被反转,将逆向计算的值传输到一个寄存器。这不是算术运算,而是逻辑,倒数加1等于倒数:MVN R0,# 4;R0=-5MVN R0,# 0;R0=-1ORR :逻辑或(logicalOR)ORR条件S,Dest=op_1 OR op_2OR将两个操作数的逻辑或结果放在目标寄存器中。这对设置特定位很有用。操作数1可以是寄存器、操作数2可以是寄存器、移位寄存器或即时值:ORR R0、R0、# 3;设定R0的位元0和1OR真值表(其中一个结果1):Op_1 Op_2结果0 0 00 1 11 0 11 1 1RSB :反向相减(ReverseSubtraction)RSB条件S,Dest=op_2-op_1SUB从操作对象two中减去操作对象one,并将结果放置在目标寄存器中。操作数1可以是寄存器、操作数2可以是寄存器、移位寄存器或即时值:RSB R0、R1、R2;R0=R2-R1RSB R0、R1、# 256;R0=256-R1RSB R0、R2、R3、LSL # 1;R0=(R3 1)-R2反向减法可以在有符号或没有符号的数字上执行。RSC :位反向相减(ReverseSubtraction withCarry)RSC条件S,Dest=op_2-op_1-!卡里与SBC相同,但两个操作数的前后位置已替换。SBC :减去包含借款人(Subtraction withCarry)SBC条件S,Dest=op_1-op_2-!卡里SBC减去两个操作数,并将结果放在目标寄存器中。使用进位标志表示可以创建大于32位的减法的临时位。SUB和SBC创建舍入标志的方法与常规不同,如果需要临时帮助,请清除舍入标志。因此,命令将执行非协调操作,以在执行命令的过程中自动反转此位。SUB :减去(Subtraction)SUB条件S,Dest=op_1-op_2SUB从操作对象one中减去操作对象two,并将结果放置在目标寄存器中。操作数1可以是寄存器、操作数2可以是寄存器、移位寄存器或即时值:SUB R0、R1、R2;R0=R1-R2SUB R0、R1、# 256;R0=R1-256SUB R0、R2、R3、LSL # 1;R0=R2-(R3 1)减法可以在有符号数和无符号数中进行。移位命令ARM处理器支持数据处理指令(ADC、ADD、AND、BIC、CMN、CMP、EOR、MOV、MVN、ORR、RSB、SBC、SUB、TEQ、TSS还可以使用桶形移相器影响LDR/STR操作中的地址更改值。注意:移位操作在ARM指令集中不作为单独的指令使用,而是指令形式的字段,在程序集语言中作为指令的选项显示。当数据处理命令的第二操作数或单个数据传输命令的地址是寄存器时,可以执行各种移位操作。如果数据处理指令的第二个操作数为立即值,则对于大于255的立即值,汇编程序将尝试通过在指令中设置循环移位数来指示这一点,否则将生成错误,因为指令会将此值标记为8位立即值和4位循环移位。在逻辑类指令中,逻辑操作指令确定命令中的s位设置或清除是否影响舍入标志,而比较指令中的s位始终处于设置状态。在单个数据传输指令中,指定的移位数只能是即时值,不能是寄存器。以下是其他移位类型的6个助记符:向左移动LSL逻辑ASL算术左移LSR逻辑右移ASR算术右移ROR循环右移RRX扩展环路右移ASL和LSL相同,可以自由交换。可以将移位数指定为立即值(0到31),也可以指定为包含0到31之间的值之一的寄存器。向左移动逻辑或算术(逻辑orArithmeticShiftLeft)Rx,LSL #n orRx,ASL #n orRx、LSL Rn orRx、ASL Rn接收Rx的内容,在有效位方向上移动到“n”或寄存器Rn中指定的量。最小有效位填充为0。丢弃从最左端移动的高位置,但概念上的第33位(即移动的最小者)除外。如果在逻辑类指令中设置了s位,则当离开桶移动器时,此位将成为回车标志的值。请考虑以下:MOV R1,#12MOV R0、R1、LSL#2退出时,R0为48。这些命令的总和为r0=# 12,lsl # 2等于BASIC的R0=12逻辑右移(LogicalShiftRight)Rx,LSR #n orRx、LSR Rn概念上与向左移动相反。将所有位移动到较低的有效位方向。在逻辑类指令中设置s位后,最右端的位将置于舍入标志中。与BASIC中的register=value shift相同。算术右移位(ArithmeticShiftRight)Rx,ASR #n orRx、ASR Rn类似于LSR,但是为了保护补码表示中的符号,使用要移动的寄存器(Rx)的第31位值填充高值。在逻辑类指令中设置s位后,最右端的位将置于舍入标志中。与BASIC中的register=value shift相同。循环右移(RotateRight)Rx,ROR #n orRx、ROR Rn循环右移类似于逻辑右移,但是将从右移的位左移,如果在逻辑类指令中设置了s位,则还将它放在回车标志中。这就是比特的“循环”。位移为32的一次操作,使输出与输入完全匹配。因为所有位位移32个位置,然后返回到初始位置!向右移动带有扩展的循环(Ro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论