汇编语言课程设计1 代码 优化版

news2024/11/23 22:46:52

在这里插入图片描述

assume cs:codesg

stacksg segment
	dw 16 dup(0)
stacksg ends

datasg segment
	db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
	db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
	db '1993','1994','1995'
	;以上是表示21年的21个字符串
	
	dd 16,22,382,1356,2390,8000,16000,24286,50065,97479,140417,197514
	dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
	;以上是表示21年公司总收入的21个dword型数据
	
	dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
	dw 11542,14430,15257,17800
	;以上是表示21年公司雇员人数的21个word型数据
datasg ends


datasg2 segment
	db 32 dup (0)
datasg2 ends




codesg segment
	start:	
	
			mov ax,datasg	;原始数据
			mov es,ax
			mov di,0
		
			
			mov ax,stacksg	;初始化栈
			mov ss,ax
			mov sp,32
			
			mov ax,datasg2	;显示字符
			mov ds,ax
			mov si,0
			

			mov bl,5	;设置行号
			mov cx,21	;循环次数
		s:	push cx
		
			mov ax,es:[di]	;低2个字节
			mov [si],ax
			
			mov ax,es:[di+2]	;高2个字节
			mov [si+2],ax
			
			mov word ptr [si+4],0	;设置0结尾
			
			mov dh,bl
			mov dl,3
			mov cl,2
			call show_str 
			;4个字节年份
			
			
			
			mov ax,es:[di+84]	;低2个字节
			mov dx,es:[di+86]	;高2个字节
			call dtoc
			
			mov dh,bl
			mov dl,23
			mov cl,4
			call show_str

			;4个字节收入
			
	
			
			
			mov ax,es:[si+168]
			mov dx,0
			call dtoc
			
			mov dh,bl
			mov dl,43
			mov cl,8
			call show_str 		
			;2个字节雇员数
			
			
		
			mov ax,es:[di+84]	;低16位
			mov dx,es:[di+86]	;高16位
			;被除数
			

			div word ptr es:[si+168]
			;除数
			
			;结果商存在ax中 
			
			mov dx,0
			call dtoc 
			
			
			mov dh,bl
			mov dl,63
			mov cl,2
			call show_str
			
			
			
			;2字节人均收入
			
			
			add di,4
			add si,2
			inc bl
			
			
			pop cx
			loop s
					
			mov ax,4c00h
			int 21h	
			
	;名称:dtoc
	;功能:将word型数据转变为表示十进制的字符串,字符串以0结尾符
	;参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位
	;		ds:si指向字符串的首地址
	;返回:无
	dtoc:	push ax
			push bx
			push cx
			push dx
			push si
			push ds
			
			mov bx,0	;用计数
			
	dtoc_s:	mov cx,10
			call divdw 
			;返回:(dx)=结果的高16位,(ax)=结果的低16位
			;(cx)=余数
			
			add cx,30h	;转换为对于的ascii码
			push cx ;余数入栈
			inc bx
			
			mov cx,dx	;判断结果的高16位是否为0
			jcxz dtoc_s0	
			jmp short  dtoc_s ;不为零继续进行除法运算
			
			
	dtoc_s0:mov cx,ax	;判断结果的低16位是否为0
			jcxz dtoc_s1	
			jmp short  dtoc_s ;不为零继续进行除法运算
			
			
	dtoc_s1: mov cx,bx
		
	dtoc_s2:
			pop ax
			mov [si],al
			inc si
			loop dtoc_s2
			
			
			mov ax,0
			mov [si],ax ;最后加个0作为结尾
			
			
			pop ds
			pop si
			pop dx
			pop cx
			pop bx
			pop ax
			
			ret 	
			
			
	
			
			
	;名称:show_str
	;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
	;参数:(dh)=行号(取值范围1~25),(dl)=列号(取值范围1-80),
	;		(cl)=颜色,ds:si指向字符串的首地址
	;返回:无
	show_str:	push ax
				push bx
				push cx
				push dx 
				push es
				push di
				push ds
				push si
				
				
				mov ax,0b800h
				mov es,ax
				
				sub dh,1
				mov al,dh
				mov ah,160
				mul ah
				
				mov bx,ax	;bx=((dh)-1)*160
				
				sub dl,1
				mov al,dl
				mov ah,2
				mul ah
				
				add bx,ax	;bx=((dh)-1)*160+((dl)-1)*2
				
				mov di,bx   ;计算出的显示的位置
				
				mov al,cl ;al=cl 要设置显示的颜色
				
	show_str_s:	mov cl,[si]
				mov ch,0
				
				jcxz show_str_ok	;判断读取的字符是否为0,等于0结束,不等于0显示当前字符
				
				
				mov ah,[si]
				mov es:[bx],ah ;设置显示的字符
				mov es:[bx+1],al	;设置显示的颜色
				
				inc si   ;读取下一个字符
				add bx,2 ;指向下一个字符显示的位置
				
				jmp short show_str_s
				
				
				
	show_str_ok: 	
					pop si
					pop ds
					pop di
					pop es
					pop dx
					pop cx
					pop bx
					pop ax

					ret
	;名称:divdw
	;功能:进行不会产生溢出的出发运算,被除数为dword型,除数为word型,结果为dword
	;参数:(ax)=dword型数据的低16位
	;	   (dx)=dword型数据的高16位
	;	   (cx)=除数
	;返回:(dx)=结果的高16位,(ax)=结果的低16位
	;	   (cx)=余数
	divdw:	push bx
	
			mov bx,ax 	;bx=L
			mov ax,dx	;ax=H
			mov dx,0 	;dx=0作为高16位
			div cx
			
			push ax 	;int(H/N)*65536入栈
			mov ax,bx	;ax=L
						;dx 余数作为高16位
			div cx
			
			mov cx,dx  ;余数
			pop dx   ;结果的高16位
			
			pop bx
			ret
