指令格式:(向谁表述——人)
label <opcode><cond>S <Rd>,<Rn>,<operand2> ;
解释:
label:指令标号,表示该条指令代码存放地址,用于跳转到该条指令的标识。在书写时指令标号需要用空格与指令助记符分开,GNU汇编使用逗号与指令助记符分开。(选项)
opcode:指令助记符,表示指令的功能或操作。(必选项)
cond:指令执行条件域。条件域来自CPSR寄存器,详细内容参见表2-1中条件域内容。若满足所设定条件,将执行该条指令,否则跳过执行下调指令。该域内容为可选项,不写则使用默认条件AL执行该条指令。(可选项)
S:是否影响CPSR 寄存器值。附带S则指令运行结果将影响CPSR响应标志位。(可选项)
Rd:目的寄存器。(必选项)
Rn:第一源操作数,使用“,”与目的寄存器字段分开。(必选项)
operand2:第二源操作数,使用“,”与第一源操作数字段分开。(可选项)
;:表示后续内容为注释。GNU汇编使用“@”或C语言风格的“/*…*/”代替。(可选项)实例:
指令格式中的条件域使用方法
LDR R0,[R1] ;R1寄存器内容表示地址号,无条件将该地址内容读入R0。
ADDS R1,R1,#1 ;加法指令,R1=R1+1,运算结果影响CPSR 寄存器。
/*跳转指令执行条件为EQ,当上一条指令执行结果导致Z=1时,使本条指令执行条件成立,执行本条指令,跳转到DATAEVEN标号处开始执行指令。*/
BEQ DATAEVEN
/*减法指令执行条件为NE,条件成立时执行减法运算R1=R1-0xD,运算结果影响CPSR 寄存器。*/SUBNES R1, R1, #0xD