當前位置:編程學習大全網 - 編程語言 - 關於匯編指令DIV中的除數與被除數

關於匯編指令DIV中的除數與被除數

8086 支持兩種除法指令,除數分別是 8 位和 16 位數。

它們的商,也必須是?8 位或 16 位數。

如果,被除數過大、除數過小,商,就有可能超出預定的位數,這就是“除法溢出”。

壹旦發生“除法溢出”,就會出現:Divide? overflow,系統就要崩潰了

當然,使用高檔次的 CPU,字長,增多壹些,可以彌補壹些這種缺點。

因此,有許多人,都不想在編程的方面下功夫,只是寄希望於新型的 CPU。

但是,在實際應用中,被除數,還是有可能非常的大。

總不能為此,等待壹個大型的 CPU 問世吧?

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

實際上,用低擋次的除法指令,多次操作,也可以實現大數除法。

只要令“商的位數”和“被除數的位數”相同,就不會溢出了。(除數為零除外)

大數除法的思路,可用小學學過的除法的豎式來說明如下:

左圖,是執行最簡單的除法指令(DIV? BL)的操作示意。

右圖,是用這條指令,計算:(1A 2B 3C 4D)/ BL。

被除數有四個字節,這就需要使用四次 DIV? BL。

從而得到:四個字節的商,以及四個字節的余數。

前三次的余數,要在下壹次相除時,作為“被除數的高字節”。

最後壹次的余數,就是總的余數。

第壹次相除的高字節,要用 00H。

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

圖中,僅僅畫了四個字節的被除數。

而實際上,使用這種方法,並沒有字節數的限制。

所以,無論多大的被除數,都可以求出相等字節數的商。

看看吧,很容易理解的。

看懂了,妳就可以自己編寫程序了。

如果“多字節的加減乘除”都不會編程,那就去學習?C?語言吧。

  • 上一篇:C語言結構體題
  • 下一篇:長春師範大學機械設計制造及自動化怎麽樣
  • copyright 2024編程學習大全網