【汇编语言】除法(DIV/IDIV)

除法(DIV/IDIV)

目录

      • 除法(DIV/IDIV)
        • `DIV`(unsigned divide)无符号数除法
        • `IDIV`(signed divide)有符号数除法

DIV(unsigned divide)无符号数除法

格式:DIV SRC

操作:

  • SRCSRCSRC为字节时,(AL)←(AX)/(SRC)(AL)\gets (AX)/(SRC)(AL)(AX)/(SRC)的商,(AH)←(AX)/(SRC)(AH)\gets (AX)/(SRC)(AH)(AX)/(SRC)的余数
  • SRCSRCSRC为字时,(AX)←(DX,AX)/(SRC)(AX)\gets (DX,AX)/(SRC)(AX)(DX,AX)/(SRC)的商,(DX)←(DX,AX)/(SRC)(DX)\gets (DX,AX)/(SRC)(DX)(DX,AX)/(SRC)的余数

该指令将参与运算的数据默认为无符号数,则商和余数都是无符号数

除法貌似并不会影响标志位(进位标志CFCFCF和溢出标志OFOFOF)的改变,但通过上述操作可知,被除数位数总是除数的两倍,而相除的商和余数是存储在和除数位数相同的空间里,显然余数是肯定够存的,但是商是有可能存不下的(例如:0300H÷02H=0180H0300H\div 02H=0180H0300H÷02H=0180H,这里商仅依靠字节存储是无法存下的)。商出现溢出时,系统转0号类型中断处理,提示“divide overflow”,并退出程序,返回到操作系统,程序便已经崩溃了。要想避免出现这种情况,必须在作除法前对溢出作出预判

由于商需要更大空间来存储,而字节长度的除数无法满足,因此需要将其扩展为字长度,这样商便有了字长度空间存储

MOV AX, 300H
CWD ;这里书上使用CWD指令进行字到双字的符号扩展(将AX的符号位即最高位填充至DX的所有位),而这里使用的是无符号数除法,当被除数的最高位为1时显然会扩大被除数的大小,我认为应当使用零扩展(即将DX所有位置0),这样便不会改变原数的大小,但我未查询到汇编零扩展的相关指令,或许没有该指令,也许只能自己手动零扩展(MOV DX, 0)
MOV BX, 2
DIV BX ;这里的SRC为字长

这里使用CWD进行符号扩展是因为SRCSRCSRC为字长时,被除数则为(DX,AX)(DX,AX)(DX,AX),因此需将这两寄存器一起看作被除数,于是使用CWDDXDXDX置0,使其整体等于300H300H300H,这里个人认为因采用类似MOV DX, 0 的指令去处理更为合理

在这里插入图片描述

等到的结果商为180H(AX)180H(AX)180H(AX),余数为0H(DX)0H(DX)0H(DX)

IDIV(signed divide)有符号数除法

指令格式和操作与无符号数除法相同,用来作有符号数除法。最终商的符号应是两个操作数符号的异或,而余数的符号和被除数符号一致

这里用FF80H(−128)÷03H(+3)=D6H(−42)⋯⋯FEH(−2)FF80H(-128)\div 03H(+3)=D6H(-42)\cdots \cdots FEH(-2)FF80H(128)÷03H(+3)=D6H(42)FEH(2)举例

在这里插入图片描述

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

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

相关文章

java 方法 示例_Java集合syncedSortedSet()方法与示例

java 方法 示例集合类SynchronizedSortedSet()方法 (Collections Class synchronizedSortedSet() method) synchronizedSortedSet() method is available in java.util package. java.util软件包中提供了sharedSortedSet ()方法 。 synchronizedSortedSet() method is used to …

远控免杀专题(17)-Python-Rootkit免杀

免杀能力一览表 几点说明: 1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。 2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全家桶…

项目管理软件应用浅析(转)

项目管理是在一定的约束条件下,以高效率地实现项目业主的目标为目的,以项目经理个人负责制为基础和以项目为独立实体进行经济核算,并按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。项目管理的核心技术是网络计划技…

斜视角的讨论(转)

http://school.ogdev.net/listshow.asp?page4&typeid0&categoryid5&id0&ListType2 目 录 1.1 地图和地表 1.2 斜视角游戏中的视角 1.3 Tile图片的拼接 1.4 不同地表间的过渡 1.5 地图数据结构的定义 --------------------------------------------------…

计算机网络(湖科大教书匠)

