DIV reg/mem8
DIV reg/meml6
DIV reg/mem32
被除数 | 除数 | 商 | 余数 |
---|---|---|---|
AX | reg/mem8 | AL | AH |
DX:AX | reg/mem16 | AX | DX |
EDX:EAX | reg/mem32 | EAX | EDX |
mov ax, 0083h ; 被除数
mov bl, 2 ; 除数
div bl ; AL = 41h, AH = Olh
mov dx, 0 ; 清除被除数高16位
mov ax, 8003h ; 被除数的低16位
mov ex, 100h ; 除数
div ex ; AX = 0080h, DX = 0003h
.data dividend QWORD 0000000800300020h divisor DWORD 00000100h .code mov edx, DWORD PTR dividend + 4 ; 高双字 mov eax, DWORD PTR dividend ; 低双字 div divisor ; EAX = 08003000h, EDX = 00000020h下图展示了寄存器内容的变化:
.data dividend_hi QWORD 0000000000000108h dividend_lo QWORD 0000000033300020h divisor QWORD OOOOOOOOOOOlOOOOh .code mov rdx, dividend_hi mov rax, dividend_lo div divisor ; RAX = 0108000000003330 ; RDX = 0000000000000020请注意,由于被 64k 除,被除数中的每个十六进制数字是如何右移 4 位的。(若被 16 除,则每个数字只需右移一位。)
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有