問題:
mov ax,1000h;
mov dx,1
mov bx,1
div bx
結果商為11000H(69632),在ax(65536)中存放不下.
程式如下:
結果:
ax存放低位商,bx存放高位商,dx存放餘數。
assume cs:code
code segment
start:
mov ax,4240h
mov dx,000fh
mov cx,0ah
call divdw
mov ax,4c00h
int 21h
divdw:
push ax
mov ax,dx
mov dx,0
div cx;先進行高位除法
mov bx,ax;bx存放高位商
pop ax
div cx;後進行低位除法
思路:
先将高位存放到低位ax寄存器(而低位ax寄存器的值存放通過棧push儲存)
進行除法,計算完後儲存到bx寄存器作為高位商,後pop出低位ax寄存器,進行除法,結果低位商存放在ax中,餘數存放在dx。(根據彙編div規則