计算机网络(湖科大教书匠) 本文档为教学视频【计算机网络微课堂(有字幕无背景音乐版)_哔哩哔哩_bilibili】的摘录 目录计算机网络(湖科大教书匠)一、绪论1.2 因特网概述1.2.1 网络、互连网(互联…

经纬度

题目描述 给定地球的两个经纬度坐标,问这两个点的直线距离。假设地球为球体,半径为6371009米。 输入描述: 第一行一个整数T表示数据组数。 接下来n行,每行四个数lat1, lng1, lat2, lng2分别表示两个点的经纬度。 正数表示北纬和东经。 …

远控免杀专题(18)-ASWCrypter免杀

免杀能力一览表 几点说明: 1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。 2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全家桶…

Hibernate 笔记4 实现对数据库的增删改查

1 准备 首先在mysql数据库中建表User,并添加相关信息。 user表结构如下。 ---------------------------------------------------------| Field | Type | Null | Key | Default | Extra |------------------------------------------------…

Direct3D中的绘制(3)

立方体——只比三角形稍微复杂一点,这个程序渲染一个线框立方体。 这个简单的绘制和渲染立方体的程序的运行结果如下图所示: 源程序: /************************************************************************************** Renders a …

远控免杀专题(19)-nps_payload免杀

免杀能力一览表 几点说明: 1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。 2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。 3、由于本机测试时只是安装了360全家桶…

VS2005中使用WebDeploymentProject的问题

近来做Web项目,VS2005中发布网站时默认发布大批的程序集,这给升级网站时造成很大麻烦,所以偶从MS下载了个WebDeploymentProject的插件(下载地址http://download.microsoft.com/download/c/c/b/ccb4877f-55f7-4478-8f16-e41886607a…

操作系统中的多级队列调度

多级队列调度 (Multilevel queue scheduling) Every algorithm supports a different class of process but in a generalized system, some process wants to be scheduled using a priority algorithm. While some process wants to remain in the system (interactive proce…

编写一程序,输入一个字符串,查找该字符串中是否包含“abc”。

import java.lang.String.*;//这里调用java.long.String.contains()方法; import java.util.Scanner; public class shit {public static void main(String[] args) {Scanner wsq new Scanner(System.in);String str wsq.next();boolean status str.contains(&qu…

显示消息提示对话框(WebForm)

1: /// <summary>2: /// 显示消息提示对话框。3: /// Copyright (C) Maticsoft4: /// </summary>5: public class MessageBox6: { 7: private MessageBox()8: { 9: }10: 11: …

借助格式化输出过canary保护

0x01 canary保护机制 栈溢出保护是一种缓冲区溢出攻击缓解手段&#xff0c;当函数存在缓冲区溢出攻击漏洞时&#xff0c;攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后&#xff0c;函数开始执行的时候会先往栈里插入cookie信息&#xff0c;当函数真…

什么叫灰度图

任何颜色都有红、绿、蓝三原色组成&#xff0c;假如原来某点的颜色为RGB(R&#xff0c;G&#xff0c;B)&#xff0c;那么&#xff0c;我们可以通过下面几种方法&#xff0c;将其转换为灰度&#xff1a; 1.浮点算法&#xff1a;GrayR*0.3G*0.59B*0.11 2.整数方法&#xff1a;Gra…

各抓包软件的之间差异_系统软件和应用程序软件之间的差异

各抓包软件的之间差异什么是软件&#xff1f; (What is Software?) Software is referred to as a set of programs that are designed to perform a well-defined function. A program is a particular sequence of instructions written to solve a particular problem. 软件…

输入一字符串,统计其中有多少个单词(单词之间用空格分隔)(java)

import java.util.*; class Example3{public static void main(String args[]){Scanner sc new Scanner(System.in);String s sc.nextLine();//这里的sc.nextLine&#xff08;&#xff09;空格也会记数&#xff1b;StringTokenizer st new StringTokenizer(s," ")…

为何苦命干活的人成不了专家?

所谓熟能生巧&#xff0c;但离专家却有一个巨大的鸿沟&#xff0c;在农田干活的农民怎么也成不了水稻专家&#xff0c;推广之&#xff0c;那些在本职工作上勤勤恳恳的人&#xff0c;在业务上总有一个不可冲破的瓶颈。 这种现象非常普遍&#xff0c;这就是为什么很多人很勤奋&am…

今天发布一个新网站www.heijidi.com

新网站发布了&#xff0c;欢迎访问&#xff0c;关于国产机的 网站 www.heijidi.com 转载于:https://www.cnblogs.com/liugod/archive/2008/03/26/1122753.html