移位指令实现乘法

移位指令实现乘法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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab 定位_matlab读取mp3音频文件

    matlab 定位_matlab读取mp3音频文件PAGEPAGE1毕业设计(论文)基于MATLAB的声源定位系统专业年级07级应用物理学学号姓名指导教师评阅人二○一一年六月中国南京河海大学本科毕业设计(论文)任务书(理工科类)Ⅰ、毕业设计(论文)题目:基于matlab系统声源识别与实时定位初步研究Ⅱ、毕业设计(论文)工作内容(从综合运用知识、研究方案的设计、研究方法和手段的运用、应用文献资料…

    2025年12月2日
    6
  • 关于AD域的介绍

    关于AD域的介绍关于AD域第一次写博客,记录一下如何搭建自己的域服务器,以及其中遇到的一些问题,感谢“我的bug我做主”的文章《C#实现AD域验证登录(一)》,为防止原文被作者删除,手动将原文复制下来,如有侵权,请及时告知。域的简单介绍为什么要使用域?假设你是公司的系统管理员,你们公司有一千台电脑。如果你要为每台电脑设置登录帐户,设置权限(比如是否允许登录帐户安装软件),那你要分别坐在这一千台电脑前工作。如…

    2022年5月17日
    47
  • linux中lamp架构搭建_docker搭建redis集群

    linux中lamp架构搭建_docker搭建redis集群文章目录一、什么是LAMP架构二、各组件的作用1.Apache(前台)2.MYSQL(后台)3.PHP/Perl/Python4.linux三、LAMP架构安装一、什么是LAMP架构LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MYSQL数据库服务器、PHP(Perl、python)网页编程语言。在构建LAMP架构时,各组件的安装顺序以此为Lin

    2022年10月16日
    3
  • BootStrap初始

    序言什么是BootstrapBootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。它是为实现快速开发Web应用程序而设计的一套前端工具包。它支持响应式布

    2022年3月29日
    60
  • AndroidAutoSize使用简介[通俗易懂]

    AndroidAutoSize使用简介[通俗易懂]一、简介今日头条屏幕适配方案终极版,一个极低成本的Android屏幕适配方案,项目地址:https://github.com/JessYanCoding/AndroidAutoSize由于此方法是一刀切来适配,所有界面以dp为单位的都会受影响,因此一定要做好防护。二、使用1、集成//集成implementation’me.jessyan:autosize:1.2.1…

    2022年6月6日
    34
  • jQuery 教程

    jQuery 教程菜鸟教程—jQuery教程:https://www.runoob.com/jquery/jquery-tutorial.htmljQuery是一个JavaScript库。jQuery极大地简化了JavaScript编程。jQuery简介什么是jQuery?jQuery是一个JavaScript函数库。jQuery是一个轻量级的”写的少,做的多”的JavaScript库。jQuery库包含以下功能:HTML…

    2022年5月29日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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