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

1- div除法指令

(1) 除数: 有8位和16位两种,在一个寄存器或内存单元中.

(2) 被除数: 默认放在AX和DX或AX中

  除数为8位, 被除数为16位, 默认在AX中存放.

  除数为16位, 被除数为32位, 在DX或AX中存放. AX存放低16位,DX存放高16位.

(3) 结果

  除数为8位, 则AL存储除法操作的商, AH存放余数

  除数为16为, 则AX存储除法操作的商, DX存放余数

2- 格式如下

  div reg

  div 内存单元

 

  div byte ptr ds:[0]

  含义为:(al) = (ax)/((ds)*16+0)的商

      (ah) = (ax)/((ds)*16+0)的余数

  div word ptr es:[0]

  含义为:(ax) = [(dx)*10000H+(ax)]/((es)*16+0)的商  

      (dx) = [(dx)*10000H+(ax)]/((es)*16+0)的余数

  div byte ptr [bx + si + 8]

  含义为:(al) = (ax)/((ds)*16+(bx)+(si)+8)的商

      (ah) = (ax)/((ds)*16+(bx)+(si)+8)的余数

编程:利用除法指令计算 100001/100 (16位除法)

分析:100001大于65535,所以只能用dx和ax两个寄存器联合存放100001,也就是要进行16位除法,除数100小于255,可以在一个8位寄存器中存放,但是因为被除数是32位的,除数必须是16位,所以用16位的寄存器来存放除数100.

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

100表示为16进制形式64H,用bx存储

(ax) = [(dx)*10000H+(ax)]/(bx)的商 03E8H

(dx) = [(dx)*10000H+(ax)]/(bx)的余数 0001H

编程:利用除法指令计算1001/100(8位的除法)

被除数可以用ax存放,除数可以用8位寄存器bl

(al)=0AH

(dx)=1H

3- 伪指令 dd

  db 字节型数据

  dw 字型数据

  dd dword (double word)双字型数据

  data segment

    db 1    ;为01H 在data:0处, 占1个字节

    dw 1    ;为0001H 在data:1处, 占1个字

    dd 1    ;为00000001H 在data:3处, 占2个字

  data ends

 1 ;用div计算data段中第一个数据除以第二个数据后,商存放到第三个数据的存储单元中.
 2 ;余数存储到第四个存储单元中.
 3 assume cs:codesg,ds:datasg
 4 datasg segment            ;储存 0B60:0 F A1 86 01 00 64 00 00 00 00 00
 5     dd 100001
 6     dw 100
 7     dw 0
 8     dw 0
 9 datasg ends
10 codesg segment
11 start:  mov ax,datasg
12         mov ds,ax
13         mov ax,ds:[0]                ;ax存储低16位
14         mov dx,ds:[2]                ;dx存储高16位
15         div  word  ptr  ds:[4]       ;计算除法
16         mov ds:[6],ax                ;商存储第3个单元
17         mov ds:[8],dx                ;余数存储第4个单元
18     
19         mov ax,4c00h
20         int 21h
21 codesg ends
22 end start

 

4- dup 用来进行数据重复的

  db 3 dup (0) ;定义了3个字节,相当于db 0,0,0

  db 3 dup (0,1,2) ;定义了9个字节,相当于db 0,1,2,0,1,2,0,1,2

  db 3 dup ('abc','ABC') 定义了18个字节, 相当于 db 'abcABCabcABCabcABC'

  可见dup的使用格式如下:

  db 重复的次数 dup(重复的字节型数据)

  dw 重复的次数 dup(重复的字型数据)

  dd 重复的次数 dup(重复的双字数据)

 

  定义一个容量为200个字节的栈段

  stack segment

    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

  stack ends

  stack segment

    dw 200 dup (0)

  stack ends

 

  

转载于:https://www.cnblogs.com/galoishelley/p/3571759.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lambda表达式浅析【C++学习笔记】

lambda表达式浅析【C学习笔记】 基本用法: auto f [/*捕获列表*/](/*参数*/)->int /*后置返回值类型*/{/** 函数体*/};捕获列表: [] : 不捕获任何变量 [变量名] : 表示值捕获,不可修改 [] :按值捕获所有变量,不可修改 [&] : 按引用捕获可以修改 [this] : 在类中捕…

【Cocos2d-x for WP8 学习整理】(2)Cocos2d-Html5 游戏 《Fruit Attack》 WP8移植版 开源...

【Cocos2d-x for WP8 学习整理】(2)Cocos2d-Html5 游戏 《Fruit Attack》 WP8移植版 开源 原文:【Cocos2d-x for WP8 学习整理】(2)Cocos2d-Html5 游戏 《Fruit Attack》 WP8移植版 开源这一阵花了些时间,把 cocos2d-h…

碰撞,处理碰撞,发射 Learn Unreal Engine (with C++)

本文使用打砖块游戏举例 碰撞,处理碰撞 碰撞就相当于一个Actor进入另一个Box中,用这个思路就可以处理碰撞了 OnComponentBeginOverlap 当某些内容开始重叠此组件时调用的事件,例如玩家进入触发器。 **委托 事件 **1 AddDynamic( UserObject, FuncName ) 用于…

传送,条件加速 Learn Unreal Engine (with C++)

本文以吃豆人游戏为例UE4项目: 自制UE4 小游戏 (gitee.com) 传送 pawn进入box触发OnActorBeginOverlap获取目标位置,下一帧将pawn坐标更改为目标位置 首先需要重叠函数与开始重叠事件绑定 OnActorBeginOverlap.AddDynamic(this, &ATeleporterActor::OnOverlapBegin);头文件…

