assembly - 了解 bset 和 bclr

标签 assembly bit-manipulation 68hc12

我遇到了教授制作的一个示例,这让我质疑自己对 bsetbclr 汇编命令的理解。

如果我这样做:

bset BITS,80

我是在两者之间执行 AND 或 OR 运算吗?我的引用指南说 bset 这样做:

M <= M + mask

+ 是 OR 还是 AND 运算符? bclr 是相同的命令,但使用掩码的补码执行操作。

最佳答案

位设置和清除分别意味着按位或运算和与运算。 BSET应该做OR,BCLR应该做有效的AND。

BCLR 可能只是简单地与您提供的位向量进行 AND 运算,或者 BCLR 与位向量的补码进行 AND 运算(我的猜测),具体取决于指令集设计者的水平。

关于assembly - 了解 bset 和 bclr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13849931/

相关文章:

assembly - 对 68HC12 上的一个字节进行位反转

c - 带循环的反编译协助

c++ - 未使用的 asm() 在不受支持的架构上的行为

c - _IO_puts 和动态指令计数

javascript - `Math.trunc` vs `|0` vs `<<0` vs `>>0` vs `&-1` vs `^0`

c - 在C中反转条形图的方向

gcc - 如何关闭 MIPS-GCC 自动指令重新排序?

c - 在 C 中交换数字中的位

将负十进制转换为二进制