中南大学汇编课程设计_第1页
中南大学汇编课程设计_第2页
中南大学汇编课程设计_第3页
中南大学汇编课程设计_第4页
中南大学汇编课程设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、中南大学课程设计报告课题:计算机原理与汇编课程设计题目:输出九九乘法表目录摘 要 九九乘法表输出是应用masm.exe 、link.exe、debug.exe等汇编语言软件进行编译链接及执行目的程序的方法来实现。并且认识和利用DOS系统下的21h函数的02功能号来进行单个字符的输出程序设计的过程中用到循环和子函数的思想。模块化的程序设计思想有利于源代码代码的编写、错误的查找和修改,同时可以分步来调试程序、减少工作量,乘法表的输出没有乘数和被乘数,只有乘积的结果输出。 关键词 汇编语言程序设计 、微机原理 、 九九乘法表 、dos中断系统。 一、 设计要求 本实验要求将九九乘法口诀表输出在屏幕上

2、。二、设计思想 九九乘法表输出程序主要用到一个嵌套循环和两个过程,外层循环用bl保存并记录,外循环每执行一次,bl的值加一。内循环用bh保存并记录,如果bh的值小于bl的值则执行内循环,内循环中每盒bl比较一次,成立则值加一不成立则转到换行,子函数执行,同时也比较外循环是否继续满足条件执行,即比较bl的值是否小于10,小于就执行外循环否则就结束程序。 设计dis子函数,把内存中的16进制数转换成10进制,设计的disp子函数是把十进制转化成ASCLL码并输出乘积,这样得到的显示的结果就是我们看到的10进制数。 子函数output_ctl的功能是换行,当内循环变量bh的值大于外循环值bl时调用这

3、个函数,使得输出的结果有序,输出的结果更容易体现嵌套循环。三、 实验步骤(一)、创建文本文件,编写源代码,把文件保存在有masm.exe link.exe等汇编软件的文件夹下,文件的后缀名改为.asm,比如九九乘法表输出.asm。 (二、开启电脑,在“开始”“运行”输入“cmd”命令进入DOS的字符操作界面,编译链接程序代码,查看源程序是否有错误,有错误则加以修改。 (三)、程序编译链接没有错误的情况下执行目标程序,查看结果的输出情况,并用debug命令查看内存的变化。 (四) 、按要求撰写设计报告。 四、 程序运行结果截图 5、 程序源代码data segmenta db 1b db ?da

4、ta endscode segmentassume cs:code,ds:datastart:mov ax,data ;数据段送给axmov ds,ax ;ax给ds段lop1:mov al,a ;a给almov cl,al ;把al给cl,设置循环次数mov b,1 ;把1给blop:mov ah,2 ;2号功能调用,显示dl中的值or b,30h ;b或30H给b,把字符转换为对应的ASCII码 mov dl,b ;把b给dl,显示乘数int 21hmov dl,* ;显示乘号int 21hor a,30h ;a或30H给amov dl,a ;把被乘数给dl,显示被乘数mov ah,2in

5、t 21hmov dl,= ;显示“=”号int 21hsub a,30h ;a减去30hsub b,30h ;b减去30hmov al,a ;把a的值给almov bl,b ;把b的值给blmul bl ;al乘以bl结果给axmov bl,10 ;把10给bldiv bl ;ax除以bl,商给al,余数给ah mov bh,al ;把al给bhmov bl,ah ;把ah给blor bx,3030h ;bx或3030h,把字符转化为对应的ASCIImov ah,2cmp bh,30h ;bh和30h比较je lop2 ;相等时转到lop2mov dl,bh ;把bh给dl,显示bh的内容i

6、nt 21hlop2:mov dl,blint 21hmov dl, int 21hinc bloop lopmov dl,13int 21hmov dl,10int 21hinc acmp a,10jb lop1mov ah,4chint 21hcode endsend start ;bl给dl,显示bl中的内容 ;显示空格 ;b自加 ;循环 ;输出回车 ;输出换行 ;a自加 ;a与10比较 ;小于10转到lop1 ;返回调用程序六、设计过程中遇到的问题及解决方法 首先,遇到的问题是计算机的识别问题。计算机内部只唯一认识2进制代码,为了更好的存储信息,计算机用十六进制数存储数据,设计之初,我

7、反复思考自己的算法没有问题,但是总是的不到想要的结果,利用debug命令查看内存的情况也正确,后来在网上百度论坛上发帖找到答案,设计了两个子函数来处理这个问题,一个是dis函数,一个是disp函数之后再编译链接,执行目的程序得到预计的结果。 其次,就是子函数的解决问题,编写源代码的的习惯问题,语句不是成对出现,push和pop语句出错,导致运行链接正确,而没有正确的结果。原因是没有按顺序出栈或者不出栈,使得内存没有正确释放或者不释放引起的。在仔细阅读IBM_PC汇编语言这本书的子函数设计一章后,加大了对子函数的认识,并修改解决上面问题。 最后,问题设计初,用到的是指定循环次数,利用loop语句

8、来实现循环,这样结果就想一个长方形的输出,每个数相互乘了两次,同时输出两次结果,所以得到的结果不像我们使用的九九乘法表。后来使用判断跳转指令来实现循环,首先判断内循环值和外循环值的大小,决定是否继续乘法,再通过外循环值和10比较,决定继续执行程序还是退出程序。 7、 设计心得 通过九九乘法表输出程序的编写,首先我更加的认识到计算机内部的运行,对计算机的认识加深,计算机的内存使用情况,它是怎样运行的有更大的理解。 其次通过自己编写源代码,了解到汇编语言和高级编程的语言的区别,汇编语言更难理解和翻译但是在计算机内部却容易被计算机识别,汇编的关键字很多,存储器很有限,合理的利用和释放存储器至关重要,每利用一个存储器在后面用到时必须查看是否已经释放这个存储器,否则就会出现编译链接没错误,但是运行结果有误的情况。 最后就是对debug命令操作加深,debug命令是用来辅助汇编语言软件使用,也可以单独编程。可以帮助我们查看内存的具体的使用情况,-u指令来查看部分内存,-g用来执行程序,单步运行可以使用-t命令,还可以跳转到指定位置执行,在有设计子函数的程序中,利用debug命令是非常有必要的。 八 、结束语 编程对算法的分析很重要,无论是用什么语言来编程,算法是不会变化的,设计一个良好的算

温馨提示

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

评论

0/150

提交评论