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

时间:2010-04-26 18:10:32

标签: assembly x86 xor masm

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

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

2 个答案:

答案 0 :(得分:9)

这里的诀窍是执行以下操作:

  1. 使用OR指令设置位0,3,4和7

  2. 使用XOR指令补充位0,1,5和7

  3. 注意,第0位和第7位首先在(1)中设置,然后在(2)中清零。

    我会把实际的asm说明留给你,因为毕竟这是你的作业。

答案 1 :(得分:4)

一个DB指令定义256个“结果”值的数组,以及一个移动指令,用于将此数组的元素移动到al中,使用al中的当前值作为索引。

那不行吗?

甚至可能有人认为这实际上甚至是单指令解决方案,因为DB实际上并不是在运行时执行的指令,而是一个编译时声明。