要执行定时器中断,要在程序开始就打开定时器中断。当产生溢出后,程序会直接跳到中断程序(不用加跳转指令)。当中断程序执行完毕后,程序会跳回到执行中断程序前的程序处继续运行。
至于如何打开定时器中断,请参考资料。
80x86 的 0 号中断,是针对“除数为零”而设置的。
如果在程序中,做除法之前加以判断,避免除数为零,
那么,0 号中断,就不会发生了。
那么,再这么认真的学习这块内容,就没有实用意义了。
-------------------------
CPU 执行除法指令,确实是容易发生溢出。
一般来说,当被除数的高位,大于等于除数时,就会发生“溢出”。
如果你编写一个“不会溢出”的除法程序,这些问题,就都没有了。
参考下图:
在右图中,
被除数:1A 2B 3C 4DH,有 32 位数。
除数是:BL,仅有 8 位数。
商,是:32 位数。
按照图中的步骤,需要执行四次 DIV BL。
只要 BL 不为零,就绝对不会发生溢出。
按此思路,被除数的字节数,还可以增加,仅受制于内存的大小。
这就是说:这种除法程序,被除数,可以认为是无限大的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)