;子程式描述
;名稱:divdw
;功能:進行不會產生溢位的除法運算,被除數為dword型,結果
;為dword型。
;引數:(ax)= dword型資料的低16位
; (dx)= dword型資料的高16位
; (cx)= 除數
;返回:(dx)= 結果的高16位,(ax)= 結果的低16位
; (cx)= 餘數
;應用舉例:計算1000000/10(f4240h/0ah)
assume cs:code
code segment
start: mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw: push bx;要用到的暫存器bx、di入棧,下面用它來暫存引數的值
push di;不要將ax,dx,cx入棧,因為程式的目的最終是要修改它們的值
mov bx,ax
mov ax,dx
mov dx,0
div cx;這一步做完以後,ax中為結果的高十六位,即int(h/n),dx中是rem(h/n)的值
mov di,ax
mov ax,bx
div cx;這一步做完以後,ax中為結果的低16位,dx中儲存餘數
mov cx,dx
mov dx,di
pop di
pop bx
ret
code ends
end start
;結果:(dx)= 0001h,(ax)= 86a0h,(cx)= 0
組合語言 實驗10 2 解決除法溢位的問題
寫給自己的一些題外話 因為各種各樣 考試,加上萎靡的精神狀態 的原因,在這一題卡了好幾天,就是搞不懂商和餘數的表示,直到今天才恍然大悟,下面我先總結一下div的用法,就當做自己的知識梳理了,我知道也沒有人會看。這是組合語言中的除法運算 格式為 div bx 有兩種運算模式 1.被除數是16位,除數是...
解決除法溢位問題
王爽組合語言第二版實驗10.2 一 實驗要求 當用div指令進行8位除法運算時結果大於8位,或進行16位除法運算結果大於16位時,會出現除法溢位的錯誤。要求編寫乙個子程式,實現支援結果不會出現溢位的除法運算 二 演算法概述 通過乙個公式將可能產生溢位的運算x n,轉變為多個不會產生溢位的除法運算。公...
實驗10 編寫子程式2解決除法溢位的問題
分析 前面大概都能看懂,主要書那個公式是怎樣分析出來的,理解後 就很簡單了。好比如乙個最大存99的數,你要計算1012 3 先拿出10 3 3 注意這個就是餘數的最高位 然後剩下 1 100 12 3,不用說,這個就是低位,你可以筆算來模擬一下你是怎樣算出1012 3你就知道我說啥了。他為什麼會有6...