【微机原理与汇编语言】循环程序设计

news2025/1/15 6:51:50

一、实验目的

1.熟练掌握8086/8088常用汇编指令的使用方法

2.熟练掌握循环结构程序编程技巧

3.熟练掌握汇编语言程序运行调试方法

二、实验要求

认真分析实验题目,设计程序流程图,独立完成代码编写及运行调试。

三、实验题目

给出不大于255的十个正整数,分别计算出其中偶数和奇数的平均值,并以十进制的方式输出,保留到小数点后两位。

四、程序流程图

略。

五、程序代码

sseg segment stack
stp	db 100 dup(0)
sseg ends
dseg segment
dta	db 12,14,12,14,12,16,57,21,25,11
dtb	db 0;偶数计数器
dtc	db 0;奇数计数器
jishu	db 0,0
oushu	db 0,0
num	db ?
flag	db 1
dseg ends
cseg segment
assume cs:cseg,ds:dseg
assume ss:sseg
print macro 
	add al,30h
	mov dl,al
	mov ah,02h
	int 21h
endm
huanhang macro
	mov al,0ah
	mov dl,al
	mov ah,02h
	int 21h
endm
shijinzhi macro
local a,b,c
	mov num,al
	;判断是否大于100
	cmp num,100
	jc a;num<100,cf =1,跳a
	mov ah,0
	mov al,num
	mov bl,100
	div bl;al为商,ah为余数
	mov num,ah
	print
	mov flag,0
a:	;判断是否大于10
	cmp num,10
	jc b
	mov ah,0
	mov al,num
	mov bl,10
	div bl;al为商,ah为余数
	mov num,ah
	print
	mov flag,1
b:	cmp flag,1
	;flag的作用是防止余数小于10
	jnc c
	mov al,0
	print
c:	mov al,num
	print
endm
panduan proc
	mov dl,2eh
	mov ah,02h
	int 21h
	mov al,num
	mov ah,0
	cmp ah,al
	jc notzero
	print
	ret
notzero:	mov al,num
	mov num,100
	mul num;存在ax中
	div bl
	shijinzhi
	ret
panduan endp
start:	mov ax,dseg
	mov ds,ax
	mov ax,sseg
	mov ss,ax
	mov sp,size stp
	mov cx,10
	mov si,0
again:	mov al,[si]
	shr al,1;cf = 1奇,cf = 0偶
	jc d
	mov bl,[si]
	add oushu,bl
	adc byte ptr oushu+1,0
	inc dtb
	jmp e
d:	mov bl,[si]
	add jishu,bl
	adc byte ptr jishu+1,0
	inc dtc
e:	inc si
	loop again
	mov ah,oushu+1
	mov al,oushu
	div dtb;al中存平均值,ah存余数
	mov oushu,al
	mov oushu+1,ah
	mov ah,jishu+1
	mov al,jishu
	div dtc;
	mov jishu,al
	mov jishu+1,ah
	;按十进制输出
	mov al,oushu
	shijinzhi
	mov al,oushu+1
	mov num,al
	mov bl,dtb
	call panduan
	huanhang
	mov al,jishu
	shijinzhi
	mov al,jishu+1
	mov num,al
	mov bl,dtc
	call panduan
	mov ah,4ch
	int 21h
cseg ends
end start

运行截图:

六、实验总结

本次实验中,我对循环结构程序又有了更新一层认识,对汇编指令的使用规则及方法掌握的更熟练了。在本次实验中,我同时也遇到了一些困难:

  1. 在最后的几次调试时,发现小数位是不对的,且只有一位数。经过调试发现是我直接将余数打印了出来,并没有处理成小数。要想将余数转化成小数,将余数乘以10的倍数再除以除数即可。
  2. 在写宏定义时,也想运用循环结构,不知是否可行。在老师的帮助下,发觉需要在头部声明:local x,x,x。原因是当宏在主程序中被二次展开时,标号会重名,所以要提前声明一下防止出错。
  3. 在写程序的过程中也犯了一些基础的错误,如不能直接div 数值,需将数值放在寄存器中;adc oushu+1,0是不行的,需要指明数值类型是字还是字节,应修改为:adc byte ptr oushu+1,0;以及mov 存储器,存储器这种低级的错误。

