div指令
格式
div 寄存器/内存地址
div指令执行过程
指令中寄存器/内存地址8位
AX寄存器的内容作为被除数
相除后商放在AL里面 余数放在AH里面
指令中寄存器/内存地址16位
DX和AX一起组成被除数 DX的内容作为高8位 AX的内容作为低8位
相除后 商-AX 余数-DX
指令中寄存器/内存地址32位
8086CPU不支持 80386开始支持
EAX和EDX一起组成被除数 EAX的内容作为低16位 EDX的内容作为高16位
相除后 商-EAX 余数-EDX
指令中寄存器/内存地址64位
RAX和RDX一起组成被除数 RAX的内容作为低32位 RDX的内容作为高32位
相除后 商-RAX 余数-RDX
示例代码
start:
mov ax, 23333 ; 被除数的低8位 二进制形式:0101 1011 0010 0101
mov dx, 0 ; 被除数的高8位 二进制形式:0000 0000 0000 0000
mov bx, 10 ; 设置除数为10 二进制形式:0000 0000 0000 1010
; 执行除法 23333/10 = 2333 ... 3
; 商 ax=2333 二进制形式:0000 1001 0001 1101
; 余数 dx=3 二进制形式:0000 0000 0000 0011
div bx
current:
times 510-(current-start) db 0
db 0x55, 0xaa
每一步执行后寄存器结果
b 0x7c00 设置断点
c 持续执行到断点
s 单步执行
s 单步执行
s 单步执行
s 单步执行 执行除法