企业网站可以做商城类/营业推广的方式
title: 汇编求和实验
keywords: 汇编
tags: [汇编]
categories: 嵌入式
汇编求和实验
刚开始学习汇编 给大家做个参考
实验 5 子程序 5.1 实验目的 ①掌握利用堆栈传递参数的子程序调用方法。 ②过程调用伪指令:PROC,ENDP,NEAR和FAR。 ③8088指令:CALL,RET,RETn。 5.2 实验类型 验证型实验\2. 操作步骤 ①输入,编译并运行程序。 ②用emu8086运行此程序,观察并记录每次过程调用及进出栈指令前后的SP和堆栈内容。 ③记录最后结果:SUM1,SUM2的段及偏移地址和它们的内容。 ④修改并自编程序,使得在屏幕上可以输入任意6个十进制数字,同时在屏幕上输出SUM1 的结果(要求输出十进制数字,打印出有效2位数即可)。
-
AX
:这是一个通用寄存器,通常用于算术和逻辑操作。在这段程序中,它被用来存储DATAS
段的地址,然后这个地址被移动到DS
寄存器。 -
DS
:这是一个段寄存器,用于存储数据段的地址。在这段程序中,它被设置为DATAS
段的地址,这样程序就可以访问在DATAS
段中定义的数据了。 -
SI
:这是一个索引寄存器,通常用于存储数组或字符串的索引。在这段程序中,它被用来存储DATA
数组的当前索引。 -
CX
:这是一个计数寄存器,通常用于存储循环的次数。在这段程序中,它被设置为6,表示输入循环的次数。 -
DX
:这是一个通用寄存器,通常用于I/O操作。在这段程序中,它被用来存储字符串的地址,然后这个地址被用于INT 21H
中断,以打印字符串。 -
AH
:这是AX
寄存器的高8位,通常用于存储操作码。在这段程序中,它被设置为9,表示打印字符串的操作。 -
DI
:这是一个索引寄存器,通常用于存储数组或字符串的索引。在这段程序中,它被初始化为0,用于打印总和。修改并自编程序,使得在屏幕上可以输入任意6个十进制数字,同时在屏幕上输出SUM1 的结果(要求输出十进制数字,打印出有效2位数即可)。
DATAS SEGMENTstring_1 DB 'input','$' ; 提示输入string_2 DB 'input again','$' ; 无效输入的错误消息string_3 DB ' ','$' ; 空格字符DATA DW 10 DUP(?) ; 存储输入数字的数组message DB 0ah,'sum:',0DH,'$' ; 总和输出的消息
DATAS ENDSSTACKS SEGMENTDW 256 dup(?)
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置DS寄存器指向DATAS段MOV SI, 0 ; 指针初始化MOV CX, 6 ; 循环次数MOV DX, OFFSET string_1 ; 提示输入MOV AH, 9INT 21HLp:CALL Input ; 调用输入子程序ADD SI, 2 ; 指针增加2(每个输入数字占2个字节)Loop Lp ; 循环直到所有数字输入完毕MOV DX, OFFSET message ; 打印总和消息MOV AH, 9INT 21HCALL Get_sum ; 调用Get_sum子程序计算总和MOV DX, AXADD DX, 30HMOV AH, 2INT 21HMOV AH, 4CH INT 21HInput PROC Nearpush AX push BXpush CX push DX MOV BX, 0 CLC ; 清除进位标志MOV DX, 0 Lp_0:MOV AH, 1INT 21H ; 从输入中读取一个字符CMP AL, 20H ; 检查输入是否为空格字符JE L_CRLF ; 如果是空格,跳转到L_CRLFSUB AL, 30H ; 将ASCII转换为整数MOV AH, 0 ; 清除AH寄存器XCHG AX, BX ; 交换AX和BX寄存器JMP Lp_0 ; 继续输入循环L_CRLF: ; 输入结束标记(换行)MOV DX, 0MOV DATA[SI], BX ; 将输入数字存储在DATA数组中POP DXPOP CXPOP BXPOP AXRET
Input ENDPGet_sum PROC NEARPUSH BXPUSH CXMOV BX, 0MOV CX , 6MOV DI, 0LOP1:MOV AX, DATA[DI]ADD BX, AXADD DI , 2LOOP LOP1MOV AX, BXPOP BXPOP CXRET
Get_sum ENDPCODES ENDS
END START
Input
过程是一个子程序,用于读取用户的输入。它首先将AX、BX、CX和DX寄存器的值压入堆栈以保存它们的当前状态。然后,它使用DOS中断21H的功能1来读取用户的输入。如果输入是空格(ASCII值为20H),则结束输入;否则,将输入的ASCII值转换为数字,并存储在BX寄存器中。最后,将BX寄存器的值存储在DATA
数组中,并恢复AX、BX、CX和DX寄存器的值。
Get_sum
过程是另一个子程序,用于计算DATA
数组中的所有数字的和。它首先将BX和CX寄存器的值压入堆栈以保存它们的当前状态。然后,它初始化BX寄存器为0,用于存储和;初始化CX寄存器为6,表示要加的数字的数量;初始化DI寄存器为0,表示数组的索引。然后,它在循环中将DATA
数组中的每个数字加到BX寄存器中。最后,将和存储在AX寄存器中,并恢复BX和CX寄存器的值。
但这个有致命缺点
笑死了 直接加0x30得到十进制数字就是 只有0-9可以正常输出结果
首先,它将12赋值给AX寄存器,然后将10赋值给CL寄存器。然后,它使用div cl
指令将AX寄存器的值除以CL寄存器的值。在这个操作后,商(也就是十位数)存储在AL寄存器中,余数(也就是个位数)存储在AH寄存器中。然后,它将AH寄存器的值复制到BH寄存器中。
然后,它检查AL寄存器的值是否为0。如果AL寄存器的值为0,那么它将跳转到tito
标签,否则,它将继续执行。
接下来,它将AL寄存器的值复制到DL寄存器中,然后将DL寄存器的值增加30H(因为在ASCII编码中,数字字符的编码是从30H开始的)。然后,它将AH寄存器的值设置为2,然后调用DOS中断21H的功能2,将DL寄存器中的字符输出。
在tito
标签处,它将BH寄存器的值复制到DH寄存器中,然后将DH寄存器的值增加30H。然后,它将AH寄存器的值设置为2,然后调用DOS中断21H的功能2,将DH寄存器中的字符输出。
DATAS SEGMENTstring_1 DB 'input','$' ; 提示输入string_2 DB 'input again','$' ; 无效输入的错误消息string_3 DB ' ','$' ; 空格字符DATA DW 6 DUP(?) ; 存储输入数字的数组message DB 'sum:',0ah,'$' ; 总和输出的消息
DATAS ENDSSTACKS SEGMENTDW 256 dup(?)
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ; 设置DS寄存器指向DATAS段MOV SI, 0 ; 指针初始化MOV CX, 6 ; 循环次数MOV DX, OFFSET string_1 ; 提示输入MOV AH, 9INT 21HLp:CALL Input ; 调用输入子程序ADD SI, 2 ; 指针增加2(每个输入数字占2个字节)Loop Lp ; 循环直到所有数字输入完毕MOV DX, OFFSET message ; 打印总和消息MOV AH, 9INT 21HCALL Get_sum ; 调用Get_sum子程序计算总和存到axmov cl, 10div cl mov bh,ah cmp al, 0je tito ;十位为零 跳转titoMOV Dl, al ADD dl, 30HMOV AH, 2INT 21H tito:MOV Dl, bh ADD dl, 30HMOV AH, 2INT 21H Input PROC Nearpush AX push BXpush CX push DX MOV BX, 0 CLC ; 清除进位标志MOV DX, 0 Lp_0:MOV AH, 1INT 21H ; 从输入中读取一个字符CMP AL, 20H ; 检查输入是否为空格字符JE L_CRLF ; 如果是空格,跳转到L_CRLFSUB AL, 30H ; 将ASCII转换为整数MOV AH, 0 ; 清除AH寄存器XCHG AX, BX ; 交换AX和BX寄存器JMP Lp_0 ; 继续输入循环L_CRLF: ; 输入结束标记(换行)MOV DX, 0MOV DATA[SI], BX ; 将输入数字存储在DATA数组中POP DXPOP CXPOP BXPOP AXRET
Input ENDPGet_sum PROC NEARPUSH BXPUSH CXMOV BX, 0MOV CX , 6MOV DI, 0LOP1:MOV AX, DATA[DI]ADD BX, AXADD DI , 2LOOP LOP1MOV AX, BXPOP BXPOP CXRET
Get_sum ENDPCODES ENDS
END START
如此我们便完成这节课的任务了
相关文章:

