1.定义
div为无符号除法 ; idiv为有符号除法
2.分为
(1) 除数: 有 8 位和 16 位两种, 在一个寄存器或内存单元中.
(2) 被除数: 默认放在 ax 或 dx 和 ax 中, 如果除数为 8 位, 被除数则为 16 位, 默认在 ax 中存放; 如果除数为 16 位, 被除数则为 32 位, 在 dx 和 ax 中存放, dx 存放高 16 位, ax 存放低 16 位.
3.结果
如果除数为8位,则被除数为16位,则结果的商存放与al中,余数存放于ah中。
如果除数为16位,则被除数为32位,则结果的商存放与ax中,余数存放于dx中。
如果除数为32位,则被除数为64位,则结果的商存放与eax中,余数存放于edx中。
注意:不能直接实现8位数除8位数、16位数除16位数、32除32,若需要这样,则必须先把除数符号扩展或零扩展到16、32、64位,然后用除法指令。
对于IDIV,余数和被除数符号相同,如:-5 IDIV 2 = 商 -2,余数:-1
例
MOV AX,0052h
MOV BX,10h
DIV BL
易看到最后的ax=0205
即商为5,存于al;余数为2,存于ah。