• div 指令


    div 是除法指令

    除数:有 8 位和 16 位两种,在一个 reg 或内存单元中

    被除数:默认放在 AX 或 DX 和 AX 中,如果除数为 8 位,被除数则为 16 位,默认在 AX 中存放;如果除数为 16 位,被除数则为 32 位,在 DX 和 AX 中存放,DX 存放高 16 位,AX 存放低 16 位

    结果:如果除数为 8 位,则 AL 存储除法操作的商,AH 存储除法操作的余数;如果除数为 16 位,则 AX 存储除法操作的商,DX 存储除法操作的余数

     1 div byte ptr ds:[0]
     2 含义:(al) = (ax)/((ds)*16+0)的商
     3       (ah) = (ax)/((ds)*16+0)的余数
     4 
     5 div word ptr es:[0]
     6 含义:(ax) = [(dx)*10000H+(ax)]/((es)*16+0)的商
     7       (dx) = [(dx)*10000H+(ax)]/((es)*16+0)的余数
     8 
     9 div byte ptr [bx+si+8]
    10 含义:(al) = (ax)/((ds)*16+(bx)+(si)+8)的商
    11       (ah) = (ax)/((ds)*16+(bx)+(si)+8)的余数
    12 
    13 div word ptr [bx+si+8]
    14 含义:(ax) = [(dx)*10000H+(ax)]/((ds)*16+(bx)+(si)+8)的商
    15       (dx) = [(dx)*10000H+(ax)]/((ds)*16+(bx)+(si)+8)的余数

    利用除法指令计算 100001/100

    被除数 100001 大于 65535,不能用 ax 寄存器存放,所以只能用 dx 和 ax 两个寄存器联合存放 100001,也就是说要进行 16 位的除法

    除数 100 小于 255,可以在一个 8 位寄存器中存放。但是,因为被除数是 32 位的,除数应为 16 位,所以用一个 16 位寄存器来存放除数 100

    因为要分别为 dx 和 ax 赋 100001 的高 16 位值和低 16 位值,所以应先将 100001 表示为十六进制形式:186A1H

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

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

    利用除法指令计算 1001/100

    被除数 1001 可用 ax 寄存器存放,除数 100 可用 8 位寄存器存放,也就是说,要进行 8 位的除法

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

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

  • 相关阅读:
    CentOS6.4 配置mysql服务器启动多个端口,同步单表数据
    生成CSV文件后再将CSV文件导入到mysql
    Quartz Cron 表达式
    Jquery 提示插件alertify 【备用】
    tnsping 命令解析
    Gearman安装及使用
    Redis安装部署
    Linux多网卡负载均衡 : bond
    ulimit命令
    Nginx 负载均衡
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9368717.html
Copyright © 2020-2023  润新知