汇编语言如何触发溢出

2025-03-04 09:09:38
推荐回答(5个)
回答1:

汇编语言中溢出是指超出数据所表示的范围。通俗地说是装不下了,比如,两个带符号的字节数127和2相加,结果为-1,因为带符号的字节数最大正数为127,所以超过范围,溢出标志位为1,说明出错了。 汇编语言中存储的数是有一定范围的,无符号字节存储的范围为0~255,带符号字节存储范围为-128~+127。
1、对于非符号数来说,不存在溢出的问题,它的进位就相当于符号数中的溢出.
2、对于符号数来说,不存在进位的问题.两个正数相加(或一个正数减一个负数)得到负数,或是两个负数相加得到正数,这就是溢出了.此时的结果不是正确的。
附加:
与进位的区别:进位表示最高位有没有向上形成进位,或向个形成借位,如果有则进位标志为1,但结果没错。

回答2:

溢出的判断是看运行结果的符号和进位标志。如果两个整数相加结果为负,或两个负数相加结果为正,就表示溢出了。对于第一段相加指令的结果为8位al=86h,符号位还是负数,所以溢出标志判断为不溢出(NV),而进位标志CF变为1了,表示8位字节已经表示不了这个运算结果了。

回答3:

下面的程序没有溢出

0c3h=-67,-67-67=-134,已经超出了8位有符号的范围(-128~127),

debug 的时候却发现没有溢出

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

当然不会溢出。

C3H,是-61 的补码。

C3 + C3,即代表:

-61 -61 =-122。

并不超出-128。

你的错,在于:c3h=-67。

你再算算看吧。



回答4:

汇编就没有负数,都是0-255,下面两个都超了,当然溢出。

回答5:

0c3h好像等于-61 不是等于-67