codesg ends
end start

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

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

相关文章

基于Java的酒店管理系统设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

文件-计算平均分

任务描述 本关任务:假设有若干学生,每个学生有3门功课,从键盘上输入学生有关信息(学号、姓名、成绩),并计算其平均成绩,将原有数据和平均分保存在磁盘文件record中。具体要求如下: 学生有关信…

【计算机毕业设计】基于SpringBoot+Vue大学生心理健康管理系统的开发与实现

博主主页:一季春秋博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容:毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

计算机图形学中的几何光学

文章目录 前言一、图形学中的光学二、光照模型1、经验型(简单)2、物理型(复杂) 前言 在学习Shader光照之前了解一下计算机图形学 一、图形学中的光学 镜面反射的效果例子:物体表面高光 慢反射的效果的例子&#xff1a…

Python中获取主机名和IP地址的方法

在Python中,可以通过socket模块中gethostname()、getfqdn()和gethostbyname()方法获取本地和远程主机名和IP地址。 1 获取本地和远程主机名 1.1 获取本地主机名 可以通过gethostname()方法获取本地主机名,也就是本机的主机名,代码如下所示…

智能电力运维系统:数字化转型在电力行业的关键应用

随着信息技术、人工智能等的飞速发展,数字化改造已成为各行各业的重要发展趋势。在电力行业中,智能电力运维系统是数字化转型的关键应用之一。 力安科技智能电力运维系统是一种集自动化、智能化、云计算、物联网等先进技术于一体的电力运维管理解决方…

JS-ECharts-前端图表 多层级联合饼图、柱状堆叠图、柱/线组合图、趋势图、自定义中线、平均线、气泡备注点

本篇博客背景为JavaScript。在ECharts在线编码快速上手,绘制相关前端可视化图表。 ECharts官网:https://echarts.apache.org/zh/index.html 其他的一些推荐: AntV:https://antv.vision/zh chartcube:https://chartcub…

RocketMQ高性能核心原理与源码架构剖析(下)

四、融汇贯通阶段 开始梳理⼀些⽐较完整,⽐较复杂的完整业务线。 8 、消息持久化设计 1 、 RocketMQ 的持久化⽂件结构 消息持久化也就是将内存中的消息写⼊到本地磁盘的过程。⽽磁盘 IO 操作通常是⼀个很耗性能,很慢的操作,所以&#xf…

