div 指令

div 是除法指令,后面跟的是除数,被除数默认在 ax, 或者 dx、ax 组成的存储单元中。

  1. 除数可以有 8 位和 16 位两种,存储于一个 reg 或内存单元中,也就是说不可以 div 后面跟着 idata

  2. 被除数默认放在 ax 或者 dx 和 ax 中

    1. 如果除数是 8 位,而被除数可以是 16 位或者 32 位,那么被除数选择 16 位
    2. 如果除数是 8 位,而被除数必须是 32 位,那么除数选择 16 位,被除数 32 位
    3. 如果除数是 16 位, 而被除数可以是 16 位或者 32 位,那么被除数选择 32 位
    4. 现在还没有讲到 32 位的除法...

    被除数为 32 位时,dx 存放高 16 位,ax 存放低 16 位

  3. 如果除数是 8 位的,那么 al 储存除法的商,ah 储存除法操作的余数 ;如果除数为 16 为,则 ax 存储除法操作的商,dx 存储除法操作的余数

问题 8.1

用 div 计算 data 段中的第一个数据除以第二个数据后的结果,商存在第三个数据的存储单元中。

data segment
dd 100001
dw 100
dw 0
data ends

分析

题目中的被除数是 100001 而除数是 100,它们的十六进制分别是 186A164,见除数可以使用 8 位去存放,但是被除数必须使用 32 位才可以存放(它有 5 个十六进制位,共 20bits)。那么最终,除数必须使用 16 位去存放。

所以代码如下:

mov ax, data
mov ds, ax
mov ax, ds[0] ; 低 16 位
mov dx, ds[2] ; 高 16 位
div word ptr ds:[4] ; 除数必须是一个字,16 位
mov ds[6], ax ; 保存商

div 指令的更多相关文章

  1. DIV指令一般用法

    本文最初发表于2015-8-14,是由别的地方迁移过来的 (本文所讲为无符号运算) DIV指令是8086汇编中的除法运算指令,它的结果不是浮点数,而是两个整数:商和余数. 我们来看王爽老师是怎么讲的: ...

  2. [汇编语言]-第八章 div指令,伪指令dd,dup

    1- div除法指令 (1) 除数: 有8位和16位两种,在一个寄存器或内存单元中. (2) 被除数: 默认放在AX和DX或AX中 除数为8位, 被除数为16位, 默认在AX中存放. 除数为16位, ...

  3. div指令和mul指令

    div是除法指令,使用div做除法时需要注意: 1)除数:有8位和16位两种,在一个寄存器或者内存单元中 2)被除数:默认存放在AX或DX和AX中.如果除数为8位,被除数则为16位,默认在AX中存放: ...

  4. AngularJS之指令

    紧接上篇博客“初探AngularJS” 一.前言 在AngularJS中指令尤为重要且内容庞多,固单独提炼出来,梳理一番.如有错误,请不吝讲解. 好了,言归正传,让我们一起走进Angular指令的世界 ...

  5. AngularJS中的指令

    欢迎大家讨论与指导 : )  前言 当AngularJS中的内置指令不能满足我们的需求,或者当我们需要创建一个能够用于多个AngularJS程序的自包含的功能单元时,我们应该创建自定义指令来满足需求. ...

  6. 学习linux内核时常碰到的汇编指令(1)

     转载:http://blog.sina.com.cn/s/blog_4be6adec01007xvg.html 80X86 汇编指令符号大全 +.-.*./∶算术运算符. &∶宏处理操作符. ...

  7. Angualar:指令大全

    指令: 内置渲染指令 内置事件指令 内置节点指令 自定义指令 restrict template replace属性 templateUrl属性 trnsclude priorty terminal属 ...

  8. 汇编语言---call和ret指令

    汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈 ...

  9. angular分页指令

    目前的多个项目中都用到分页这个功能,为了提高可复用性,我特地分离出来写了个分页的指令.直接贴代码,详情如下: index.html <body id="sBill" ng-c ...

随机推荐

  1. Linux守护进程

    什么是守护进程? 守护进程是生存期长的一种进程,它们常常在系统引导装入时启动,仅在系统关闭时在终止.它们没有控制终端并且在后台运行.Linux 系统中有很多守护进程用以执行系统的日常事物,而且服务器程 ...

  2. MSIL Emit AOP

    参考链接: https://pieterderycke.wordpress.com/tag/reflection-emit/ http://www.moon-soft.com/doc/23252.ht ...

  3. SQL ROW_NUMBER()实现取组内最新(最大)的数据

    SELECT * FROM(select ROW_NUMBER() over(partition BY sid order by cscore desc) as tid,sid,cname,cscor ...

  4. sftp上传 - 待完

    1.搭建本地sftp 1.1.下载msftpsrvr.exe软件 下载地址:http://www.download3k.com/Install-Core-FTP-Mini-SFTP-Server.ht ...

  5. mysql - 缺失范围和连续范围

    初始化数据 # 创建表 DROP TABLE IF EXISTS g; CREATE TABLE g( a INT )ENGINE=INNODB; # 初始化数据 ; ; ; ; ; ; ; ; ; ...

  6. mave的变量说明

    Maven提供了三个隐式的变量可以用来访问环境变量,POM信息,和Maven Settings env env变量,暴露了你操作系统或者shell的环境变量.便 如在Maven POM中一个对${en ...

  7. centos 安装 maven

    1: 下载 maven    我采用的是 apache-maven-3.3.9-bin.tar.gz http://maven.apache.org/download.cgi 2:  解压  tar ...

  8. (转)Android 系统属性SystemProperty分析

    一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get():通过这两个接口可以对系统的属性进行读取/设置, 顾名思义 ...

  9. Oracle存储过程记录异常

    --建立错误日志表 create table PUB_PROC_ERR_LOG ( LOG_ID NUMBER, MODULE_NAME ), PROC_NAME ), ERR_TIME DATE, ...

  10. 大话 JSON 之 JSONObject.getString(“”) 方法 和 JSONObject.optString(“”) 的区别

    运行以下代码: public static void main(String[] args) { JSONObject test = new JSONObject(); test.put(" ...