我目前正在阅读有关avr汇编程序编程的教程.有说:
位操作cbr和sbr清除或设置寄存器中的一个多位.这些指令仅适用于寄存器r16至r31.它们不使用单个位作为参数,而是使用可包含多个位的掩码:
sbr r16, (1<<5)+(1<<3) ;set bits 5 and 3 in register 16
cbr r16,0x03 ;clear bits 1 and 0 in register 16
Run Code Online (Sandbox Code Playgroud)
谁能解释一下这两条指令的参数?为什么我要写(1 << 5)+(1 << 3)才能设置第5和第3位?我猜<<就像一个位移操作.
是的,<<是比特换档.你正在做的是构造一个位掩码00101000,它将设置位3和5,零索引.在你的cbr指令中,你传递掩码0x03 00000011,即清除位0和1.