下面给出有符号数除法的实例,注意,在使用有符号除法的时候一定要在使用之前扩充被除数的符号为到更高的寄存器等级,比如 word->dword。这样一来就可以保存除法结果的商和余数,不致混淆。
; IDIV Examples (Idiv.asm)
; This program shows examples of various IDIV formats.
INCLUDE Irvine32.inc
.code
main PROC
; Example 1
.data
byteVal SBYTE -48
.code
mov al,byteVal ; dividend
cbw ; extend AL into AH
mov bl,+5 ; divisor
idiv bl ; AL = -9, AH = -3
call DumpRegs ;
call WaitMsg ;
; Example 2
.data
wordVal SWORD -5000 ;
.code
mov ax,wordVal ; dividend, low
cwd ; extend AX into DX
mov bx,+256 ; divisor
idiv bx ; quotient AX = -19, rem DX = -136
call DumpRegs ;
call WaitMsg ;
; Example 3
.data
dwordVal SDWORD +50000 ;
.code
mov eax,dwordVal ; dividend, low
cdq ; extend EAX into EDX
mov ebx,-256 ; divisor
idiv ebx ; quotient EAX = -195, rem EDX = +80
call DumpRegs ;
call WaitMsg ;
exit ;
main ENDP
END main