[汇编语言]-第八章 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,一经查实,立即删除!

相关文章

System.Data.SQLite(SQLite ADO.NET 2.0的提供程序,已经包含Sqlite引擎)

今天在研究其他的技术的时候,重新查看了一下Sqlite在.NET下的最新实现。结果发现这样一个好东西。下面把其首页的说明翻译如下:System.Data.SQLite 是一个原始SQLite的加强版. 它将是一个原版的sqlite3.dll完全替代品 (你甚至就可以把它重命名为sqlite3…

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…

react学习(64)--简单的锚点封装

render() {const {anchors [], //锚点数组&#xff0c;link-节点id&#xff0c;title-显示文字content, //左侧内容} this.props;return (<div style{{ display: flex }}><div style{{ flex: 9, overflow: hidden }}>{content || this.props.children}</div&g…

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

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

在Solaris系统下如何更改网络配置?

修改/etc/hostname.qfe0 >附檔名,依照網卡種類不同,有不同的名稱再依照上述檔案內容,再去查看/etc/hosts中相對應的名稱,並修改IP转载于:https://blog.51cto.com/youjianhello/12461

react学习(65)--ant design加载中

import { Spin } from antd;ReactDOM.render(<Spin />, mountNode);

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

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

ADSL路由器的设置

关于将ADSL 路由器的设置&#xff0c;其实ADSL 路由器的设置并不是很难&#xff0c;以TL-R4XX系列路由器为例&#xff0c;简要说明ADSL 路由器的设置&#xff0c;首先MODEM、路由器、电脑连结起来&#xff0c;网络必需畅通&#xff0c;ADSL 路由器地址出厂默认IP地址&#xff1…

web.xml中 Log4jConfigListener配置

使用Log4jConfigListener有如如下好处&#xff1a; 1. 动态的改变记录级别和策略&#xff0c;不需要重启Web应用&#xff0c;如《Effective Enterprise Java》所说。 2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。 因为 系统把web目录的路径压入一个叫webapp.ro…

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

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

BIOS详情设置续一

高级芯片组特征Configure DRAM Timing&#xff08;设置内存时钟&#xff09;  此设置决定DRAM 的时钟设置是否由读取内存模组上的SPD&#xff08;Serial PresenceDetect&#xff09;EPROM 内容决定。设置为By SPD允许内存时钟根据SPD的设置由BIOS自动决定配置&#xff1b;设置…

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

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

react学习(67)--git 屏蔽文件不被追踪

bash # 屏蔽文件不被 git 追踪 git update-index --assume-unchanged [FILE]# 如果要还原的话&#xff0c;使用命令&#xff1a; git update-index --no-assume-unchanged [FILE]

华三1822-24路由交换机配置例子

华三1822-24路由交换机配置例子#sysname Quidway#super password level 3 cipher xxxxxxx#FTP server enable#web set-package force flash:/http.zip#radius scheme system#domain system #local-user dgbg_adminpassword cipher xxxxxxxservice-type telnet terminal#dhcp se…

什么是 AJAX, what is AJAX(一)

AJAX全稱為「Asynchronous JavaScript and XML」&#xff08;非同步JavaScript和XML&#xff09;&#xff0c;是一種創建互動式網頁應用的網頁開發技術。它使用&#xff1a; 使用XHTMLCSS來表示信息&#xff1b; 使用JavaScript操作DOM Document Object Model進行動態顯示及交互…

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

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

单例模式的两种方法

public class MySingleton { private static object myLock new object(); private static volatile MySingleton mySingleton null; private MySingleton() { } public static MySingleton GetInstance() { if (mySingleton null) { //第一次检查 lock (myLock) { if (mySi…

SQL View 的使用语法与原则

1.View只是存储下来的sql 语句Views are nothing but saved SQL statements, and are sometimes referred as “Virtual Tables”. Keep in mind that Views cannot store data (except for Indexed Views); rather they only refer to data present in tables.2.create a vie…