div除法溢出时,CPU怎么判断的溢出?是某个标志位还是其他什么?
------解决方案--------------------
div除法溢出时,会触发异常0,标志寄存器的OV位不会设置。
CPU判断div除法溢出是根据结果作出的,如果64位/32位运算结果商大于32位无符号整数,或者32位/16位运算结果商大于16位无符号整数,则溢出。
------解决方案--------------------
被除数的高半部分大于等于除数时,产生除法溢出,然后直接转0号中断。
------解决方案--------------------
逻辑上这样判断是可以的,但是在硬件实现上通常不会这么做,实际运算中出现溢出的概率是很低的,先进行比较会导致指令执行效率降低。
------解决方案--------------------
不是的。 指令在CPU内是如何完成的,我不熟悉,不知“微机原理”或其他课中有无讲解。所以我不知道CPU具体是怎么判断除法溢出的。
产生“除法溢出”的原因只有“被除数的高半部分大于等于除数”(如0200H/2,0002 0000H/2等,当然包括xxxxH/0),出现这种情况,就引发中断int 0去处理.