彙編中的除法溢位的解決

2021-06-21 22:20:38 字數 560 閱讀 3496

說明: 除法的指令為div + 8位(16位)

是8位時,會預設被除數是ax暫存器中的16位,商會儲存在al中,ah儲存餘數

是16位時,會預設被除數是dx(為高位)和ax(低位)組成的32位,商儲存在ax中,餘數儲存在dx中

問題:當有式子1000/1  

mov ax,1000

mov bl,1

div bl

則會把商1000放到al中,由於超過了256,所以會產生溢位。

解決方法:可以把ax拆開來分別進行算。

mov ax,1000

mov bl,1

push al         ;把低四位的儲存起來

mov al,ah  

mov ah,0      ;先計算高位的   

div bl            ;商放到al中,餘數放到ah中

mov dl,al     ;儲存高四位的商 

pop al           ;取出低四位

div bl            ;低四位的商放到al中,餘數放到ah中

很好的解決了溢位的問題:

組合語言實驗10 解決除法溢位

實驗二 解決除法溢位 assume cs code,ss stack stack segment dw 8 dup 0 stack ends code segment start mov ax,stack 初始化棧 mov ss,ax mov sp,16 mov ax,0ffffh 被除數低位 mo...

組合語言 實驗10 2 解決除法溢位的問題

寫給自己的一些題外話 因為各種各樣 考試,加上萎靡的精神狀態 的原因,在這一題卡了好幾天,就是搞不懂商和餘數的表示,直到今天才恍然大悟,下面我先總結一下div的用法,就當做自己的知識梳理了,我知道也沒有人會看。這是組合語言中的除法運算 格式為 div bx 有兩種運算模式 1.被除數是16位,除數是...

解決除法溢位問題

王爽組合語言第二版實驗10.2 一 實驗要求 當用div指令進行8位除法運算時結果大於8位,或進行16位除法運算結果大於16位時,會出現除法溢位的錯誤。要求編寫乙個子程式,實現支援結果不會出現溢位的除法運算 二 演算法概述 通過乙個公式將可能產生溢位的運算x n,轉變為多個不會產生溢位的除法運算。公...