资源描述:
《中南大学汇编课程设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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进制数。子函数ou
3、tput_ctl的功能是换行,当内循环变量bh的值大于外循环值bl时调用这个函数,使得输出的结果有序,输出的结果更容易体现嵌套循环。三、实验步骤(一)、创建文本文件,编写源代码,把文件保存在有masm.exelink.exe等汇编软件的文件夹下,文件的后缀名改为.asm,比如九九乘法表输出.asm。(二、开启电脑,在“开始”—“运行”输入“cmd”命令进入DOS的字符操作界面,编译链接程序代码,查看源程序是否有错误,有错误则加以修改。(三)、程序编译链接没有错误的情况下执行目标程序,查看结果的输出情况,并用debug命令查看内存的变化。(四
4、)、按要求撰写设计报告。三、程序运行结果截图五、程序源代码datasegmentadb1bdb?dataendscodesegmentassumecs:code,ds:datastart:movax,data;数据段送给axmovds,ax;ax给ds段lop1:moval,a;a给almovcl,al;把al给cl,设置循环次数movb,1;把1给blop:movah,2;2号功能调用,显示dl中的值orb,30h;b或30H给b,把字符转换为对应的ASCII码movdl,b;把b给dl,显示乘数int21hmovdl,'*';显示乘号int2
5、1hora,30h;a或30H给amovdl,a;把被乘数给dl,显示被乘数movah,2int21hmovdl,'=';显示“=”号int21hsuba,30h;a减去30hsubb,30h;b减去30hmoval,a;把a的值给almovbl,b;把b的值给blmulbl;al乘以bl结果给axmovbl,10;把10给bldivbl;ax除以bl,商给al,余数给ahmovbh,al;把al给bhmovbl,ah;把ah给blorbx,3030h;bx或3030h,把字符转化为对应的ASCIImovah,2cmpbh,30h;bh和30h比
6、较jelop2;相等时转到lop2movdl,bh;把bh给dl,显示bh的内容int21hlop2:movdl,blint21hmovdl,''int21hincblooplopmovdl,13int21hmovdl,10int21hincacmpa,10jblop1movah,4chint21hcodeendsendstart;bl给dl,显示bl中的内容;显示空格;b自加;循环;输出回车;输出换行;a自加;a与10比较;小于10转到lop1;返回调用程序六、设计过程中遇到的问题及解决方法首先,遇到的问题是计算机的识别问题。计算机内部只唯一认
7、识2进制代码,为了更好的存储信息,计算机用十六进制数存储数据,设计之初,我反复思考自己的算法没有问题,但是总是的不到想要的结果,利用debug命令查看内存的情况也正确,后来在网上百度论坛上发帖找到答案,设计了两个子函数来处理这个问题,一个是dis函数,一个是disp函数之后再编译链接,执行目的程序得到预计的结果。其次,就是子函数的解决问题,编写源代码的的习惯问题,语句不是成对出现,push和pop语句出错,导致运行链接正确,而没有正确的结果。原因是没有按顺序出栈或者不出栈,使得内存没有正确释放或者不释放引起的。在仔细阅读IBM_PC汇编语言这本书
8、的子函数设计一章后,加大了对子函数的认识,并修改解决上面问题。最后,问题设计初,用到的是指定循环次数,利用loop语句来实现循环,这样结