使用組合語言解決除法溢位問題

2022-07-24 11:00:21 字數 984 閱讀 5439

1 assume cs:

code23

code segment

4start:

5mov

ax, 4240h

6mov

dx, 000fh

7mov

cx, 0ah89

call

divdw

1011

movax, 4c00h

12int

21h1314;

名稱:divdw15;

功能:進行不會產生溢位的除法運算,被除數為dword型,除數為word型號,結果為dword型號16;

引數:(ax)=dword型資料的低16位17;

(dx)=dword型資料的高16位18;

(cx)=除數19;

返回:(dx)=結果的高16位,(ax)=結果的低16位20;

(cx)=餘數

21divdw:

;子程式定義開始

22push ax ;

低16位先儲存

2324

mov ax, dx ;

ax值為高16為

2526

mov dx, 0

;dx置零

27div cx ;

h/n28

29mov bx, ax ;

ax,bx的值(int)h/n,dx的值為(rem)h/n

3031

pop ax ;

處理低16位

32div cx ;

高16位:dx的值為(rem)h/n,低16位:ax

3334

movcx, dx

35mov

dx, bx

3637

ret38

code ends

39 end start

組合語言除法公式溢位問題

當且僅當 h 高16位 n 1 時 才不會溢位 即 h 65536 n l n 65535 商 n 1 餘數 0ffffh 65536 通俗的講就是高16位不能大於等於除數 n 1 65536 n l n 65534 n n 1 65536 l 65534 n n n 65536n 65536 l ...

解決除法溢位問題

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

組合語言實驗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...