我正在尝试理解这些指令对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。(可以将其视为反向的and操作)。
BIS
指令设置位--这实际上与or操作相同。执行此指令后,R5
将具有值0x1155。
MOV.w #0x0055,R5
的作用是:将 src
源操作数的值移动到 dst
目标操作数中。
BIC.w #0xFFEE,R5
的作用是:将反转后的 src
源操作数和 dst
目标操作数进行逻辑 "AND" 运算,结果存储在目标操作数中。
BIS.w #0x1144,R5
的作用是:将 src
源操作数和 dst
目标操作数进行逻辑 "OR" 运算,结果存储在目标操作数中。
请查看MSP430用户指南
BIS[.W] 在目标中设置位 BIS.B
在目标中设置位Syntax BIS src,dst 或
BIS.W src,dst BIS.B src,dstOperation src .OR. dst −> dst
Description 将源操作数和目标操作数进行逻辑 "OR" 运算, 结果存放在目标操作数中。不会影响源操作数。
Status Bits 状态位不受影响。
Mode Bits OSCOFF, CPUOFF 和 GIE不会受到影响。
Example 设置 RAM 单词 TOM 的最低有效位。
BIS #003Fh,TOM; 在RAM地址TOM中设置6位的LSB
Example 清除 RAM 字节 TOM 的三个最高有效位。
BIS.B #0E0h,TOM ; 在RAM地址TOM中清除3位的MSB
当然:
我在这个网站上找到了此用户指南的相关链接。BIC[.W] 在目标中清除位 BIC.B
在目标中清除位Syntax BIC src,dst 或
BIC.W src,dst BIC.B src,dstOperation .NOT.src .AND. dst −> dst
Description 将反转后的源操作数和目标操作数进行逻辑 "AND" 运算,结果存放在目标操作数中。不会影响源操作数。
Status Bits 状态位不受影响。
Mode Bits OSCOFF, CPUOFF 和 GIE不会受到影响。
Example 清除 RAM 单词 LEO 的六个最高有效位。
BIC #0FC00h,LEO ; 在MEM(LEO)中清除6位的MSB
Example 清除 RAM 字节 LEO 的五个最高有效位。
BIC.B #0F8h,LEO ; 在RAM地址LEO中清除5位的MSB