[汇编]关于neg求补指令的困惑

2024-12-20 17:51:17
推荐回答(4个)
回答1:

NEG 的操作是:0-操作数 没错。
并且使得CF=1(但是对0求补除外)这是汇编的规定。
而且对-128,-32768,-2147483648等数求补时,OF=1,其余情况OF=0,这也是汇编的规定。
如果你硬是要理解为什么CF是这么规定的
你可以这样理解NEG操作,即:
0FFFFH-操作数+1 这种方法和 0-操作数 是等效的

回答2:

neg al,它的操作是用0减去目的操作数。

0-0000 0000 肯定是要产生借位的...--不会产生借位,CF=0,正确。

回答3:

首先,求补与求补码是两个不同的概念,所以才有了求补码分正负数,而求补是不分正负数的情况。
第二,关于求补的解释:求补其实就是一种类似减法的运算,是要改变原数正负号的。其实取反就是去相反数的概念...(PS:那翻译成“求补”干毛哦!顿时好纠结)
第三,关于求补末位加1的问题。这是因为0000求补后为ffff,此时就出现了+0和-0的情况。为了屏蔽这种纠结的答案,所以加1是必要的。再举个简单的例子,0001即+1,取反后为1110,此时只有末位加1变为1111才能表示-1.所以取反后末位加1是必要的。

嗯,概括起来就差不多是这样的解释,那么可以看到,其实大家就把求补指令NEG理解为求相反数就OK了。就这么简单。嘿嘿~~

回答4:

我是初学NEG指令的新手,有个关于NEG指令的问题希望大家解答,谢谢。 NEG指令怎么会不变呢。负数求补那是正数,正数求补那是负数。 比如: 0001假设第