8086汇编语言中的DIV指令溢出问题(回答的好会加分)?汇编里面,进位一定溢出吗

本文目录
- 8086汇编语言中的DIV指令溢出问题(回答的好会加分)
- 汇编里面,进位一定溢出吗
- 汇编除法溢出解决办法的问题
- 汇编语言中溢出和进位的不同
- 汇编中的 减法加法的溢出,怎么才会溢出,懂的来!
- 汇编语言溢出和进位的判断
- 汇编语言 溢出的判断标准可以理解这个样子吗 正正相加得负 负负相加得正 正负相减得负 负正相减得正
- 汇编语言.两有符号数运算,如何自己判断是否溢出
8086汇编语言中的DIV指令溢出问题(回答的好会加分)
DIV CX!
CPU 的计算是:DX:AX / CX = AX ... DX。
这是“32 位数除以 16 位数”。 商、余数,都是 16 位数。
你的程序,没有对 DX 进行初始化,你就执行了多次 DIV CX!
结果,难以预料。
如果,被除数较大,或除数较小,都可能使“商”超出 16 位数,此时,就会溢出。
当除数为零时,必然会出现:Divide overflow。
此外,当被除数的高位,大于等于除数时,也会发生“溢出”。
直接使用 DIV 指令,有一定的风险,一不小心就溢出了。特别是数字不确定的时候。
一般来说,在执行 DIV 指令之前,应该加以判断,以免发生溢出。
-----------------------
较好的方法是:编写一个“不会溢出”的除法程序。
方法思路如下:
在右图中,
被除数:1A 2B 3C 4DH,有 32 位数。
除数是:BL,仅有 8 位数。
商,是:32 位数。
按照图中的步骤,需要执行四次 DIV BL。
只要 BL 不为零,就绝对不会发生溢出。
汇编里面,进位一定溢出吗
不一定。进位是指最高位进1,溢出是指最高位和次高位进位不一样。进位表示无符号数运算超范围,溢出表示有符号数超范围。溢出可分3中情况分析,以加法为例:1.都是正数,最高位都是0,如果次高位进位,结果最高位为1,因为是补码运算,即结果是负数,出错。2.一正一负,永远不会出错,最高位一个1一个0,结果次高位进位最高位就会进位,永远不溢出。3.2个负数,最高位都是1,最到位肯定进位,如果不进位最高位结果为0正数,不对。所以溢出是补码运算结果超出表示范围的意思。
1111 1111 -1
+1111 1111 -1
--------------
1 1111 1110 -2
进位不溢出。
汇编除法溢出解决办法的问题
CPU 执行除法指令 DIV CX、DIV BL,是有可能溢出的。
特别是除数为零时,必然会出现:Divide overflow。
此外,当被除数的高位,大于等于除数时,也会发生“溢出”。
你问:“如果/N的结果,商大于65535,那不是照样溢出?”
你这问题,是不成立的。
“余数 * 65536 ”中的“余数”,就是高八位,它是小于除数的。
那么“余数 * 65536 + L”再除以除数,得到的商,就不会大于 65535。
-----------------------
一般来说,在执行 DIV 指令之前,应该加以判断,以避免溢出。
较好的方法是:编写一个“不会溢出”的除法程序。
方法思路如下:
在右图中,
被除数是:1A2B3C4DH,有 32 位数。
除数是:BL,仅有 8 位数。
商,是:32 位数。
按照图中的步骤,只要 BL 不为零,就绝对不会发生溢出。
汇编语言中溢出和进位的不同
在小学学过:自然数、整数。
存入计算机后,就改称为:无符号数、带符号数。
不论什么数,在计算机中,都是用“二进制机器码”表示和存储。
8 位的二进制机器码,可代表
无符号数的范围是:0~255。
带符号数的范围是:-128~+127。
当运算结果,超出了上述的范围,必然就会溢出。
溢出,本应是通用的名词。
但是,在 Intel 设计的 CPU 中,就分成了“进位”和“溢出”两种说法。
-----------------------
Intel 设计 CPU 时,规定了两个标志位。
无符号数运算结果超出上下限,将有:CF = 1,这就叫做“进位”。
有符号数运算结果超出上下限,将有:OF = 1,这才叫做“溢出”。
示意图如下:
无论出现 CF=1 或 OF=1,都说明,运算结果,已经超出 8 位二进制的容纳范围。
那么,仅仅以 8 位二进制,当做运算结果,肯定是错误的。
对于无符号数来说,把 CF=1 算在内,共有 9 位的结果,这就是正确的。
但是,对于带符号数运算来说,一旦 OF=1,就无法得到正确的结果。
汇编中的 减法加法的溢出,怎么才会溢出,懂的来!
加减法的溢出是对有符号数来说的。
例如:
进行8位有符号数据的加减,其结果无法用8位有符号数表达,则发生溢出。
8位有符号数的表达范围是:-128~127
计算127+1,结果是128,有符号数据128无法用8位寄存器表示,则产生了溢出。
计算-120-10,结果是-130,有符号数据-130无法有8位寄存器表示,则产生了溢出。
同理,16位有符号数范围是:-32768~32767
汇编语言溢出和进位的判断
在小学学过:自然数、整数。
存入计算机后,就改称为:无符号数、带符号数。
不论什么数,在计算机中,都是用“二进制机器码”表示和存储。
8 位的二进制机器码,可代表
无符号数的范围是:0~255。
带符号数的范围是:-128~+127。
当运算结果,超出了上述的范围,必然就会溢出。
溢出,本应是通用的名词。
但是,在 Intel 设计的 CPU 中,就分成了“进位”和“溢出”两种说法。
-----------------------
Intel 设计 CPU 时,规定了两个标志位。
无符号数运算结果超出上下限,将有:CF = 1,这就叫做“进位”。
有符号数运算结果超出上下限,将有:OF = 1,这才叫做“溢出”。
示意图如下:
无论出现 CF=1 或 OF=1,都说明,运算结果,已经超出 8 位二进制的容纳范围。
那么,仅仅以 8 位二进制,当做运算结果,肯定是错误的。
对于无符号数来说,把 CF=1 算在内,共有 9 位的结果,这就是正确的。
但是,对于带符号数运算来说,一旦 OF=1,就无法得到正确的结果。
在汇编语言中,你可以根据 CF、OF 的值,分别判断进位和溢出。
汇编语言 溢出的判断标准可以理解这个样子吗 正正相加得负 负负相加得正 正负相减得负 负正相减得正
容器太小,盛不下了,就会溢出。
两种常用的数字,在计算机中,都是用机器码代表的。其范围如下:
机器码,无论代表什么数字,只要运算结果超出范围,就是【溢出】。
但是,在计算机专业人的嘴里,就不一样了。
【无符号数的溢出】,不叫溢出,要叫做【进位】。
【带符号数的溢出】,才叫做【溢出】。
搞计算机的这些人,基本概念不清,却自命不凡!
冒充脑回路清奇。。。正常人对此,就只能无语了。
---------------------------
那么,就按照计算机专业的说法吧:
溢出,是指“补码运算结果超出范围”。
溢出的特征,是“符号错误”。
知道了这些,判断是否溢出,就很容易了。
一、无符号数的运算,肯定不会溢出。只有进位。
二、只有:正+正、负+负,才有可能超出范围。不是这些,就绝不会溢出。
三、人工用数值计算。和,如果没有超出范围,就没有溢出。
四、人工用补码计算。和的符号,如果正确,就没有溢出。
五、编个程序,让计算机计算。然后观察溢出标志位,为零,就没有溢出。
六、人工用补码计算,如“最高位的进位”和“次高位的进位”相同,就没有溢出。
第六种,本是 CPU 的硬件所用的方法。
硬件,其理论基础,是很晦涩难懂的。
异或运算,一般也不需要初学者掌握。
但是,一些爱得瑟的老师,偏爱介绍这种方法。
其实,这是很无聊的表现,总想难为难为学生。
汇编语言.两有符号数运算,如何自己判断是否溢出
计算机中的溢出,是指数据过大,超出了预定的范围。
八位二进制,可以代表自然数:0~255;
也可以代表整数:-128~+127。
判断溢出,常用的方法:
1。你用十进制,人工计算。和,在容许范围之内,就没有溢出。
这种方法最简单。而且,对无符号数、带符号数,都是适用的。
2。你用二进制,人工计算。和的符号,属于合理,就没有溢出。
这种方法稍稍麻烦。只能判断“带符号数”的溢出。
3。你编个程,让 CPU 计算。如果 OF = 0,就没有溢出。
这种方法,难度较大。
4。你把两个数据,显示出来,求大家帮你判断。
在你那边,网络通了吧。

