位操纵avr汇编

时间:2013-02-24 11:35:46

标签: assembly avr

我目前正在阅读有关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;就像一个变速操作。

2 个答案:

答案 0 :(得分:6)

是,&lt;&lt;是位移的。你正在做的是构造一个位为00101000的位掩码,它将设置位3和5,零索引。在cbr指令中,您传递掩码0x03,即00000011,清除位0和1。

答案 1 :(得分:0)

不容易写

ldi r16, 0x28