图像处理与计算机视觉--第三章-颜色与纹理分析-6问

图像处理与计算机视觉--第三章-颜色与纹理分析-6问 1.哪些因素决定物体颜色的感知? 对于物体颜色的感知,主要取决于以下三个因素: 1.照射到物体表面光波长的分布 2.物体表面如何反射照射光 3.传感器或者视觉细胞的敏感性 除了上述的三个因素之外&#xff0c…

nuc980学习笔记7-设置开机自启动

测试条件,nuc980开发板。 一、开机启动脚本 为什么需要开机自启动脚本?我们编写完程序之后,下载到开发板,往往需要程序开机自行启动,为了实现开机自启动,则需要编写相关的脚本。 二、设置开机启动的步骤 开…

2009-2022年上市公司华证 ESG数据

2009-2022年华证 ESG数据(年度) 1、时间:2009-2022年 2、范围:沪深A股上市公司 指标:证券简称、证券代码、华证ESG评级 2009-2022年华证ESG数据(季度) 1、时间:2009/03/31---20…

在React中,什么是组件的状态(state)?如何更新组件的状态?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 创建和初始化状态⭐ 更新状态⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前…

力扣-228.汇总区间

AC Code 自己做出来的&#xff0c;代码写的很烂&#xff0c;但是也浅浅记录一下叭&#xff0c;下面有看答案思路写出来的双指针代码 class Solution { public:vector<string> summaryRanges(vector<int>& nums) {vector<string> ans;int n nums.size();…

Docker部署ElasticSearch数据库+analysis-ik分词器插件

文章目录 一、部署ElasticSearch数据库二、添加分词器插件(analysis-ik)三、测试ElasticSearch数据库analysis-ik分词器插件 一、部署ElasticSearch数据库 1、准备工作 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.6 Pwd"/data/software/elasticse…

csa从初阶到大牛(练习题2-查询)

新建2个文件d1.txt d2.txt ,使用vim打开d1.txt 输入“Hello World”字符串,将b1.txt 硬链接到b2.txt &#xff0c;查看2个文件的硬连接数 # 新建文件d1.txt和d2.txt touch d1.txt d2.txt# 使用vim编辑d1.txt并输入文本"Hello World" vim d1.txt# 创建硬链接b2.…

红黑树Java实现

文章目录 红黑树1. 概念性质2. 红黑树节点定义3. 红黑树的插入情况1情况2情况3其它细节问题插入代码实现 4. 红黑树的验证5.性能分析 红黑树 1. 概念性质 红黑树也是一种二插搜索树&#xff0c;每一个节点上比普通二插搜索树都增加了一个存储位置表示节点的颜色&#xff0c;可…

【lesson10】进程状态

文章目录 认识进程状态新建运行阻塞挂起 Linux具体的进程状态RSDtTXZ是什么为什么 认识进程状态 上面就是各种进程状态&#xff0c;上面都是理论进程状态理论进程状态放在哪个操作系统中都是正确的&#xff0c;但是具体的操作系统实现可能又会有所不同。 下面我们来理解进程状态…

SurroundOcc:用于自动驾驶的多摄像头3D占用网格预测

文章&#xff1a;SurroundOcc: Multi-Camera 3D Occupancy Prediction for Autonomous Driving 作者&#xff1a;Yi Wei, Linqing Zhao, Wenzhao Zheng, Zheng Zhu , Jie Zhou, Jiwen Lu 编辑&#xff1a;点云PCL 代码&#xff1a;https://github.com/weiyithu/SurroundOcc.git…

【AI视野·今日NLP 自然语言处理论文速览 第三十七期】Wed, 20 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 20 Sep 2023 Totally 64 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers SlimPajama-DC: Understanding Data Combinations for LLM Training Authors Zhiqiang Shen, Tianhua Tao, Li…

js惰性函数

看下面这份ts代码 实现的效果也很简单,就是将一份文本,复制到剪切板上,未了兼容更多的浏览器(没错说的就是你>ie !),做了一个兼容性判断, 当浏览器支持navigator.clipboard这个api时,就直接调用这个api将文本复制到剪切板中, 如果不支持这个api的话,就执行else里面的代码,这…