2024年3月31日发(作者:)

;DIV r/m ;参数是除数

;如果参数是 r8/m8, 将把 AX 做被除数; 商 -> AL, 余数 -> AH

;如果参数是 r16/m16, 将把 DX:AX 做被除数; 商 -> AX, 余数 -> DX

;如果参数是 r32/m32, 将把 EDX:EAX 做被除数; 商 -> EAX, 余数 -> EDX

; DIV 测试

; Test27_

.386

.model flat, stdcall

include

include

include

include

includelib

includelib

includelib

.code

main proc

;除数是 8 位

mov ax, 17 ;被除数

mov cl, 3 ;除数

div cl

PrintDec al ;5 - 商

PrintDec ah ;2 - 余数

;除数是 16 位

mov dx, 0 ;

mov ax, 17 ;dx:ax 是被除数

mov cx, 3 ;cx 是除数

div cx

PrintDec ax ;5 - 商

PrintDec dx ;2 - 余数

;除数是 32 位

mov edx, 0 ;

mov eax, 17 ;edx:eax 是被除数

mov ecx, 3 ;ecx 是除数

div ecx

PrintDec eax ;5 - 商

PrintDec edx ;2 - 余数

ret

main endp

end main

;IDIV 测试

; Test27_

.386

.model flat, stdcall

include

include

include

include

includelib

includelib

includelib

.code

main proc

;除数是 8 位

mov al, -17

cbw ;ax 是被除数

mov cl, 3 ;除数

idiv cl

PrintDec al ;-5 - 商

PrintDec ah ;-2 - 余数

;除数是 16 位

mov ax, -17

cwd ;dx:ax 是被除数

mov cx, 3 ;cx 是除数

idiv cx

PrintDec ax ;-5 - 商

PrintDec dx ;-2 - 余数

;除数是 32 位

mov eax, -17

cdq ;edx:eax 是被除数

mov ecx, 3 ;ecx 是除数

idiv ecx

PrintDec eax ;-5 - 商

PrintDec edx ;-2 - 余数

ret

main endp

end main