我正在解决一个汇编程序问题,但偶然发现了一个逻辑方面的问题。 让我思考的是,在将数字系统从HEX更改为BIN并进行求反和AND操作后,我得到的答案不同于其他人(我无法联系)。
MOV eax, 0f0f0f0f0h;
MOV edx, 87654321h;
NOT ax;
INC dx;
AND edx, eax;
我期望输出是这样的:80604020h这是答案之一,但是另一个人做出了决定并回答了:80600302h对我而言,算术后没有任何意义。我还是一个新手,所以我可能不知道出什么问题了,有人可以解释我的答案有什么问题吗?还是正确的答案?
答案 0 :(得分:2)
让我们一次接受一条指令。 NOT ax
会将EAX更改为
0F0F0F0F0
到
0F0F00F0F
因为AX是EAX的低16位。然后INC dx
会将EDX更改为
87654321
到
87654322
然后AND edx,eax
指令会将它们组合起来
0F0F00F0F
& 87654322
= 80600302
哪个可以使您朋友的答案正确?
如果NOT指令为NOT EAX
,则答案为07050302。