版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇汇编编课课程程设设计计与与学学习习总总结结系别专业届别班级学生姓名学号指导教师职称二 O 一 六 年 六 月课程设计任务安排:课程设计任务安排:PowerPower ideaidea 公司从公司从 19751975 年成立一直到年成立一直到 19951995 年的基本年的基本情况如下表所示,该数据已在程序中定义好(见图情况如下表所示,该数据已在程序中定义好(见图 1-11-1):):年份年份收入(千美元)收入(千美元)雇员(人)雇员(人)人均收入(千美元)人均收入(千美元)1975163?1976227?19773829?1978135613?1979239028?1980800038?19
2、95593700017800?data segmentdb 1975,1976,1977,1978,1979,1980,1981,1982,1983db 1984,1985,1986,1987,1988,1989,1990,1991,1992db 1993,1994,1995;以上是 21 年的 21 个字符串dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000;以上是表示 2
3、1 年公司总收入的 21 个 dowrd 型数据dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800;以上是表示 21 年公司雇员人数的 21 个 word 型数据data ends表 1-1:公司基本情况图 1-1:程序中数据定义计算计算 datadata 数据段中每一年的人均收入,并将所有数据数据段中每一年的人均收入,并将所有数据按照如图按照如图 1-21-2 所示的格式在屏幕上显示出来。所示的格式在屏幕上显示出来。图 1-2:效果图第一部分:程序设计思路
4、以及程序流程图(这部分首先描述设计框架,第一部分:程序设计思路以及程序流程图(这部分首先描述设计框架,然后画出流程图)然后画出流程图)程序主要从以下几个方面来进行设计程序主要从以下几个方面来进行设计1 1、人均收入的计算人均收入的计算人均收入等于收入除以雇员人数。设计中要注意的是要相对应的人均收入等于收入除以雇员人数。设计中要注意的是要相对应的收入除以相对应的雇员人数。收入除以相对应的雇员人数。所以在设计中用了直接寻址和间接寻址的方式来控制。所以在设计中用了直接寻址和间接寻址的方式来控制。sisi 来定位来定位显示缓冲区的数值放置位置和年份字符串的字符,显示缓冲区的数值放置位置和年份字符串的字
5、符,bxbx 定位收入字符串中定位收入字符串中的字符,的字符,didi 定位雇员字符串中的字符。定位雇员字符串中的字符。2 2、在屏幕中显示结果在屏幕中显示结果向段地址为向段地址为 b800b800 的地址空间写入数据,写入的内容将出现在显示的地址空间写入数据,写入的内容将出现在显示器上。一个字符在显示缓冲区要占两个字节,低位字节存储字符器上。一个字符在显示缓冲区要占两个字节,低位字节存储字符的的ASCIIASCII 码,高位字节存储字符的属性。码,高位字节存储字符的属性。本设计中将年份、收入、雇员以及计算出的人均收入的数值转化本设计中将年份、收入、雇员以及计算出的人均收入的数值转化为十进制的
6、字符串,每个字符的为十进制的字符串,每个字符的 ASCIIASCII 码放入显示缓存区的低位;高位码放入显示缓存区的低位;高位存放颜色属性,本次设计为黑底白字,故设置为存放颜色属性,本次设计为黑底白字,故设置为 00000111B00000111B,即,即 07h07h。本程序共用了几个子程序,子程序之间相互调用,尽可能地将程本程序共用了几个子程序,子程序之间相互调用,尽可能地将程序优化。:序优化。:1 1、s s:主要作用是在指定位置将年份、收入、雇员以及计算出的人均:主要作用是在指定位置将年份、收入、雇员以及计算出的人均收入的数值放入显示缓冲区中,以指定的颜色进行显示。在过程收入的数值放入
7、显示缓冲区中,以指定的颜色进行显示。在过程中调用其他子程序,循环中调用其他子程序,循环 2121 次,将每个数据都放入缓存区中。次,将每个数据都放入缓存区中。2 2、changeToStrchangeToStr:主要是将字型数据转换成十进制形式的字符串,以:主要是将字型数据转换成十进制形式的字符串,以便屏幕中显示的是我们能够读懂的信息。转换方法是用数据除便屏幕中显示的是我们能够读懂的信息。转换方法是用数据除以以1010,循环多次,每次得到的余数都加上,循环多次,每次得到的余数都加上 30H30H,便得到表示十进制,便得到表示十进制的的 ASCIIASCII 码串。码串。3 3、s1s1:判断数
8、据的每一位都转化成十进制的:判断数据的每一位都转化成十进制的 ASCIIASCII 码,只要除到商码,只要除到商为为 0 0,就能确定每一位都转化了。所以在程序中循环多次,用,就能确定每一位都转化了。所以在程序中循环多次,用 jnjnz z指令实现相关功能,直至数据各位的值都求出。指令实现相关功能,直至数据各位的值都求出。4 4、s2:s2:将得到的十进制将得到的十进制 ASCIIASCII 码串一位位地放入缓冲区中,用码串一位位地放入缓冲区中,用 jnzjnz 指指令判断,直至数值都放入显示缓冲区后,返回上一级程序。令判断,直至数值都放入显示缓冲区后,返回上一级程序。5 5、divdwdiv
9、dw:进行不会溢出的除法运算。在对字型数据的转换过程中,:进行不会溢出的除法运算。在对字型数据的转换过程中,实现对实现对 1010 的不断取余。同时在计算人均收入时,完成收入除以雇的不断取余。同时在计算人均收入时,完成收入除以雇员人数的计算。员人数的计算。bx 加上 84,收入开始将基本数据放入寄存器 dx,将 es 的段地址赋值为0b800h ,即为显示缓冲区将年份放入 es 中,颜色设置为黑底白字定位到收入字段将收入的值转化为十进制的 ASCII码,放入 es 中,颜色设置为黑底白字定位到雇佣人数字段将雇员人数的值转化为十进制的 ASCII码,放入 es 中,颜色设置为黑底白字收入除以雇员
10、人数,得到人均收入将人均收入的值转化为十进制的 ASCII码,放入 es 中,颜色设置为黑底白字是否循环了 21 次?结束定位到年份字段,显示缓冲区换至下一行。NY第二部分:程序代码(写出完整程序代码)第二部分:程序代码(写出完整程序代码)(格式要求:Arial Narrow,五号)assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENTdb 1975,1976,1977,1978,1979,1980,1981,1982,1983db 1984,1985,1986,1987,1988,1989,1990,1991,1992db 19
11、93,1994,1995;以上是 21 年的 21 个字符串dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000;以上是表示 21 年公司总收入的 21 个 dowrd 型数据dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226dw 11542,14430,15257,17800;以上是表示 2
12、1 年公司雇员人数的 21 个 word 型数据datasg ENDSstacksg SEGMENTdw 16 dup (0)stacksg ENDScodesg SEGMENTstart: mov ax, datasgmov ds, axmov ax, 0b800hmov es, ax;es的段地址设置为 b800h,作为显示缓冲区mov ax, stacksgmov ss, axmov sp, 32mov cx, 21mov si, 0mov bx, 0mov di, 0s: mov al, bx;将年份的数据放入 es中mov es : si, almov byte ptr es : s
13、i + 1, 07h;07为黑底白字mov al, bx + 1mov es : si + 2, almov byte ptr es : si + 3, 07hmov al, bx + 2mov es : si + 4, almov byte ptr es : si + 5, 07hmov al, bx + 3mov es : si + 6, almov byte ptr es : si + 7, 07hmov ax, bx + 84;定位到收入字段mov dx, bx + 86add si, 20call changeToStr;调用 changeToStr,将数据转化为字型数据转换成十进制
14、形式的字符串,并放入 es中mov ax, di + 168;定位到雇员字段mov dx, 0add si, 20call changeToStrmov dx, bx + 86mov ax, bx + 84push cxmov cx, di + 168add si, 20call divdw;得到人均收入push axmov ax, dxcall changeToStrpop axcall changeToStrsub si, 60pop cxadd bx, 4add di, 2add si, 160loop schangeToStr:push sipush cxmov bp, sps0:mo
15、v cx, 10call divdwadd cl, 0mov ch, 07hpush cxcmp ax, 0;执行 ax-0,不保存结果,只影响标志位;如果 ax不为 0,jnz条件成立jnz s0s1:pop axmov es : si, axadd si, 2cmp sp, bp;执行 sp-bp,如果结果不为 0,jnz条件成立jnz s1pop cxpop siretdivdw:push bppush axmov ax, dxmov dx,0div cxmov bp, axpop axdiv cxmov cx, dxmov dx, bppop bpretmov ax, 4c00hint
16、 21hcodesg ENDSEND start汇编程序语言学习总结汇编程序语言学习总结(这部分要求:根据这学期学习的课程以及大学期间学习的(这部分要求:根据这学期学习的课程以及大学期间学习的几种编程语言、单片机以及几种编程语言、单片机以及 ARMARM,通过分析比较对汇编语言进,通过分析比较对汇编语言进行总结,描述清楚该语言的作用,特点,与其他语言的区别行总结,描述清楚该语言的作用,特点,与其他语言的区别以及将来的主要作用范围。内容可以结合文字,图表以及将来的主要作用范围。内容可以结合文字,图表, ,不少于不少于两页。)两页。)(格式要求:宋体,小四,行间距为 20 磅。图表的标题为宋体五号
17、)在上学期我们专业开设了单片机课程,在学习单片机的过程中,我们就接触到了汇编语言,但那时候没有系统的学习,只知道像 mov、jump、inc 这样一些常用的简单指令。而在最后单片机的课程设计中,我们采用的是 c 语言来编程。那时候认为汇编语言并没有什么大的作用,汇编语言能做的,c 语言也都能做,而且更为简单。但真正接触这门课后,才发现汇编语言有它自己独特的作用,而且也不是很容易就可以弄懂的。相比较其他高级语言如 C+、java 等,电脑等于在迁就人的思维方式。但学汇编,人却必须要去迁就电脑的思维方式。要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。通过这一学期的学
18、习,我对汇编只是有了初步的掌握。现在我来通过比较汇编语言和几种高级语言的区别来对汇编语言作一个小小的总结。在我们学过的高级语言,Java 和 C+都是面向对象语言,它们都能够实现面向对象思想(封装、继承、多态)。C+是在 C 语言基础上进行扩展而来的一门面向对象的程序设计语言。相比其他语言,它具有很多优点和特点的,它对面向对象的支持,让我们可以将一个功能模块封装成一个类,对于使用这个功能模块的人,只需调用这个类的方法就可以了,不必关心功能如何实现的,这一点可以在开发大型项目的时候提高开发效率,减少开发周期。同时,可以通过对类进行派生来扩展模块的功能,而不影响原有的功能。C+的异常处理机制可以很
19、好地对代码的异常进行捕捉,保证了在程序运行时出现错误不至于整个崩溃掉,也为我们对于运行时错误的处理提供了一种有效的途径。C+程序的依赖性小,对 C+代码进行静态连接,就能保证生成的可执行程序在别的电脑上直接运行。Java 语言是一种新的面向对象的程序设计语言,它除了几种基本的数据类型外,大都是类似 c+中的对象和方法,程序代码大多体现了类机制,以类的形式组织,由类来定义对象的各种行为。Java 语言与 C+类似,如果用户了解 C+和面向对象的概念,就可以很快编写出 Java程序;此外,Java 又不同于诸如 C+语言提供的各种各样的方法,它只提供了基本的方法,这样就减少了编程的复杂性。Java
20、 语言虽然简单,但很高效,它可以用面向对象的方法来描述用户的每一个动作。Java 同样支持类继承,这样也减少了程序设计的复杂性。Java 程序可以在任何平台上运行,如 MS-DOS, Windows,Unix 等,因此具有很强的移植性。由于它支持 TCPIP 协议,使得用户可以通过浏览器访问到Internet 上的各种动态对象。并且在网络上用户可以交互式地进行各种动作,而多线程技术的引入使得这种交互式操作更为容易。而汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。所以汇编语言亦称为符号
21、语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。汇编语言有这样几个特点:1机器相关性这是一种面向机器的低
22、级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。2高速度和高效率汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O 端口等,且占用内存少,执行速度快,是高效的程序设计语言。3编写和调试的复杂性由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。这样,就不可避免地加重了程序员的负担。与此相同,在程序调试
23、时,一旦程序的运行出了问题,就很难发现。汇编语言总是被称为是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是计算机(或微机)底层设计程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。只是,现在计算机最大的领域为 IT 软件,也是我们常说的计算机应用软件编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率与性能比其它语言写的程序相对提高,但是代价是需要更长的时间来优化,如果对计算机原理及编程基础不扎实,反而增加其开发难度,实在是得不偿失,对比 2010 年前后的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花上几倍甚至几十倍的时间,不如使用其它语言来完成,只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025东营黄河三角洲军马场实业投资集团有限公司招聘16人笔试历年典型考点题库附带答案详解
- 2025年美发专业技能提升培训方案试卷考试及答案
- 2026碳纤维复合材料汽车轻量化应用经济性测算及工艺突破点分析报告
- 2026生物医药CXO行业发展现状与投资机会评估分析报告
- 2026特种化学品行业技术门槛与市场集中度分析研究报告
- 2026汽车碳纤维材料发展分析及成本降低与量产可行性研究报告
- 探秘MXenes基锂电负极:构筑策略与储能机制解析
- 探秘HVJ-E诱导PC3细胞凋亡的分子机制与抗癌新曙光
- 预检分诊制度试题及答案
- 2025-2026学年第二学期高中政治教师高考填空题专项训练方案
- 采购基础知识与技巧(第三版)课件:供应商管理
- DB34T 5128-2025健康体检机构 体检服务质量控制规范
- 油气储运安全技术 第3章现代安全管理理论与技术第4章系统安全分析与评价技术课件
- 泸州市出租汽车驾驶员从业资格考试参考题库
- 音乐为什么会让人浮想联翩 课件 2024-2025学年人教版(简谱)(2024)初中音乐七年级下册
- 蓬莱市福峰物资有限公司西南王金矿 矿山地质环境保护与土地复垦方案
- 急性腹痛的诊断与处理:临床思维训练讲座稿新课件
- 修造船舶英语手册
- 山体塌方施工方案
- 2025初中数学新人教版七7年级下册全册教案
- 数据中心场地基础设施运维管理标准-2015首次发布
评论
0/150
提交评论