-1

谁能向我解释按位与运算是如何工作的?我有以下代码:

CLRF LATC & 0x7F
MOVWF LATC & 0x7F

使用 & 0x7F 的目的是什么?那有什么变化?

更新:我知道一般的按位运算是如何工作的,而且我知道“CLRF LATC”应该将 LATC 寄存器归零。但是“CLRF LATC & 0x7F”到 LATC 寄存器是什么?零除了最后一点?

4

1 回答 1

1

该操作已由汇编器执行,因此“MOVWF 0x193 & 0x7F”(例如)与“MOVWF 0x13”相同(因为 0x193 & 0x7F = 0x13)。

这样做的原因如下:

对于较大的 PIC,内存是存储的。

要写入地址 0x193,您必须切换到 bank #3(地址 0x180-0x1FF)并写入地址 0x13(而不是地址 0x193)。

这个“银行相对”地址是通过将绝对地址与数字 0x7F 进行与运算来计算的。

因为像“LATC”这样的符号可能被定义为绝对地址(0x193)而不是相对地址(0x13),所以您需要这种形式的指令。

于 2013-10-24T16:16:33.777 回答