经过这段时间的训练,一点点地编写代码与调试,对于汇编语言有了更高一层的理解与掌握,也认识到了它身为低级语言的重要性,希望我在未来的学习中能更加深刻的学习与掌握相关知识,搭建好人与机器沟通的桥梁。

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

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

相关文章

电子电器架构 --- 智能座舱技术分类

电子电器架构 — 智能座舱技术分类 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,…

纯血鸿蒙开发教程:如何实现运动饮食卡片效果

开发背景 人们对健康的要求越来越高&#xff0c;从单纯的健康饮食到健康运动&#xff0c;再到两者的结合。但是&#xff0c;饮食和运动之间的平衡一般人很难掌握&#xff0c;而我们这款 APP 将饮食、运动、以及自身身体状况&#xff08;如体脂、体重、内脂等&#xff09;有机结…

React + SpringBoot开发用户中心管理系统

用户中心项目搭建笔记 技术栈 前端技术栈 “react”: “^18.2.0”,ant-design-pro 后端技术栈 SpringBoot 2.6.x 项目源码地址 https://gitee.com/szxio/user-center 前端项目搭建 快速搭建一个后端管理系统项目框架 初始化 antDesignPro 官网&#xff1a; https://…

zdppy_amauth 实现给角色批量绑定权限

新增接口 api.resp.post("/auth/role_auth", amauth.role.add_auths)如何测试 如何测试能不能给指定的角色批量的添加权限呢&#xff1f; 1、需要新建一个角色2、需要拿到这个角色的ID3、需要新增三个权限4、需要拿到新增的三个权限的ID5、拿着角色ID和权限ID列表…

11. RBAC权限管理从零到一实现(二)

前端页面已提交至git https://github.com/SJshenjian/cloud-web默认用户名密码admin 1

深度解析:ISP代理与住宅代理区别

代理充当用户和互联网之间的中介&#xff0c;提供各种功能以增强安全性、隐私性和可访问性。在众多代理类型中&#xff0c;ISP 和住宅代理脱颖而出&#xff0c;每种代理都具有独特的功能和应用。 了解 ISP 代理 代理ISP&#xff0c;通常称为互联网服务提供商代理&#xff0c;通…

在cmd菜单中使用自定义命令通过bat和powershell命令调用翻译API

先说一个血淋淋的结果&#xff0c;这个小功能其实在github已经有大佬帮我们封装好了&#xff0c;我也是自己刚倒腾好之后才发现的&#xff0c;所以如果只是需要这个功能的朋友可以直接移步这个项目&#xff1a;https://github.com/kenshinji/yddict&#xff0c;自己电脑安装一个…

HarmonyOS应用开发深度指南:从基础到高级实践

1. HarmonyOS开发概述 HarmonyOS是华为推出的分布式操作系统,旨在为不同设备提供统一的体验。它支持多种编程语言,包括ArkTS、JS、C/C++和Java。开发者需要了解HarmonyOS的分布式架构,包括Ability、Service、Data Ability等核心概念。 了解HarmonyOS的分布式架构:HarmonyO…

今时今日蜘蛛池还有用吗?

最近不知道哪里又开始刮起“蜘蛛池”这个风气了&#xff0c;售卖、购买蜘蛛池的行为又开始在新手站长圈里开始蔓延和流行了起来&#xff0c;乍一看到“蜘蛛池”这个词给明月的感受就是陌生&#xff0c;要经过回忆才能想起来一些残存的记忆&#xff0c;所谓的蜘蛛池说白了就是利…

废品回收小程序开发,助力商家拓展回收市场

