汇编语言溢出和进位的判断

有题AX=1478H,BX=80DCH,判断AX+BX是否溢出和进位,根据结果跳转程序疑问:不是说有符号数只有溢出,无符号数只有进位么?那为什么能同时判断一个运算式是否溢出、进位。还有,汇编里默认的数带符号么?

在算术运算指令中,操作数是有符号数,最高位是符号位,负数用补码表示。在运算产生的若干标志位中,符号标志位反映的是运算结果的最高位。进位标志位是在运算中最高位产生进位时被置位。而溢出标志位要跟据操作类型、进位标志、以及运算结果的符号位变化来确定置位或复位。即两个操作数运算时:
○ 符号不同加法: 必无溢出;
○ 符号相同加法: 无进位, 无符号改变→无溢出;
○ 符号相同加法: 有进位→溢出;
○ 符号相同加法: 无进位, 符号改变→溢出;
○ 减法操作实际是减数为补码的加法运算。
可对照题目中代码运行结果验证。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-20
其实在单步调试时,你会看到AX+BX执行后,所有该变化的标志位都变化了,如进位,溢出,符号,等等,因此关键是你关心的是什么标志位,就是说在汇编语言里,你必须得知道你在做判断时,需要检测哪一个标志位,才是合理的;
如执行 AX+BX--->CX,那么此时的溢出及进位标志,就具有相同的性质,做判断时,两个标志位都可以用;
如执行 AX+BX--->ECX,那么此时你要去判断的就是进位标志;本回答被网友采纳
第2个回答  2021-08-05

因为不管带不带符号,二进制数的运算方法,都是一样的。

所以,CPU 并不区分:你的数字,是否带符号。

CPU 在算完后,会同时给出“两种数字”运算的标志。

所以,在 ADD 指令下面,你可以随意编写转移指令。

第3个回答  2019-04-18
标志的设置与你用的指令有关。同一个数,你用无符号指令,它就会被视为无符号数,反之就是有符号数。本回答被网友采纳
第4个回答  2022-09-26

有题AX=1478H,BX=80DCH,判断AX+BX是否溢出和进位,根据结果跳转程序

疑问:

不是说有符号数只有溢出,无符号数只有进位么?----对。

那为什么能同时判断一个运算式是否溢出、进位。----能。

还有,汇编里默认的数带符号么?----带符号、无符号,都有。

---------------------

无论你定义的“无符号”或“带符号”数,在计算机中,都是用“二进制代码”来存储。

CPU 计算时,并不知道这个二进制,究竟是什么数字。

CPU 算完后,会同时给出两种标志位 CF、OF,供你使用。

相似回答