AHU 汇编 实验四

  • 实验名称:实验四 两个数的相乘

  • 实验内容:

用子程序形式编写:

A*B:从键盘输入a和b,计算A*B,其中乘法采用移位和累加完成

  • 实验过程:

源代码:

data segmentmul1 db 16,?,16 dup(?)mul2 db 16,?,16 dup(?)buff1 db 'Please input mul1: $'buff2 db 'Please input mul2: $'buff3 db 'The consequense is : $'data endscode segmentassume cs:code,ds:datamain proc far                   ; main programmov ax,datamov ds,axpush dsxor ax,ax                    ;push ds and es and ax=0call tips1                   ;提示用户输入第一个数call input1                  ;在缓冲区接收call tips2                   ;提示用户输入第一个数call input2                  ;在缓冲区接收lea si,mul1+2                ;开始将第一个数10进制转换成2进制call dtob      push bx                      ;压栈保存第一个数的2进制lea si,mul2+2call dtob                    ;开始将第一个数10进制转换成2进制mov dx,bx                    ;dx中装的是第二个数的二进制pop bx                       ;bx中装的是第一个数的二进制call multiple                ;调用乘法子程序call tips3                   ;提示结果输出call btod                    ;将结果的二进制转换成十进制输出mov ah,4chint 21hretmain endp;-----------------------------------------------------------tips1 proc nearmov dx,offset buff1mov ah,9int 21hrettips1 endp;------------------------------------------------------------input1 proc nearlea dx,mul1mov ah,0ahint 21hmov dl,13mov ah,2int 21hmov dl,10mov ah,2int 21hretinput1 endp;--------------------------------------------------------------tips2 proc nearmov dx,offset buff2mov ah,9int 21hrettips2 endp;-----------------------------------------------------------input2 proc nearlea dx,mul2mov ah,0ahint 21hmov dl,13mov ah,2int 21hmov dl,10mov ah,2int 21hretinput2 endp;--------------------------------------------------------------dtob proc nearmov bx,0getnum:mov al,byte ptr [si]     ;用al保存第一个字符sub al,30hjl  exit1cmp al,9jg  exit1cbwxchg ax,bxmov dx,10mul dxxchg ax,bxadd bx,axinc si                  ;循环,如果遇到的不是0~9的数就自动跳出程序jmp getnumexit1: retdtob endpmultiple proc nearmov bp,0                ;用bp寄存器保存结果start:shr dx,1                ;右移第二个乘数,判断CF的值,如果是1就进行加法操作,如果是0就继续右移jc additionshl bx,1                ;第一个乘数左移cmp dx,0                ;当第二个数为0是结束jz exit2jmp startaddition:add bp,bx               ;将相加结果保存在BP寄存器中shl bx,1jmp startexit2 :retmultiple endpbtod proc nearmov ax, bp             ;把bp寄存器的值给axmov cx, 1              ;计数器mov bl, 10             ;10作除数div1:idiv bl              push ax                ;保存ax/10后的结果,ah存放余数,al存放商cmp al, 0              ;商为0则开始输出jz outputmov ah, 0              ;置余数为0,继续除inc cxjmp div1output:pop dx               mov dl, dh            ;出栈输出余数add dl, 30hmov ah, 2int 21hloop outputretbtod  endptips3 proc nearmov dx,offset buff3mov ah,9int 21hrettips3 endpcode endsend main

运行结果:

  • 实验小结:

这次的实验有一个很困惑我的地方就是我一开始弄错了,以为我们用户能用的寄存器只有AX,BX,CX,DX这四个,所以我一直拿缓冲区的内存当作一个寄存器来回使用,这对我进行数的操作造成了很大的不便,此外我的移位操作乘法,设计的很麻烦,一开始总是想用一个寄存器保存第二个乘数的1的位权,这就遇到了我上面说的寄存器不够的情况,后来在老师的帮助下,我改进了算法,只要判断右移的第二个乘数CF位是0,还是1,如果是1就把AX左移的结果加进来,AX的值无需保存,只要最后把结果放进BP寄存器就可以了。通过这次实验,我收获了很多。

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

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

相关文章

树莓派安装Nginx服务搭建web网站结合内网穿透实现公网访问本地站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

什么是高级编程语言?——跟老吕学Python编程

什么是高级编程语言?——跟老吕学Python编程 高级编程语言简介高级编程语言发展历程高级编程语言特点高级编程语言分类命令式语言函数式语言逻辑式语言面向对象语言 常见的高级编程语言及其特点和应用领域高级编程语言性能分析高级编程语言的工作方式 高级编程语言简…

GPT出现Too many requests in 1 hour. Try again later.

换节点 这个就不用多说了,你都可以上GPT帐号了,哈…… 清除cooki

平面纯弯梁单元Matlab有限元编程 |欧拉梁单元| 简支梁|悬臂梁|弯矩图 |变形图| Matlab源码 | 视频教程

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

容灾演练双月报|美创DRCC助力银行高效验证数据库高可用架构

了解更多灾备行业动态 守护数字化时代业务连续 目录 CONTENTS 01 灾备法规政策 02 热点安全事件 03 容灾演练典型案例 01 灾备法规政策 2月,工信部印发《工业领域数据安全能力提升实施方案(2024—2026年)》,要求到2026年…