随着互联网的快速发展&#xff0c;废品回收行业也走向了数字化发展&#xff0c;废品回收小程序成为了拓展市场的重要方式。在当下万亿元下的回收市场中&#xff0c;废品回收小程序的发展也能够发挥重要作用&#xff0c;提高市场回收效率&#xff0c;提高大众的回收意识&#xf…

Ubuntu 20.04 LTS配置JDK、Git

一、配置JDK 1.1 更新系统 执行以下命令 sudo apt update 出现以下界面即为安装成功 1.2 安装openjdk-11-jdk Ubuntu20.04中没有默认JDK&#xff0c;执行以下指令安装&#xff0c;默认会自动配置一些必要环境变量 sudo apt install openjdk-11-jdk 1.3 配置环境变量&…

MQTT.FX的使用

背景 在如今物联网的时代下&#xff0c;诞生了许多的物联网产品&#xff0c;这些产品通过BLE、WIFI、4G等各种各样的通信方式讲数据传输到各种各样的平台。 除了各个公司私有的云平台外&#xff0c;更多的初学者会接触到腾讯云、阿里云之类的平台。设备接入方式也有着多种多样…

大模型时代,是 Infra 的春天还是冬天?

Highlights 大模型时代元年感悟 Scaling Laws 是大模型时代的摩尔定律,是最值得研究的方向 LLM 发展的三个阶段: 算法瓶颈 -> 数据瓶颈 -> Infra 瓶颈 为什么 GPT 一枝独秀, BERT、T5 日落西山? 大模型时代,是大部分 Infra 人的冬天,少部分 Infra 人的春天(算法研…

网工内推 | 联通公司,云计算售前,AWS认证优先

01 联通数字科技有限公司 &#x1f537;招聘岗位&#xff1a;云计算售前工程师 &#x1f537;职责描述&#xff1a; 1.了解私有云&#xff0c;公有云&#xff0c;混合云等云计算技术知识&#xff0c;了解云计算行业现状及发展趋势。 2.承担区域项目售前工作支持&#xff0c;为…

Glide支持通过url加载本地图标

序言 glide可以在load的时候传入一个资源id来加载本地图标&#xff0c;但是在开发过程中。还得区分数据类型来分别处理。这样的使用成本比较大。希望通过自定义ModelLoader实现通过自定义的url来加载Drawab。降低使用成本 实现 一共四个类 类名作用GlideIcon通过自定义url的…

【保姆级讲解Outlook邮箱的使用技巧】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

海南聚广众达电子商务咨询有限公司靠谱吗?

在数字经济的浪潮中&#xff0c;抖音电商作为新兴业态&#xff0c;正以其独特的魅力和强大的势能&#xff0c;改变着传统商业模式&#xff0c;引领着新一轮的消费潮流。海南聚广众达电子商务咨询有限公司&#xff0c;作为抖音电商服务领域的佼佼者&#xff0c;凭借其专业的团队…

三十六、openlayers官网示例Earthquake Clusters解析——在聚合图层鼠标触摸显示五角星

官网demo地址&#xff1a; Earthquake Clusters 这篇展示了鼠标触摸聚合图层点位显示五角星的效果。 首先是初始化地图&#xff0c;加载了一个KML格式的矢量数据源&#xff0c;extractStyles为false表示不从kml数据源中提取样式。使用Select添加了鼠标选中的交互事件 vector …

postman教程-14-生成随机数

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了Postman关联接口的调用方法&#xff0c;本小节我们讲解一下Postman生成随机数的方法。 在接口测试中&#xff0c;经常需要向接口发送不同的输入数据&#xff0c;以确保接口的健壮性和可靠性。…

游戏缺失xinput1_3.dll怎么修复,总结几种有效的修复方法

在现代科技日新月异的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;由于各种原因&#xff0c;电脑可能会出现一些错误或问题&#xff0c;其中之一就是找不到xinput13.dll文件&#xff0c;这个问题会导致软件或者游戏无法正常启动运行&#xf…