更多文章:
两张表格vlookup怎么用函数(vlookup函数如何两张表匹配)
2025年11月3日 23:45
available怎么记(availability和available怎么区分怎么用)
2025年10月30日 07:45
instragm(instragm华为手机怎么下载华为应用市场内找不到App,请求大家分享)
2026年3月14日 03:15
access集团待遇怎么样(杭州access集团待遇怎么样)
2025年12月26日 18:15
如何在数据上直接使用round函数(excel中ROUND函数怎么用)
2026年2月17日 20:15
从一段文字中提取日期(excel中的一段文字,我想提取对话中的日期,这个该怎么提取啊 举例:如图)
2026年2月17日 10:00
jdkwin7环境变量配置(Win7系统如何设置添加Java环境变量)
2026年2月17日 05:30
asp网站上传文件大小限制(asp网站的上传文件在本地测试正常,上传到空间后,却上传不了大文件,是空间限制了吗,怎么改谢谢)
2026年8月8日 07:00
三菱plc程序中k0 编写(三菱plc编程ko加线头怎么输入)
2026年1月17日 20:00
vuerouter只能用于vue吗(简单说说如何使用vue-router插件的方法)
2025年10月16日 22:15
closer歌曲简谱(求chainsmokers的closer简谱)
2025年9月24日 04:15












