无条件执行Р0000?0001?0010?0011?0100?0101?0110?0111?1000?1001?1010?1011?1100?1101?1110?1111Р依版本不同,定义不同Р寻址方式Р9种:?立即数寻址?寄存器寻址?寄存器移位寻址?寄存器间接寻址?基址变址寻址?相对寻址?多寄存器寻址?块拷贝寻址?堆栈寻址Р立即数寻址Р在立即数寻址中,操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。Р例:Р ADD R0,R1,#5; R0=R1+5? MOV R0,#0x55; R0=0x55Р其中:操作数5,0x55就是立即数,立即数在指令中要以“#”为前缀,后面跟实际数值。Р寄存器寻址Р在寄存器寻址方式下,寄存器的值即为操作数。ARM指令普遍采用这种寻址方式。Р例:Р ADD R0,R1,R2 ;R0=R1+R2? MOV R0,R1 ;R0=R1Р寄存器移位寻址Р寄存器移位寻址的操作数由寄存器的数值做相应移位而得到。?移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。?例:? ADD R0,R1,R2,ROR #5? ;R0=R1+R2循环右移5位? MOV R0,R1,LSL R3? ;R0=R1逻辑左移R3位?移位操作在ARM指令集中不作为单独的指令使用,ARM指令集共有5种位移操作。РARM指令集的5种位移操作РLSL逻辑左移:Rx,LSL <op1> РLSR逻辑右移: Rx,LSR <op1> РASR算术右移:Rx,ASR <op1> РROR循环右移:Rx,ROR <op1> РRRX带扩展的循环右移:Rx,RRXР寄存器间接寻址Р寄存器中的值为操作数的物理地址,而实际的操作数存放在存储器中。Р例:Р STR R0,[R1]?;?[R1]=R0? LDR R0,[R1]?;?R0=[R1]