我正在尝试理解这些指令对MSP 430处理器有什么作用:
(1) MOV.w #0x0055,R5
(2) BIC.w #0xFFEE,R5
(3) BIS.w #0x1144,R5我没有找到太多解释汇编指令的东西,我很想知道这些指令是做什么的,以及在每条指令之后r5寄存器中存储了什么。有人能解释一下吗?
发布于 2012-10-16 04:27:23
MOV将值移动到目标位置。在本例中,R5将包含值0x0055。
BIC清除目标值中的位。如果R5在指令前包含0x0055,则它将包含值0x0011。(可以把这看作是一个颠倒的and指令)。
BIS设置位--这实际上与or操作相同。在此指令之后,R5的值将为0x1155。
发布于 2012-10-16 01:59:06
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 User Guide就知道了
BIS.W设置目标BIS.B中的位
在目标中设置位
语法BIS src、dst或
BIS.W src,dst BIS.B src,dst
操作源.OR。dst−> dst
说明源操作数和目标操作数在逻辑上为ORed。将结果放入目的地。源操作数不受影响。
状态位状态位不受影响。
模式位OSCOFF、CPUOFF和GIE不受影响。
例如,设置RAM字TOM的六个LSB。
BIS #003Fh,TOM;在RAM位置TOM中设置六个LSB
例如设置RAM字节TOM的三个MSB。
BIS.B #0E0h,TOM;在RAM位置TOM中设置3个MSB
当然:
BIC.W清除目标BIC.B中的位
清除目标中的位
语法BIC src、dst或
BIC.W src,dst BIC.B src,dst
Operation .NOT.src .AND。dst−> dst
说明反转的源操作数和目标操作数在逻辑上为ANDed。将结果放入目的地。源操作数不受影响。
状态位状态位不受影响。
模式位OSCOFF、CPUOFF和GIE不受影响。
例如,清除RAM字LEO的六个MSB。
BIC #0FC00h,LEO;清除MEM中的6个MSB(LEO)
例如,清除RAM字节LEO的五个MSB。
BIC.B #0F8h,LEO;清除Ram位置LEO中的5个MSB
我在此very website上找到了此用户指南和相关链接
发布于 2016-08-26 03:31:24
现有答案中缺少的一条信息是.W与.B的重要性。
从第56页的MSP430F24x用户指南(SLAU144J)的3.4节中指定,
黑屏:
字节或字操作:
0: word操作
1:字节操作
值得注意的是,默认情况下,指令对一个单词进行操作。
https://stackoverflow.com/questions/12901160
复制相似问题