繁体   English   中英

位操作AVR组件

[英]bit manipulation avr assembly

我目前正在阅读有关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

谁能解释这两个指令的参数? 为什么我必须写(1 << 5)+(1 << 3)才能设置位5和3? 我猜<< <<有点像移位操作。

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

写起来难吗?

ldi r16, 0x28

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM