MUL,IMUL指令溢出

MUL
用途: 该指令完成两个无符号值的乘法运算。
  语法结构/举例
  mul regB|memB   mul bl
  mul regW|memW   mul [aword]
  仅80386有:
  mul regDW|memDW mul ebx

  示范代码
  DATASEG
  multiplicand dw 1024
  multiplier dw 32
  answer dw 0
  CODESEG
  mov ax,[multiplicand] ;将被乘数装入ax
  mul [multiplier]  ;dx:ax←ax*multiplier
  jc Exit  ;若结果超过16位则跳转
  mov [answer],ax  ;否则存储
  描述:8086程序使用无符号乘法指令要比使用带符号乘法指令(见imul)简单得多。mul指令只有一个操作数,该操作数可以是一个通用寄存器,也可以是一个存储器操作数,它们表示乘数。乘数的长度决定着被乘数及结果的存放。若乘数为一个字节,则被乘数为al,结果存放在ax寄存器中;若乘数为一个字,则被乘数为ax中,结果存放在dx:ax中(ax中存放结果的低位部分);若乘数为一个双字(仅80386有),则被乘数放在eax中,结果存放在edx:eax中(eax存放结果的低32位部分)。这样可以保证目的寄存器不可能发生溢出。
  mul指令运行之后,of和cf标志位可以用来决定结果的长度。若结果的长度超过了源操作数的长度,则这两个标志都将被置1,否则,这两个标志将被清零。这样,若mul bl语句运行之后cf=0,则ah为0,且8位结果存放在al中;若该语句运行之后cf=1,则说明结果占据了32的双字寄存器dx:ax。如范例中所示,用户可以在mul语句之后自行测试cf(或of)的值来检查结果是否大于源操作数的长度。
-------------------------
IMUL
用途:完成两个带符号数的乘法操作。
  语法结构/举例
  imul regB|memB   imul [byte bx]
  imul regW|memW   imul cx
  仅80286、80386有:
  imul regW|immB   imul cx,9
  imul regW|immW   imul bx,451
  imul regW,regW|memW,immW   imul cx,[word bx],3
  imul regW,regW|memW,immW   imul ax,bx,300
  仅80386有:
  imul regDW|memDW   imul [dword bx]
  imul regDW,immB   imul ebx,10
  imul regDW,immDW   imul eax,32769
  imul regW,regW|memW   imul bx,cx
  imul regDW,regDW|memDW   imul ecx,[dword bx]
  imul regDW,regDW|memDW,immB imul eax,edx,12
  imul regDW,regDW|memDW,immDW imul eax,[dword bx],35790

  示范代码
  mov al,4  ;被乘数
  mov bl,-2 ;乘数
  imul bl  ;ax←al*bl
   ;(ax=0FFF8h,cf=of=0)
  mov al,127  ;被乘数
  mov bl,-128 ;乘数
  imul bl  ;ax←al*bl
   ;(ax=0C080h,cf-of=1)
  描述:根据所使用处理器的不同,imul指令有三种基本格式,所带操作数为1~3个。其中有些格式需要显式地指定寄存器。其最简单的格式就是通过al寄存器完成一个字节寄存器或变量的乘运算,并将结果存放在ax寄存器中;与之相似的另一种格式就是用ax完成对一个字寄存器或变量的乘法,并将结果放在dx:ax中(低字放在ax中);对于80386处理器,imul指令还可以通过eax完成对一个双字寄存器或变量的乘法,并将结果放在edx:eax中。对于上述三种格式,若imul指令执行之后cf和of都为0,则高字节(字或双字)部分只是其低字节(字或双字)部分的符号扩展。也就是说,如范例中的第一部分所示,4*-2将把ax设置成0FFF8h。因为cf和of都为0,因此,指令对al(0F8h)进行符号扩展形成16位的值。当cf和of都为1时(如范例中第二部分所示),结果将占用整个目的寄存器(范例中为ax,其值为二进制补码形式的0C080h,即十进制的-16,256,这是127*-128所得的结果)。
  80286和80386处理器在上述指令的基础上扩充出imul指令的带乘法操作数的格式。在双操作数格式中,第一个操作数中存放被乘数;第二个操作数中是一个立即数——乘数(一个字节或字)。在三操作数格式中,第一个操作数指定了存放结果的目的寄存器,第二个寄存器中为被乘数,第三个操作数为一个立即数——乘法(一个字节或字)。未来的80386处理器还可以将这种格式扩展成为各种双字寄存器操作数,存储器操作数和立即值的组合形式。对于这些扩充格式,若在imul执行之后cf和af都为0,则说明所指定的目的寄存器可以容纳得下产生的结果;否则,说明结果太大,该寄存器容纳不下。

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

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