汇编个位数求和实验
title: 汇编求和实验 keywords: 汇编 tags: [汇编] categories: 嵌入式 汇编求和实验 刚开始学习汇编 给大家做个参考 实验 5 子程序 5.1 实验目的 ①掌握利用堆栈传递参数的子程序调用方法。 ②过程调用伪指令:PROC,ENDP,NEAR和FAR。 ③8088…...

CGAL在ubuntu下的安装及Hello World的测试
ubuntu下的安装 CGAL安装 参考地址:https://doc.cgal.org/latest/Manual/usage.html 在ubuntu下安装: sudo apt-get install libcgal-dev 安装后的路径: 注意安装这个步骤安装后,boost,CGAL,gmp,mpfr头文件都在/usr/include目录下。 boost,gmp,mpfr库文件都在/…...

VIM命令常用
一、启动vim 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 二、文件命令 打开单个文件vim file同时打开多个文件vim file1 …...

STM32单片机实战开发笔记-I2C通讯总线【wulianjishu666】
嵌入式单片机开发实战例程合集: 链接:https://pan.baidu.com/s/11av8rV45dtHO0EHf8e_Q0Q?pwd28ab 提取码:28ab I2C模块测试 功能描述 I2C总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序&am…...

区块链 | NFT 水印:Review on Watermarking Techniques(一)
🍍原文:Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 应用于 NFT 的水印技术 常见的水印技术类型可以分为: 可见 v i s i b l e \mathsf{visible} visi…...

