您需要编写最多两条汇编指令来完成以下操作: 清除寄存器AL中的第0位和第7位,即将它们设为0 设置寄存器AL中的第3位和第4位,即将它们设为1。 对寄存器AL中的第1位和第5位进行补码运算。 保留寄存器AL中所有其他位的值,不改变它们的值。
在这里的技巧是: 使用 OR 指令来 设定 0、3、4 和 7 号位 使用 XOR 指令来 翻转 0、1、5 和 7 号位 注意,在步骤 (1) 中,0 和 7 号位首先被设定,然后在步骤 (2) 中被清除。 由于这是你的家庭作业,我会留下真正的汇编指令给你完成。
一个DB指令定义了一个包含256个“result”值的数组,再加上一个move指令将该数组的一个元素移动到al寄存器中,使用al寄存器当前的值作为索引。这样做可行吗?甚至可以认为这实际上是一种单指令解决方案,因为DB不是在运行时执行的指令,而是编译时声明的。
al -> al & 0b01111110 | 0b00011000 ^ 0b00100010
。难点在于将其简化为两条指令。 - kennytm