相关文章

求1+2+......+100的和

如何求12…100的和?有很多方法,这里我介绍用三种循环方法去求12…100的和 方法一:for循环: 代码如下: /**1. 求12......100的和2. 方法1:for循环*/ public class Demo2 {public static void main(String[…

台湾游戏企业抢滩大陆 研发成竞争核心

近日,台湾游戏企业进驻大陆设立研发机构、产品同大陆企业联合运营、大陆企业的产品进入台湾联运,以及最新的政策新闻,都将大陆和台湾这对本是同根的产业兄弟推上了风口浪尖。 在正在举行的“第二届中国优秀游戏制作人评选大赛”上&#xff0c…

phpstud如何安装mysql新版_MySQL_图解MySQL数据库的安装和操作,一、MySQL下载与安装 1、 - phpStudy...

图解MySQL数据库的安装和操作一、MySQL下载与安装1、下载介绍MySQL相信大家一定听说过,如果不知道它是干什么的,可以去google一下。MySQL的大本营:http://www.mysql.com/MySQL的下载地址:http://dev.mysql.com/downloads/ 因为要从…

erlang小技巧

.列表操作 lists:foreach(fun(X) -> io:format("E~p~n",[X]) end, [1,2,3]). lists:duplicate(10, 16#f). % [15,15,15,15,15,15,15,15,15,15] "abc-123" -> "abc" no_vsn(Name) -> lists:takewhile(fun($-)->false;(_)-> true …

mysql 插入中文 ERROR 1366 (HY000): Incorrect string value: '\xE7\x8E\x9E\x97' for column

1、出现这个问题,是因为我们的字符编码设置出现了问题,用cmd打开命令终端,查看我们的数据库设置: 2、输入命令use crm(crm是我创建的数据库,大家在修改时换成自己的数据库名即可) 再输入:show …

handlersocket mysql_Mysql插件之HandlerSocket的安装、配置、使用

HandlerSocket简介HandlerSocket是针对Mysql的一个NoSQL插件,它作为一个守护进程工作在mysqld进程里面,接收tcp连接,并处理来自客户端的请求。HandlerSocket不支持SQL查询,作为替代,它支持表的简单的CRUD操作。由于下面的原因&…

【转】TeeChart的用法

/// <summary> /// 获得数据集 /// </summary> /// <param name"sqlStr">传递查询语句</param> /// <returns>返回数据集</returns> public static DataSet GetDataSet(string sqlStr) { string conns…

java,jdk安装,配置环境变量,window10系统

1、找到我们要安装的jdk软件&#xff0c;软件下载我就不介绍了&#xff0c;jdk下载连接地址 然后安装&#xff0c;一直点下一步就可以了&#xff0c;这里不建议跟换软件目录&#xff0c;毕竟第一次用&#xff0c;出了什么错就不好弄了&#xff0c;注&#xff1a;记得软件的安装…

solr mysql数据注入_(solr系列:四)将mysql数据库中的数据导入到solr中

在前面的博文中&#xff0c;已完成了在tomcat中对solr的部署&#xff0c;为solr添加了一个自定义的core,并且引入了ik分词器。那么该如何将本地的mysql的数据导入到solr中呢&#xff1f;准备工作&#xff1a;1、mysql数据源&#xff1a;myuser库中的user表(8条数据)/*Navicat M…

40种Javascript中常用的使用小技巧【转】

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键< table border οncοntextmenureturn(false)>< td>no< /table> 可用于Table 2. < body onselectstart"return false"> 取消选取、防止复制 3. οnpaste&q…

超链接去下划线

在a标签里加上 style"text-decoration: none

Silverlight学习笔记(三):创建第一个Silverlight应用程序

在开始创建程序之前&#xff0c;还是要提一下关于Silverlight开发环境搭建的问题。如果使用VS2010&#xff0c;这可以搭建Silverlight4的开发环境。我推荐大家看这篇由大牛jv9撰写的【轻松建立Silverlight 4开发环境】。 我使用的是VS2008&#xff0c;所以要搭建的是Silverlig…

按钮旁边加一个提示_地铁站的那些“红色按钮”,你知道是干啥用的吗?乱按可能被拘留...

地铁紧急停车按钮图片来自网络位置&#xff1a;站台两侧墙壁上&#xff0c;靠近列车车头、车尾两侧。外观&#xff1a;上锁的红色四方小盒子&#xff0c;按钮为红色&#xff0c;旁边写有“紧急停车按钮”等字样。使用&#xff1a;紧急时刻击碎中间玻璃&#xff0c;按压按钮。红…

java中的局部变量、成员变量、类变量

局部变量&#xff1a;在方法、构造函数或者语句块中定义的变量被称为局部变量。 特点&#xff1a;变量的声明和初始化都是在方法中&#xff0c;方法结束后&#xff0c;变量就会自动销毁。 例&#xff1a;下面代码块的s2 成员变量&#xff1a;成员变量是定义在类中&#xff0c;…

根据F12在页面中调整div的大小

我们先随便写一个div大小&#xff0c;然后在chrome浏览器打开&#xff0c;显示效果&#xff1a; #logo{border: 1px solid black;width: 1300px;height: 50px;} .top{border: blue solid 1px;width: 420px;height: 50px;float: left;}<div id"logo"><div c…

头文件

1、头文件用于声明而不是用于定义 定义只可以出现一次&#xff0c;而声明可以出现多次。下列语句是一些定义&#xff0c;不应该放在头文件里&#xff1a; extern int ival 10; double fica_rate; 虽然ival声明为extern&#xff0c;但是它有初始化式&#xff0c;代表这条语句是…

删除了注册表winsock项及winsock2项怎么办

国庆节期间要值一天班&#xff0c;看看网站有没有什么问题&#xff0c;可是打开电脑去上不了网&#xff0c;于是在网上寻找答案&#xff0c;就这么着看到一个贴子&#xff0c;让删除注册表中的winsock及winsock2两项&#xff0c;哎&#xff0c;这一删可出大事了&#xff0c;网更…

mysql 数据库设计规范_MYSQL数据库设计规范与原则

MYSQL数据库设计规范1、数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线_组成;命名简洁明确(长度不能超过30个字符);例如&#xff1a;user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀;除非是备份数据库可以加0-9的自然…

The security settings could not be applied to the database because the connection has failed安装Mysql

安装msql出现这个问题&#xff0c;&#xff0c;百度了好久才解决了问题&#xff0c;说一下怎么解决的吧 把以前安装的Mysql删除打开C盘&#xff0c;点击查看&#xff0c;然后点击隐藏的项目&#xff0c;这时候目录会出现ProgramData文件&#xff0c;然后点击这个文件&#xff…

怎么给div加背景图片

<div style"background: url(img/news images/News-flash_01_02.png);height: 306px;width: 1300px;">注意&#xff1a;url的路径一定要加’