8086汇编下的div指令

首先我们需要去了解的是div是除法指令,除数有8位和16位两种,被除数默认是放在AX或者DX和AX当中,如果除数为8位,被除数则为16位默认是放在AX当中的,如果除数为16位,被除数就为32位是在DX和AX当中存放,DX存放的是高16位,AX存放的是低16位。
如果除数是8位的话,那么AL存储的是除法完成之后的商,AH存储的是余数,如果除数为16位,那么AX存储的是除法操作的商,DX存储的就是除法操作的余数

除法公式如下所示

被除数 ÷ 除数 = 商 —–余数

下面我们可以利用除法指令去计算100001/100来模式下除法指令的计算过程,首先被除数100001是大于65535,不能用ax寄存器来存放,所以我们需要通过dx和ax寄存器来共同去存放他们,所以我们的除数要为16位的,因为被除数是32位的,所以我们得用一个16位的寄存器去存放除数100

assume cs:code

code segment ;代码段

    mov dx,1 ;dx存放高16位为1 0000 0000 0000 0000
    mov ax,86a1h ;给ax赋值为86a1
    mov bx,100 ;把100给bx
    div bx ;进行除法运算

    mov ax,4c00h
    int 21h


code ends

end

运算结果如下所示,AX为商这里是为1000,DX为余数这里为1

这里写图片描述

如果我们这里计算1001/100的话,我们可以让1001用ax寄存器存放,除数100则用8位寄存器存放,因为8位寄存器够用了

assume cs:code

code segment

    mov ax,1001
    mov bl,100
    div bl 

    mov ax,4c00h
    int 21h

code ends

end

结果如下所示
这里写图片描述

其中(al) = 0AH 也就是10,而(ah)=01H 也就是余数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值