zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    @echo off
    小知识点
    字符串匹配方法
    一般保护错误
    Linux常用压缩与解压缩命令
    opencv__linux__配置
    opencv__配置
    Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql
    Web开发从零单排之一:在新浪云平台SAE上开发一个html5电子喜帖
    WPF中使用ValueConverter来实现“范围条件触发器”
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9368717.html
Copyright © 2011-2022 走看看