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. android sqlite datetime demo

    @Override public void onCreate(SQLiteDatabase db) { String sql="create table user ( username va ...

  2. 数据结构算法[c语言]

    共16章,共四部分:基础知识,数据结构,排序和搜索. 所有的实现都是使用C语言缩写.任何语言都有优缺点,选用C语言是因为它使用的广泛. 第一章: 导论 第二章: 算法分析原理 第三章: 基本数据结构 ...

  3. 全面的Seo面试题

      一.选择题(每题2分,2分×10=20分) 1.白帽SEO诞生日是: A .1997年9月15日 :B .2004年12月13日:C.2005年3月26日:D.2009年6月1日 2.一个做女性服 ...

  4. 托马斯微积分答案.djvu的书签

    ans.bookmarks --------------------------- <?xml version="1.0" encoding="UTF-8" ...

  5. java工程笔记

    start.sh #TITLE=jetty DEPLOY_PATH=$(cd $()/../ && pwd) export DEPLOY_PATH CLASSPATH=${CLASSP ...

  6. 无法更新 EntitySet“SoreInfo_Table”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <InsertFunction> 元素。

    无法更新 EntitySet"SoreInfo_Table",因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> ...

  7. Android sharePreference使用

    SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数. SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/ ...

  8. java_jdk_JDK版本切换批处理脚本

    我们平时在window上做开发的时候,可能需要同时开发两个甚至多个项目,有时不同的项目对JDK的版本要求有区别,这时候我们可能会在一台电脑上安装多个版本的JDK,如下图所示:

  9. zTree树的模糊搜索

    工作需要,所以做了一个比较方便的搜索功能:1.功能实现都是基于zTree的API:2.如有更好的建议,欢迎拍我:其中要说明下的是flag 这个字段, 这是我自己定义的扩展字段,代码中涉及到flag 请 ...

  10. [Arduino] Arduino猪头笔记

    1. 步进电机驱动 今天才发现....原来在不同的步进电机驱动模块里面,循环时钟是不一样的.... 步进电机驱动模块以及电路配置: 驱动代码的主要部分: int sp_param = 16383; d ...