MSP430汇编指令

6

我正在尝试理解这些指令对MSP 430处理器的作用:

(1) MOV.w  #0x0055,R5
(2)   BIC.w  #0xFFEE,R5
(3)   BIS.w  #0x1144,R5

我找不到很多关于汇编指令的解释,想知道这些指令的作用以及每个指令执行后 r5 寄存器中保存的内容。能否有人解释一下?

3个回答

15

MOV指令将一个值移动到目标位置。在本例中,R5将包含值0x0055。

BIC指令清除目标值中的位。如果在该指令之前R5包含0x0055,则它将包含值0x0011。(可以将其视为反向的and操作)。

BIS指令设置位--这实际上与or操作相同。执行此指令后,R5将具有值0x1155。


5

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,dst

Operation 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,dst

Operation .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

我在这个网站上找到了此用户指南的相关链接。

1
有什么可能的原因会让任何人对这个问题进行负投票? - Security Hound
也许他们反对给那些问了不好的问题的人喂食,或者认为将那么多的文档复制到答案中是过度的。我认为有些人只是会对他们认为不应该存在的问题以及大部分回答进行投票。 - Peter Cordes

1
现有答案中缺少的一些信息是.W和.B的重要性。
来自MSP430F24x用户指南(SLAU144J)第56页的第3.4节规定:
B/W: 字节或字操作: 0:字操作 1:字节操作
值得注意的是,默认情况下指令对一个字进行操作。

这不是相同的指令集或语法,但是此链接描述了后缀,在许多汇编语言中都比较常见(并非全部)。https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax#Operation_Suffixes - AKstat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接