执行此代码后r16
的值是多少?r17
ldi r16, 0x06 ;load immediate
ldi r17, 0x0c ;load immediate
lsl r16 ;logical shift left
eor r16, r17 ;exclusive or
所以我知道r16 = 12
在逻辑左移之后,使其等于r17
。是否独占或设置r16
为 0 并r17
停留在 12?或者他们都被设置为零?是否设置了零标志?
执行此代码后r16
的值是多少?r17
ldi r16, 0x06 ;load immediate
ldi r17, 0x0c ;load immediate
lsl r16 ;logical shift left
eor r16, r17 ;exclusive or
所以我知道r16 = 12
在逻辑左移之后,使其等于r17
。是否独占或设置r16
为 0 并r17
停留在 12?或者他们都被设置为零?是否设置了零标志?
从显而易见的来源, http: //www.atmel.com/webdoc/avrassembler/avrassembler.wb_instructions.Arithmetic_and_Logic_Instructions.html:
EOR 逻辑异或
Rd = Rd EOR Rr
所以是的,r16 被覆盖,但 r17 保持不变。
http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_EOR.html 甚至指定状态寄存器中的零标志会发生什么:它设置为(¯ 表示相反,• 表示逻辑与)
R7¯ • R6¯ • R5¯ • R4¯ • R3¯ • R2¯ • R1¯ • R0¯