我目前正在阅读有关avr汇编程序编程的教程。有说:
位操作cbr和sbr清除或设置a中的一个多位 寄存器。这些指令仅适用于寄存器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
任何人都能解释一下这两条指令的参数吗? 为什么我必须写(1 <&lt; 5)+(1 <&lt; 3)以设置第5位和第3位?我想&lt;&lt;就像一个变速操作。
答案 0 :(得分:6)
是,&lt;&lt;是位移的。你正在做的是构造一个位为00101000
的位掩码,它将设置位3和5,零索引。在cbr
指令中,您传递掩码0x03,即00000011
,清除位0和1。
答案 1 :(得分:0)
不容易写
ldi r16, 0x28