Python设计模式 - 单例模式
定义 单例模式是一种创建型设计模式, 其主要目的是确保一个类只有一个实例, 并提供一个全局访问点来访问该实例。 结构 应用场景 资源管理:当需要共享某个资源时,例如数据库连接、线程池、日志对象等,可以使用单例模…...

AI日报:干翻AI PC!苹果M4芯片首发;GoEnhance可生成粘土风格视频;DeepSeek-V2模型已在魔搭社区开源
欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:AIbase - 智能匹配最适合您的AI产品和网站 1、干翻AI …...

cmake进阶:目标属性
一. 简介 前面学习了 cmake 的一些目录属性,本文来学习 cmake的一些 目标属性。 目标属性,顾名思义就是目标对应的属性。 二. cmake进阶:目标属性 目标属性,顾名思义就是目标对应的属性。 cmake的所有目标属性可以通过如下网址…...

uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之使用jar包插件
前言 如果你不会编写安卓插件,你可以先看看我之前零基础的文章(uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件), 我们使用第三方包,jar包编写安卓插件 开始 把依赖包,放到某个模块的/libs目录(myTestPlug/libs) 还要到build…...

恢复数据,电脑数据恢复详细操作指南(4个方法)
“我经常会把很多重要的文件都保存在电脑上,但今天在清理电脑时好像误删了一些数据,有没有比较好用的数据恢复方法可以分享一下呢?请大家给我推荐几个吧!” 随着电脑的普及,我们越来越多地将重要数据存储在电脑中。然而…...

make SGX_MODE=SW
make SGX_MODESW...

【毕业设计】基于微信小程序的校园快递平台系统设计与实现
1.项目介绍 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统校园快递平台系统信息管理难度大,容错率…...

SWAT模型【建模方法、实例应用、高级进阶技能】实践
第一部分:SWAT模型实践部分 一、SWAT模型及应用介绍 1.1 面源污染概要 1.2 SWAT模型及应用 1.3 SWAT模型原理 1.4 SWAT模型输入文件 1.5 ArcGIS与SWAT关系 二、SWAT模型中GIS必备技术 2.1 GIS软件平台 2.2 ArcGIS10.6安装和注意事项 2.3 ArcGIS入门 2.…...

远动通讯屏功能和作用
远动通讯屏功能和作用 首先大家要先了解,什么叫远动通讯?远动通讯是电力系统指用于远程通信和远程控制的设备。它主要采集电发场站的电气运行参数与远程调度监控中心进行数据交互,并接收调度中心远程的指令控制。提高电力系统的运行效率和可靠…...

Dashboard 安装部署
Dashboard 安装部署 Dashboard 安装部署 一:下载 二:部署步骤 1.镜像下载及导入 国内直接拉外网镜像会失败,可在境外下载镜像 查看 deployment 里的镜像版本 Dashboard Deploymentcontainers:- name: kubernetes-dashboardimage: k8s.g…...

