移位指令实现乘法

移位指令实现乘法includeirvine32.inc;.dataidword0;sumqword0;str1byte”请输入16进制的(32位整数)乘数和被乘数”,0str2byte”乘积为:”,0;jdword0;.codemainprocL1:movedx,offsetstr1;callwritestring;movj,0;moveax,0;eax为…

大家好,又见面了,我是你们的朋友全栈君。

include irvine32.inc;
.data
i dword 0;
sum qword 0;
str1 byte “请输入16进制的(32位整数)乘数和被乘数”,0
str2 byte “乘积为:”,0;
j dword 0;

.code

main proc

L1:
   mov edx,offset str1;
   call writestring;

   mov j,0;
   mov eax,0;eax为(低32位)乘积值;
   mov ebx,0;edx为(低32位)乘积值的中间值
   mov edx,0;
   mov esi,0;dsi为(高32位)乘积值的中间值
   mov edi,0;edi为(高32位)乘积值;
   mov cl,0;cl为移位的位数

   call readhex;
   cmp eax,80000000h;

   jna L4;
   neg eax;
   inc j;
L4:
   mov ebx,eax;    ebx存储乘数(来移位的)
   ;call writeint;

   call readhex;
   cmp eax,80000000h;

   jna L5;
   neg eax;
   inc j;
L5:
   mov i,eax;
   ;call writeint;
   mov eax,0;
   cmp ebx, 0;
   jne L2;
   cmp i,0;
   je  finally;

  L2: cmp ebx,0;
      jz quit;
      shr ebx,1;
      jnc next;if(ZF==0)

      mov esi,0;每次都要清零;
      mov edx,i;

      shld esi,edx,cl;
      shl edx,cl;

      add eax,edx;
      jnc L3;if(ZF==0)
      add edi,1;

 L3:
      add edi,esi;
next:
      inc cl;
      jmp L2;

quit:
     call crlf;
     mov edx,offset str2;
     call writestring;
     mov ebx,eax;

     cmp j,1;
     jne L6;
     add edi,80000000h
     ;call writestring
 L6:

     mov eax,edi;
     call writehex;

     mov eax,ebx;
     call writehex;

     call crlf;

     jmp L1;

finally:

exit
main endp;
end main

转载于:https://www.cnblogs.com/hqu-ye/archive/2013/02/25/2932588.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136773.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Vim如何撤销和回退[通俗易懂]

    Vim如何撤销和回退[通俗易懂]vim中的撤销与回退u,撤销ctrl+R,回退(rollback,回滚、回退)

  • OLAP组件选型[通俗易懂]

    OLAP组件选型[通俗易懂]OLAP组件选型一、OLAP简介1、olap准则2、OLAP场景的关键特征3、与oltp比较二、开源引擎1、Hive2、sparkSQL3、presto4、kylin5、impala6、druid7、Greeplum8、clickhouse三、选型要求1、实时性要求较高,对接kafka,实时查询数据2、可以接入hive数据3、单表查询数据较多,较少的join,在数仓中完成宽表构建一、OLAP简介说起OLAP要追溯到1993年。1、olap准则准则1OLAP模型必须提供多维概念视图准则

  • pycharm运行报错_pycharm failed to create virtual

    pycharm运行报错_pycharm failed to create virtual   

  • datagrid激活码_在线激活

    (datagrid激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/ide…

  • 单调队列详解

    单调队列详解刚学单调队列时,在网上各大博客找文章学,说实话,写得很杂,表示自己懵逼了些许,最后硬是啃出来了,所以我决定要写一篇能让大部分人都看懂的博客来。说单调队列,那我们就先说说这个单调队列是个什么物种。单调队列从字面上看,无非就是有某种单调性的队列,没错,这就是所谓的单调队列。单调队列它分两种,一种是单调递增的,另外一种是单调递减的。在这搬出百度百科的解释:不断地向缓存数组里读入元素,也不时地去掉最老的…

  • CTK Plugin Framework 基本原理

    CTK Plugin Framework 基本原理“CTKPluginFramework技术是面向C++的动态模型系统。该系统允许插件之间的松散耦合,并且提供了设计良好的方式来进行功能和数据…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号