获取摄像机,摄像机切换Learn Unreal Engine (with C++)

摄像机应该是使用最普遍的组件了 获取摄像机,摄像机切换 新建C类(以CameraActor为父类) 将摄像机在地图中放置 头文件声明 virtual void BeginPlay() override;UPROPERTY(EditAnywhere, BlueprintReadWrite)UBoxComponent* OverlapVolume; // 盒体组件,用于检测人物碰撞UPR…

android报错及解决1--Bitmap加载时,报bitmap size exceeds VM budget

报错描述: 用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget 原因分析: android系统限制,只给图片分配8M内存,超过就蹦。图片虽然几十K,可能是压缩格式,…

主角的创建与选择 Learn Unreal Engine (with C++)

主角创建有两种方式,本教程以SpaceshipBattle fanxingin/UE4项目 - 码云 - 开源中国 (gitee.com) 1. 新建游戏模式方式 新建一个蓝图类,选择游戏模式基础 在蓝图类的细节中将默认pawn类选择主角的蓝图类 在项目设置->地图和模式->默认模式->默认游戏模式 默认游…

控制`Actor`朝向,运动 Learn Unreal Engine (with C++)

控制Actor的朝向,以及Actor的运动 SpaceshipBattle fanxingin/UE4项目 - 码云 - 开源中国 (gitee.com) 控制Actor朝向鼠标 设置鼠标在游戏中可见 获取玩家控制器鼠标可见设置为true PC Cast<APlayerController>(GetController()); PC->bShowMouseCursor true;获取…

.Net开发人员应该下载的十种必备工具(三)

NDoc 编写代码文档资料几乎总是一项令人畏惧的任务。我所说的不是早期设计文档&#xff0c;甚至也不是更为详细的设计文档&#xff1b;我说的是记录类上的各个方法和属性。NDoc 工具能够使用反射来分析程序集&#xff0c;并使用从 C# XML 注释生成的 XML 自动为代码生成文档资料…

Actor范围内随机生成 Learn Unreal Engine (with C++)

Actor范围内随机生成 Learn Unreal Engine (with C) SpaceshipBattle fanxingin/UE4项目 - 码云 - 开源中国 (gitee.com) Actor范围内随机生成 新建box组件 SpawnArea CreateDefaultSubobject<UBoxComponent>(TEXT("SpawnArea"));RootComponent SpawnArea…

.Net开发人员应该下载的十种必备工具(二)

NUnit NUnit 是为 .NET 框架生成的开放源代码单元测试框架。NUnit 使您可以用您喜欢的语言编写测试&#xff0c;从而测试应用程序的特定功能。当您首次编写代码时&#xff0c;单元测试是一种测试代码功能的很好方法&#xff0c;它还提供了一种对应用程序进行回归测试的方法。NU…

子弹创建及发射 Learn Unreal Engine (with C++)

子弹创建及发射 Learn Unreal Engine (with C) SpaceshipBattle fanxingin/UE4项目 - 码云 - 开源中国 (gitee.com) 子弹的创建 声明: UPROPERTY(EditAnywhere, Category "Fire")TSubclassOf<ABullet> Bullet;实现: //在空组件处生产子弹GetWorld()->…

.Net开发人员应该下载的十种必备工具(一)

用于编写单元测试的 NUnit用于创建代码文档资料的 NDoc用于生成解决方案的 NAnt用于生成代码的 CodeSmith用于监视代码的 FxCop用于编译少量代码的 Snippet Compiler两种不同的转换器工具&#xff1a;ASP.NET 版本转换器和 Visual Studio .NET 项目转换器用于生成正则表达式的 …

旋转根组件 Learn Unreal Engine (with C++)

旋转根组件 Learn Unreal Engine (with C) 在UE4中,根组件是无法旋转定位的,只能够缩放,在一些情况下,我们有旋转根组件的需求 SpaceshipBattle fanxingin/UE4项目 - 码云 - 开源中国 (gitee.com) 旋转根组件 将SceneComponent设为根组件 然后将StaticMeshComponentattach…

2007.2.14 日程安排

公元二零零七年二月十四日&#xff0c;农历腊月二十七&#xff0c;该天尤为特别&#xff0c;乃春节长假之初始。此外&#xff0c;该天将是片地鸳侣&#xff0c;漫天桃花之好时日&#xff0c;于是吾将广纳四方真气&#xff0c;闭关修炼&#xff0c;与世无争。00&#xff1a;00 -…

禁止摄像机跟随`Actor`旋转 Learn Unreal Engine (with C++)

禁止摄像机跟随Actor旋转 Learn Unreal Engine (with C) SpaceshipBattle fanxingin/UE4项目 - 码云 - 开源中国 (gitee.com) 如果直接将摄像机绑定在根组件上,在根组件旋转时,摄像机也会跟着旋转 那么如何让摄像机不跟随根组件旋转,只跟着根组件移动 禁止摄像机跟随根组件…

邮件发送---在.net2003和2005中

smtpClient发邮件错误&#xff1a;不允许使用邮箱名称。 服务器响应为: You are not authorized to send mail, authentication is required 使用smtpClient发送邮件时&#xff0c;经常跑出难以明白的错误。其实主要都和我们申请的免费邮箱有关系。有些邮箱不支持&#xff0c;…