我正在閱讀有關avr彙編程序編程的教程。有說:位操作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?我猜< <就像是一個移位操作。
所以1 << 5種方式:00000001 << 5 = 00100000和00000001 << 3 = 00001000.這些字節如何組合?什麼是+運營商?一個邏輯或? – Moonlit 2013-02-24 12:50:30
你明白了。在你的例子中,它們被加在一起,但是更好的做法是將它們放在一起,如下所示:(1 << 5)|(1 << 3)。原因是因爲如果你不小心做了這樣的事情:(1 << 3)+(1 << 3),你會得到16,這是1 << 4,你會設置錯誤位! – 2013-02-24 13:07:13