汇编语言程序课程设计_第1页
汇编语言程序课程设计_第2页
汇编语言程序课程设计_第3页
汇编语言程序课程设计_第4页
汇编语言程序课程设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编课程设计与学习总结系别专 业届 别班 级学生姓名学 号指导教师职 称二 O 一 六 年 六 月课程设计任务安排:Power idea公司从1975年成立一直到1995年的基本情况如下表所示,该数据已在程序中定义好(见图1-1):表1-1:公司基本情况年份收入(千美元)雇员(人)人均收入(千美元)1975163?1976227?19773829?1978135613?1979239028?1980800038?1995593700017800?data segmentdb '1975','1976','1977','1978',

2、'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,1

3、6000,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;以上是表示21年公司雇员人数的21个word型数据data ends图1-1:程序中数据定义计算data数据段中每一年的人均收入,并将所有数据按

4、照如图1-2所示的格式在屏幕上显示出来。图1-2:效果图第一部分:程序设计思路以及程序流程图(这部分首先描述设计框架,然后画出流程图)程序主要从以下几个方面来进行设计1、 人均收入的计算人均收入等于收入除以雇员人数。设计中要注意的是要相对应的收入除以相对应的雇员人数。所以在设计中用了直接寻址和间接寻址的方式来控制。si来定位显示缓冲区的数值放置位置和年份字符串的字符,bx定位收入字符串中的字符,di定位雇员字符串中的字符。2、 在屏幕中显示结果向段地址为b800的地址空间写入数据,写入的内容将出现在显示器上。一个字符在显示缓冲区要占两个字节,低位字节存储字符的ASCII码,高位字节存储字符的属

5、性。本设计中将年份、收入、雇员以及计算出的人均收入的数值转化为十进制的字符串,每个字符的ASCII码放入显示缓存区的低位;高位存放颜色属性,本次设计为黑底白字,故设置为00000111B,即07h。本程序共用了几个子程序,子程序之间相互调用,尽可能地将程序优化。:1、 s:主要作用是在指定位置将年份、收入、雇员以及计算出的人均收入的数值放入显示缓冲区中,以指定的颜色进行显示。在过程中调用其他子程序,循环21次,将每个数据都放入缓存区中。2、 changeToStr:主要是将字型数据转换成十进制形式的字符串,以便屏幕中显示的是我们能够读懂的信息。转换方法是用数据除以10,循环多次,每次得到的余数

6、都加上30H,便得到表示十进制的ASCII码串。3、 s1:判断数据的每一位都转化成十进制的ASCII码,只要除到商为0,就能确定每一位都转化了。所以在程序中循环多次,用jnz指令实现相关功能,直至数据各位的值都求出。4、 s2:将得到的十进制ASCII码串一位位地放入缓冲区中,用jnz指令判断,直至数值都放入显示缓冲区后,返回上一级程序。5、 divdw:进行不会溢出的除法运算。在对字型数据的转换过程中,实现对10的不断取余。同时在计算人均收入时,完成收入除以雇员人数的计算。开始将基本数据放入寄存器dx,将es的段地址赋值为0b800h ,即为显示缓冲区将年份放入es中,颜色设置为黑底白字定

7、位到收入字段将收入的值转化为十进制的ASCII码,放入es中,颜色设置为黑底白字定位到年份字段,显示缓冲区换至下一行。定位到雇佣人数字段bx加上84,收入将雇员人数的值转化为十进制的ASCII码,放入es中,颜色设置为黑底白字收入除以雇员人数,得到人均收入将人均收入的值转化为十进制的ASCII码,放入es中,颜色设置为黑底白字N是否循环了21次?Y结束第二部分:程序代码(写出完整程序代码)(格式要求:Arial Narrow,五号)assume cs : codesg, ds : datasg, ss : stacksgdatasg SEGMENT db '1975','

8、;1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995'以

9、上是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;以上是表示21年公司雇员人数的21个word型数据datasg

10、 ENDSstacksg SEGMENT dw 16 dup (0)stacksg ENDScodesg SEGMENTstart: mov ax, datasg mov ds, ax mov ax, 0b800h mov es, ax;es的段地址设置为b800h,作为显示缓冲区 mov ax, stacksg mov ss, ax mov sp, 32mov cx, 21 mov si, 0mov bx, 0 mov di, 0s: mov al, bx;将年份的数据放入es中 mov es : si, al mov byte ptr es : si + 1, 07h;07为黑底白字 mo

11、v al, bx + 1 mov es : si + 2, al mov byte ptr es : si + 3, 07h mov al, bx + 2 mov es : si + 4, al mov byte ptr es : si + 5, 07h mov al, bx + 3 mov es : si + 6, al mov byte ptr es : si + 7, 07h mov ax, bx + 84;定位到收入字段 mov dx, bx + 86 add si, 20 call changeToStr;调用changeToStr,将数据转化为字型数据转换成十进制形式的字符串,并放

