assembly - 最多写两条指令来清除、设置和补充 AL 寄存器中的某些位

标签 assembly x86 xor masm

您需要在汇编中最多编写两条指令才能执行以下操作:

  • 清除寄存器 AL 的第 0 位和第 7 位,即使它们为 0
  • 设置寄存器 AL 的第 3 位和第 4 位,即使它们为 1。
  • 补充寄存器 AL 的第 1 位和第 5 位。
  • 将寄存器 AL 中的所有其他位保持原样,而不更改它们的值。
  • 最佳答案

    这里的技巧是执行以下操作:

  • 使用 OR 指令设置位 0、3、4 和 7
  • 使用 XOR 指令对位 0、1、5 和 7 进行补码

  • 请注意,位 0 和 7 首先在 (1) 中设置,然后在 (2) 中清除。

    我会把实际的汇编指令留给你,毕竟这是你的功课。

    关于assembly - 最多写两条指令来清除、设置和补充 AL 寄存器中的某些位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715754/

    相关文章:

    performance - 矛盾的 VTune 放大器微架构探索结果

    bit-manipulation - 异或可逆运算题

    c - 缓冲区溢出攻击分段故障(核心转储)

    assembly - 十六进制中的NULL是什么

    assembly - CALL 指令是否总是将 EIP 指向的地址压入堆栈?

    assembly - 在 GCC 内联汇编中影响内存操作数寻址模式的早期破坏者的不正确行为的具体示例?

    assembly - 具有只写目标并在英特尔的任何端口上运行的 x86 非 mov 指令?

    c - 在 C 中解码密文时出现大小问题

    c++ - 使用引用或指针通过 xor 运算符交换两个变量的值

    assembly - 在引导加载程序中启动之前的 cli