回 帖 发 新 帖 刷新版面

主题:一个小小的问题,望能得到解决---谢谢!

我刚学汇编语言,有一个问题搞不懂,就是在补码运算时,有时会进位,有时会溢出,但什么时候是进位,什么时候是溢出,到现在我还没搞懂,希望能得到哪位大侠的指点。不甚感激!!!!!!!!!!

回复列表 (共5个回复)

沙发

neg dst
求补指令
其实就是对dst按位取反,然后加1

板凳

其实你也可以这样理解
如果是16位的:
(dst) = 0FFFFh-(dst)+1
跟普通运算一样
本指令影响标志位CF、OF、SF、PF、ZF及AF

3 楼

简单说:进位是正负数运算时所产生的一种现象。它所得出的结果是正确的,并没有跃过总位数所能表示的范围。
      而溢出不同,顾名思义溢出就是数值超过位数所能表示的范围。它的结果是错误的。
   刚学时都是这样,以后你用多了(特别是学了转移指令后)就能知道怎么用了。

4 楼

补码运算中,溢出可以这样理解啊````
两个正数相加,如果结果为负数,则溢出
两个负数相加,如果结果为正数,则溢出.

5 楼

我同意上一楼的说法,溢出一般是出现带符号数的运算中的,比如两个正数的和是负数,或两个负数的和为正数,则一定是溢出的,而无符号数的运算中就不会出现溢出了,只是有时候最高位会由于低位的运算多出一位,这就是进位了,可以弃掉的,呵呵!

我来回复

您尚未登录,请登录后再回复。点此登录或注册