我试图了解这些指令对 MSP 430 处理器的作用:
(1) MOV.w #0x0055,R5
(2) BIC.w #0xFFEE,R5
(3) BIS.w #0x1144,R5
我找不到太多解释汇编指令的东西,并且很想知道这些指令的作用以及每条指令后存储在 r5 寄存器中的内容。有人可以解释一下吗?
MOV
将值移动到目的地。在这种情况下R5
,将包含值 0x0055。
BIC
清除目标值中的位。如果 R5 在指令之前包含 0x0055,则它将包含值 0x0011。(将其视为反向指令)。
BIS
设置位——这实际上与or操作相同。R5
在此指令之后将具有值 0x1155。
MOV.w #0x0055,R5
执行以下操作: src → dst
BIC.w #0xFFEE,R5
执行以下操作not.src .and. dst → dst
BIS.w #0x1144,R5
执行以下操作:src .or. dst → dst
只需查看MSP 430 用户指南
BIS[.W] 设置目标位 BIS.B
设置目标位语法 BIS src,dst 或
BIS.W src,dst BIS.B src,dst操作 src .OR。dst -> dst
说明 源操作数和目标操作数进行逻辑或运算。结果被放入目的地。源操作数不受影响。
状态位 状态位不受影响。
模式位 OSCOFF、CPUOFF 和 GIE 不受影响。
示例 RAM 字 TOM 的六个 LSB 已设置。
BIS #003Fh,汤姆;设置 RAM 位置 TOM 中的六个 LSB
示例 RAM 字节 TOM 的三个 MSB 被设置。
BIS.B #0E0h,汤姆; 设置 RAM 位置 TOM 中的 3 个 MSB
当然:
BIC[.W] 清除目标中的位 BIC.B
清除目标中的位语法 BIC src,dst 或
BIC.W src,dst BIC.B src,dst操作 .NOT.src .AND。dst -> dst
说明 反转的源操作数和目标操作数是逻辑与。结果被放入目的地。源操作数不受影响。
状态位 状态位不受影响。
模式位 OSCOFF、CPUOFF 和 GIE 不受影响。
示例 RAM 字 LEO 的六个 MSB 被清零。
BIC #0FC00h,LEO ; 清除 MEM(LEO) 中的 6 个 MSB
示例 RAM 字节 LEO 的五个 MSB 被清除。
BIC.B #0F8h,LEO ; 清除 RAM 位置 LEO 中的 5 个 MSB
我能够在这个网站上找到带有相关链接的用户指南
现有答案中缺少的一条信息是 .W 与 .B 的重要性。
从第 56 页的 MSP430F24x 用户指南 (SLAU144J) 的第 3.4 节中指定,
黑白:
字节或字操作:
0:字操作
1:字节操作
值得注意的是,默认是指令对一个字进行操作。