說明: 除法的指令為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,轉變為多個不會產生溢位的除法運算。公...