专属你的时尚盛宴,尽在手机无人直播!

时尚,是一个永恒的话题。在这个充满活力的时代,时尚不仅仅是穿着打扮,更是一种生活态度,一种表达自我的方式。每个人都有自己独特的时尚理念,每个人都可以在时尚的世界里找到属于自己的一席之地。 手机无人直播&#…

鼠标在QTreeView、QTableView、QTableWidget项上移动,背景色改变

目录 1. 前言 2. 需求 3. 功能实现 3.1. 代码实现 3.2. 功能讲解 4. 附录 1. 前言 本博文用到了Qt的model/view framework框架,如果对Qt的“模型/视图/委托”框架不懂,本博文很难读懂。如果不懂这方面的知识,请在Qt Assistant 中输入Model/View…

力扣大厂热门面试算法题 15-17

15. 三数之和,16. 最接近的三数之和,17. 电话号码的字母组合,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.11 可通过leetcode所有测试用例。 目录 15. 三数之和 解题思路 完整代码 Java Python ​…

Ubuntu 24.04 抢先体验换国内源 清华源 阿里源 中科大源 163源

Update 240307:Ubuntu 24.04 LTS 进入功能冻结期 预计4月25日正式发布。 Ubuntu22.04换源 Ubuntu 24.04重要升级daily版本下载换源步骤 (阿里源)清华源中科大源网易163源 Ubuntu 24.04 LTS,代号 「Noble Numbat」,即将与我们见面! Canonica…

vue provide 与 inject使用

在vue项目中,如果遇到跨组件多层次传值的话,一般会用到vuex,或者其他第三方共享状态管理模式,如pinia等,但是对于父组件与多层次孙子组件时,建议使用provide 与 inject,与之其他方式相比&#x…

如何使用Everything+cpolar实现公网远程搜索下载内网储存文件资料

文章目录 前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库,我们需要两个软件的支持,分别是cpolar(用于搭建内网穿透数据隧道…

高分1、2号卫星原始遥感影像数据

高分一号 高分一号卫高分一号卫星是中国高分辨率对地观测系统的首发星,突破了高空间分辨率、多光谱与宽覆盖相结合的光学遥感等关键技术,设计寿命5至8年。 高分辨率对地观测系统工程是《国家中长期科学和技术发展规划纲要(2006~2020年)》确定…

StarRocks实战——欢聚集团极速的数据分析能力

目录 一、大数据平台架构 二、OLAP选型及改进 三、StarRocks 经验沉淀 3.1 资源隔离,助力业务推广 3.1.1 面临的挑战 3.1.2 整体效果 3.2 稳定优先,监控先行,优化运维 3.3降低门槛,不折腾用户 3.3.1 与现有的平台做打通 …

分库分表浅析原理

数据库存放数据大了,查询等操作就会存在瓶颈,怎么办? 1. 如果是单张表数据大了,可以在原有库上新建几张表table_0、table_1、table_2、.....table_n 写程序对数据进行分表: --这里提供一种一种分表策略,这里只需维护…

容器安全是什么?

容器安全定义 容器安全是指保护容器的完整性。这包括从其保管的应用到其所依赖的基础架构等全部内容。容器安全需要完整且持续。通常而言,企业拥有持续的容器安全涵盖两方面: 保护容器流水线和应用保护容器部署环境和基础架构 如何将安全内置于容器流…

Java开发从入门到精通(一):Java的基础语法项目案例

Java大数据开发和安全开发 Java 案例练习案例一:买飞机票案例二:开发验证码案例三:评委打分案例四:数字加密案例五:数组拷贝案例六: 抢红包案例七:找素数案例八:模拟双色球[拓展案例] Java 案例练习 案例一:买飞机票 分析: 方法是需要接收数据?需要接收机票原价、当前月份、舱…

新手如何快速上手学习单片机?

读者朋友能容我,不使博文负真心 新开专栏,期待与诸君共享精彩 个人主页:17_Kevin-CSDN博客 专栏:《单片机》 学习单片机是一个有趣且有挑战性的过程。单片机是一种微控制器,广泛应用于各种电子设备和嵌入式系统中。在这…

#QT(本地音乐播放器)

1.IDE:QTCreator 2.实验:之前做的音乐播放器只做了一个界面,是因为跟的课程发现到后面需要付费,并且WINGW6.2.0运行QMediaPlayer时无法运行,会崩溃,现在退一步用WINGW5.12.2做一个本地音乐播放器 3.记录&am…

Mysql8的优化(DBA)

Mysql8的优化 1、Mysql的安装优化1.1 修改配置参数(命令行、配件文件)1.1.1 命令行修改配置参数1.1.2 参数持久化1.1.3 Mysql多实例启动,以及配置密码文件 1.2 查询表的相关参数,以及表空间管理 2、Mysql高级优化(SQL&…

Android中显式Intent和隐式Intent的区别

1、intent的中文名 称是意图,Intent是各个组件之间信息沟通的桥梁, 既能在Activity之间沟通,又能在Activity与Service之间沟通,也能在Activity与Broadcast之间沟通 **intent组成元素的列表说明**2、显式Intent,直接指定…