汇编div除法指令
div除法指令要点
-
除数:有8位和16位两种,存放在一个寄存器或内存单元中。
-
被除数:默认放在AX或(DX和AX)中,如果除数为8位,被除数则为16位,默认放在AX中;如果除数为16位,那么被除数就为32位,存放在DX和AX两个寄存器中,高16位存放在DX,低16位存放在AX。
-
两数相除结果:如果除数是8位,则除法操作的商存放在AL,除法操作的余数存放在AH;如果除数为16位,则商存放在AX,余数存放在DX。
格式:
div reg
div 内存单元
例子:
除数8位,被除数16位
计算1001/100:
mov ax,1001 //ax为被除数,1001位十进制,对应十六进制为03E9H
mov bl,100 //bl为除数,100对应十六进制为64H
div bl //ax/bl,商存放在al,余数存放在ah
程序执行结束,al=0AH(即商为10),ah=1(余数为1)
除数16位,被除数32位
计算100001/100
mov dx,1 //被除数100001十六进制为186A1 H,高16位为1,存放在dx
mov ax,86A1H //低16位为86A1,存放在ax
mov bx,100 //除数100(0064H)存放在bx
div bx //商存放在ax,余数存放dx
程序执行结束,ax=03E8H(即商为1000),dx=1(余数为1)