目录
div指令

div是除法指令,使用div做除法时应注意以下问题。

1、除数:有8位和16位两种,在一个reg或内存单元中。
2、被除数:默认放在AX或DX和AX中,如果除数位8位,被除数则为16位,默认在AX中存放;如果除数为16位,被除数则为32位,在DX和AX中存放,DX放高16位,AX存放低16位。
3、结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;
如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。

例如:
1、除数为8位:

1
div byte ptr ds:[0]

含义:(al)=(ax)/((ds)*16+0)的商

(ah)=(ax)/(ds)*16+0)的余数

2、除数为16位:

1
div word ptr es:[0]

含义:(ax)=[(dx)*10000H+(ax)] /

((es)*16+0)的商

(dx)=[(dx)*10000H+(ax)] /

(es)*16+0)的余数

3、用除法指令计算100001/100

分析:被除数100001大于65535(ffffh),所以用dx和ax两个寄存器联合存放100001,除数100虽然小于255可以在一个8位寄存器中存放,但是,因为除数是32位的,除数应为16位,所以要用16位寄存器存放除数100
100001表示为16进制为:186A1H。程序如下:

1
2
3
4
mov dx,1
mov ax,86A1H ;(dx)*10000H+(ax)=100001
mov bx,100
div bx

程序执行后(ax)=03E8H(即1000)(dx)=1(余数为1)

4、用除法指令计算1001/100
分析:被除数1001可用ax寄存器存放,除数100可用8位寄存器存放,也就是说,要进行8位的除法。程序如下:

1
2
3
mov ax,1001
mov bl,100
div bl

程序执行后,(al)=0AH(即10),(ah)=1(余数为1)

5、

文章作者: nocbtm
文章链接: https://nocbtm.github.io/2018/09/11/div指令/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nocbtm's Blog
打赏
  • 微信
  • 支付宝