idea Maven 插件 项目多环境打包配置
背景 不同环境的配置文件不一样,打包方式也有差异 1. 准备配置文件 这里 local 为本地开发环境 可改为 dev 名称自定义 test 为测试环境 prod 为生产环境 根据项目业务自行定义 application.yml 配置: spring:profiles:#对应pom中的配置active: spring.…...

密室逃脱游戏-第12届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第58讲。 密室逃脱游戏&…...

ES6-自学01
调用方法读取文件:如果失败就throw抛出err,成功则抛出data 2.使用promise封装,如果失败就改变状态为 reject(err) 如果成功就 resolve(返回成功的值) ,然后then,就可以获取返回的值,值toString()方法来把…...

PyQt5批量生成Checkbox及批量检查Checkbox的勾选状态
批量生成Checkbox并添加到TableWidget中 for i in range(10):checkbox_i QCheckBox(fCheckbox_{i}) # 生成Checkbox并命名为Checkbox_iself.ui_1.tableWidget_1.setCellWidget(i,1,checkbox_i) 批量检查勾选状态 # 批量生成Checkbox并存入列表 list_Checkbox_1 [] for …...

如何获得一个Oracle 23ai数据库(Virtual Appliance)
准确的说,是Oracle 23ai Free Developer版,因为企业版目前只在云上(OCI和Azure)和ECC上提供。 方法包括3种,本文介绍第1种: Virtual ApplianceRPM安装Docker 从此处下载虚拟机。 可以看到虚拟机需要4G内…...

跟TED演讲学英文:What moral decisions should driverless cars make by Iyad Rahwan
What moral decisions should driverless cars make? Link: https://www.ted.com/talks/iyad_rahwan_what_moral_decisions_should_driverless_cars_make Speaker: Iyad Rahwan Date: September 2016 文章目录 What moral decisions should driverless cars make?Introduct…...

【ITK配准】第七期 尺度(Metric)-规格化交互信息Metric
很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK中的互信息Metric,即itk::ITK中的互信息Metric,即itk::MutualInformationImageToImageMetric ,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享…...

Python练习 20240508一次小测验
Python基础 10道基础练习题 1. 个人所得税计算器描述输入输出示例…...

桥梁施工污水需要哪些工艺设备
桥梁施工过程中产生的污水通常包含泥浆、油污、化学品残留等污染物。为了有效处理这些污水,确保施工现场的环境保护和合规性,通常需要以下工艺设备: 沉砂池:用于去除污水中的砂粒和其他重质无机物,减少对后续处理设备的…...

ADOP带你了解:长距离 PoE 交换机
您是否知道当今的企业需要的网络连接超出了传统交换机所能容纳的长度?这就是我们在长距离 PoE 交换机方面的专业化变得重要的地方。我们了解扩展网络覆盖范围的挑战,无论是在广阔的园区还是在多栋建筑之间。使用这些可靠的交换机,我们不仅可以…...

想要品质飞跃?找六西格玛培训公司就对了!
在当今复杂多变的市场环境中,企业的竞争早已不再是单一的价格或产品竞争,而是转向了对品质、效率和创新的全面追求。六西格玛,作为一种全球公认的质量管理方法论,正成为越来越多企业追求品质革命的重要工具。在这其中,…...

【工具】Office/WPS 插件|AI 赋能自动化生成 PPT 插件测评 —— 必优科技 ChatPPT
本文参加百度的有奖征文活动,更主要的也是借此机会去体验一下 AI 生成 PPT 的产品的现状,因此本文是设身处地从用户的角度去体验、使用这个产品,并反馈最真实的建议和意见,除了明确该产品的优点之外,也发现了不少缺陷和…...

4000定制网站,因为没有案例,客户走了
接到一个要做企业站点的客户,属于定制开发,预算4000看起来是不是还行的一个订单? 接单第一步:筛客户 从客户询盘的那一刻开始就要围绕核心要素:预算和工期,凡是不符合预期的一律放掉就好了,没必…...

内容安全(AV)
防病毒网关(AV)简介 基于网络侧 识别 病毒文件,工作范围2~7层。这里的网关指的是内网和外网之间的一个关口,在此进行病毒的查杀。在深信服中就有一个EDR设备,该设备就是有两种部署,一个部署在网关…...

互联网产品为什么要搭建会员体系?
李诞曾经说过一句话:每个人都可以讲5分钟脱口秀。这句话换到会员体系里面同样适用,每个人都能聊点会员体系相关的东西。 比如会员体系属于用户运营的范畴,比如怎样用户分层,比如用户标签及CDP、会员积分、会员等级、会员权益和付…...