12、入es中 mov ax, di + 168;定位到雇员字段 mov dx, 0 add si, 20 call changeToStrmov dx, bx + 86 mov ax, bx + 84 push cx mov cx, di + 168 add si, 20 call divdw;得到人均收入 push ax mov ax, dx call changeToStr pop ax call changeToStr sub si, 60 pop cx add bx, 4 add di, 2 add si, 160 loop schangeToStr:push si push cx mov

13、 bp, sp s0: mov cx, 10 call divdw add cl, '0' mov ch, 07h push cx cmp ax, 0;执行ax-0,不保存结果,只影响标志位;如果ax不为0,jnz条件成立 jnz s0 s1: pop ax mov es : si, ax jnz s1 pop cx pop si retdivdw: push bp push ax mov ax, dx mov dx,0 div cx mov bp, ax pop ax div cx mov cx, dx mov dx, bp pop bp ret mov ax, 4c00h

14、int 21hcodesg ENDSEND start add si, 2 cmp sp, bp;执行sp-bp,如果结果不为0,jnz条件成立 jnz s1 pop cx pop si retdivdw: push bp push ax mov ax, dx mov dx,0 div cx mov bp, ax pop ax div cx mov cx, dx mov dx, bp pop bp ret mov ax, 4c00h int 21hcodesg ENDSEND start汇编程序语言学习总结(这部分要求:根据这学期学习的课程以及大学期间学习的几种编程语言、单片机以及ARM,通过

15、分析比较对汇编语言进行总结,描述清楚该语言的作用,特点,与其他语言的区别以及将来的主要作用范围。内容可以结合文字,图表,不少于两页。)(格式要求:宋体,小四,行间距为20磅。图表的标题为宋体五号)在上学期我们专业开设了单片机课程,在学习单片机的过程中,我们就接触到了汇编语言,但那时候没有系统的学习,只知道像mov、jump、inc这样一些常用的简单指令。而在最后单片机的课程设计中,我们采用的是c语言来编程。那时候认为汇编语言并没有什么大的作用,汇编语言能做的,c语言也都能做,而且更为简单。但真正接触这门课后,才发现汇编语言有它自己独特的作用,而且也不是很容易就可以弄懂的。相比较其他高级语言如C

16、+、java等,电脑等于在迁就人的思维方式。但学汇编,人却必须要去迁就电脑的思维方式。要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。通过这一学期的学习,我对汇编只是有了初步的掌握。现在我来通过比较汇编语言和几种高级语言的区别来对汇编语言作一个小小的总结。在我们学过的高级语言,Java和C+都是面向对象语言,它们都能够实现面向对象思想(封装、继承、多态)。C+是在C语言基础上进行扩展而来的一门面向对象的程序设计语言。相比其他语言,它具有很多优点和特点的,它对面向对象的支持,让我们可以将一个功能模块封装成一个类,对于使用这个功能模块的人,只需调用这个类的方法就可以了

17、,不必关心功能如何实现的,这一点可以在开发大型项目的时候提高开发效率,减少开发周期。同时,可以通过对类进行派生来扩展模块的功能,而不影响原有的功能。C+的异常处理机制可以很好地对代码的异常进行捕捉,保证了在程序运行时出现错误不至于整个崩溃掉,也为我们对于运行时错误的处理提供了一种有效的途径。C+程序的依赖性小,对C+代码进行静态连接,就能保证生成的可执行程序在别的电脑上直接运行。Java语言是一种新的面向对象的程序设计语言,它除了几种基本的数据类型外,大都是类似c+中的对象和方法,程序代码大多体现了类机制,以类的形式组织,由类来定义对象的各种行为。Java语言与C+类似,如果用户了解C+和面向

18、对象的概念,就可以很快编写出Java程序;此外,Java又不同于诸如C+语言提供的各种各样的方法,它只提供了基本的方法,这样就减少了编程的复杂性。Java语言虽然简单,但很高效,它可以用面向对象的方法来描述用户的每一个动作。Java同样支持类继承,这样也减少了程序设计的复杂性。Java程序可以在任何平台上运行,如MS-DOS, Windows,Unix等,因此具有很强的移植性。由于它支持TCPIP协议,使得用户可以通过浏览器访问到Internet上的各种动态对象。并且在网络上用户可以交互式地进行各种动作,而多线程技术的引入使得这种交互式操作更为容易。而汇编语言是面向机器的程序设计语言。在汇编语

19、言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。所以汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。汇编语言

20、编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。汇编语言有这样几个特点:1机器相关性这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。2高速度和高效率汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,且占用内存少,执行速度快,是高效的程序设计语言。3编写和调试的复杂性由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序

21、设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。这样,就不可避免地加重了程序员的负担。与此相同,在程序调试时,一旦程序的运行出了问题,就很难发现。汇编语言总是被称为是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是计算机(或微机)底层设计程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。只是,现在计算机最大的领域为IT软件,也是我们常说的计算机应用软件编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率与性能比其它语言写的程序相对提高,但是代价是需要更长的时间来优化,如果对计算机原理及编程基础不扎实,反而增加其开发难度,实在是得不偿失,对比2010年前后的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花上几倍甚至几十倍的时间,不如使用其它语言来完成,只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下的必然结果。历史上,汇编语言曾经是非常流行的程序设计语言之一。但随着软件规模的增长

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论