7

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

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

2 回答 2

9

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

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

  2. 使用 XOR 指令对位 0、1、5 和 7进行补码

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

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

于 2010-04-27T05:16:02.673 回答
4

一条 DB 指令定义了一个包含 256 个“结果”值的数组,一条移动指令将该数组的一个元素移动到 al 中,使用 al 中的当前值作为索引。

那不行吗?

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

于 2010-04-26T18:27:54.960 回答