【发布时间】:2012-10-15 17:47:40
【问题描述】:
我试图了解这些指令对 MSP 430 处理器的作用:
(1) MOV.w #0x0055,R5
(2) BIC.w #0xFFEE,R5
(3) BIS.w #0x1144,R5
我找不到太多解释汇编指令的内容,我很想知道这些指令的作用以及在每条指令之后存储在 r5 寄存器中的内容。谁能解释一下?
【问题讨论】:
我试图了解这些指令对 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
BIS[.W] 设置目标 BIS.B 中的位
在目的地设置位语法 BIS src,dst or
BIS.W src,dst BIS.B src,dst操作 src .OR。 dst -> dst
描述 源操作数和目标 操作数进行逻辑或运算。结果放入 目的地。源操作数不受影响。
状态位 状态位不受影响。
模式位 OSCOFF、CPUOFF 和 GIE 不是 受影响。
示例 RAM 字 TOM 的六个 LSB 是 设置。
BIS #003Fh,TOM;设置 RAM 位置 TOM 中的六个 LSB
示例设置 RAM 字节 TOM 的三个 MSB。
BIS.B #0E0h,TOM ;在 RAM 位置设置 3 个 MSB 汤姆
当然:
BIC[.W] 清除目标 BIC.B 中的位
清除目标中的位语法 BIC src,dst or
BIC.W src,dst BIC.B src,dst操作.NOT.src .AND。 dst -> dst
说明 反转源操作数和 目标操作数是逻辑与。结果放入 目的地。源操作数不受影响。
状态位 状态位不受影响。
模式位 OSCOFF、CPUOFF 和 GIE 不是 受影响。
示例 RAM 字 LEO 的六个 MSB 是 清除。
BIC #0FC00h,LEO ;清除 6 个 MSB 内存(LEO)
示例 RAM 字节 LEO 的五个 MSB 是 清除。
BIC.B #0F8h,LEO ;清除 5 个 MSB Ram 位置 LEO
我在very website 上找到了带有相关链接的用户指南
【讨论】:
现有答案中缺少的一条信息是 .W 与 .B 的重要性。
从第 56 页的 MSP430F24x 用户指南 (SLAU144J) 的第 3.4 节中指定,
黑白:
字节或字操作:
0:字操作
1:字节操作
值得注意的是,默认是指令对一个单词进行操作。
【讨论】: