




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学弟学妹们加油课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题目:bcd码相乘初始条件:计算机和汇编开发环境要求完成的主要任务:1、技术要求(1)提出总体方案的设计思想和原理,绘制程序流程图和描述程序的功能,要求从键盘输入两个2位十进制数,完成乘法运算后输出计算结果。(2)界面友好,应尽量给用户一些提示语句,如:“请输入第一个数:”。(3)编程代码,完成整体设计。(4)调试程序,达到所要求的功能。2、主要任务(1)查阅资料,根据设计任务进行功能分析;(2)根据要求设计程序流程图;(3)熟悉编程环境,查阅资料完成程序代码编写;(4)调试并完善程序,综合测试完成的系统; (5)撰写
2、设计说明书,进行答辩。3、撰写课程设计说明书封面:设计题目,指导老师,班级,设计者姓名,设计者学号,日期任务书目录正文:1、基本功能描述;2、设计思路;3、软件设计;4、结论与心得体会;5、参考文献;6、思考题附录:1、调试报告;2、测试结果;3、关键源代码成绩评定表时间安排: 第1周:明确任务,查阅资料,编写代码;第2周:按要求的功能不断调试并完善程序,测试系统。按照要求撰写课程设计说明书。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日 目录1 基本功能描述12 程序设计思路12.1 方案一12.1.1 方案一基本原理12.1.2方案一程序流程图22.2 方案二32.2.1
3、 方案二的基本原理32.2.2 方案一程序流程图32.3 方案比较42.4 友好界面42.5 dos的功能调用43 软件设计63.1 方案一软件设计63.2 方案二软件设计74 结论与心得体会84.1 结论84.2 心得体会86 程序改进方向97 参考文献9学弟学妹们加油bcd码相乘121 基本功能描述计算机内部没有组合bcd码乘法指令, 功能描述 编写两个单字节组合bcd数的乘法程序,在屏幕上显示两个乘数及计算结果。在友好界面的提示下,输入两个两位的十进制数,由程序完成乘法之后再将结果转化为十进制的进行输出。对于输入的两个乘数不符合要求的将提示错误信息并要求重新输入,结果将以四位十进制数显示
4、出来。2 程序设计思路2.1 方案一2.1.1 方案一基本原理从键盘输入的两位十进制的数字,在计算机中中以ascii值进行存储1,因此要将其转化为相应的数值,从ascii的编码规则可以知道,数字19的ascii码值为十进制的数值加上30h。利用存储的数值的二进制和十进制之间的差别,给十进制的各个位赋予权重。在这个分析的基础上面,只要将每一位十进制数的ascii码值减去30h2就得到了十进制真值。利用十进制数的规则,每一位再乘上该位的权重并且相加就得到了该十进制的结果,并且将结果保存到al中去。两位十进制的数字相乘,得到的结果范围值在10010000之间,所以设计了以下算法:得到了两位十进制数的
5、值之后,再直接相乘,得到了结果的十六进制表示形式3。要将结果转化为十进制并进行输出。将十进制转化为十六进制则考虑到mod的取余运算,将结果的十六进制数字分四步4进行: :结果对1000(3e8h)进行除法运算,商作为十进制的千位输出,余数作为结果。 :结果对100(96h)进行除法运算,商作为十进制的百位输出,余数作为结果。 :结果对10(0ah)进行除法运算,商作为十进制的百位输出,余数作为结果 :过作为十进制的个位输出。2.1.2方案一程序流程图输入数据判断要求流程图程序设计总流程图结果转化为十六进制流程图图1 方案一程序设计流程图2.2 方案二2.2.1 方案二的基本原理a、b两数相乘(
6、设a、b都为两位数),将b的低位和a的低位相乘得到的数的低位存到x中,这个数的高位存到x+1中,再用b的低位和a的高位相乘,得到一个数5,这个数的低位和x+1中的数相加,它的高位存在x+2中。然后,再用b的高位和a的地位相乘结果低位和刚才的高位相加存x+26中,高位存x+3。最后判断结果然后转化输出.2.2.2 方案一程序流程图图2 方案二程序设计流程图2.3 方案比较方案一充分的利用了bcd码和各种进制码之间的关系,从数学上利用了转换过程,从而从根本上了解了计算机内部的存储情况和转化结构,方案一得可拓展性能好7,对于程序的改进有着明显的优势,只需要考虑到不同位数的数字之间的各位的权重之间的差
7、别,即可拓展到多位的乘法。方案二则避开了进制间的转化,巧妙地利用了乘法的数学意义,即将乘法转化为加法,这样可以节省系统资源,对于大型的程序有着很好的启发作用,而且程序简单,算法容易理解。在最后的十六进制转化为十进制输出两个程序的做法是一样的,都设置了界面提示话语。都体现了有好的交互界面。2.4 友好界面在程序的开始出设置了两条提示话语,提示用户输入数据input the first number: 回车换行input the second number: 回车换行在用户输入的数据不符合要求的时候,提示用户重新输入:the number is not between 1099在输出十进制结果的时
8、候设置了the result is:的显示信息对于输出,给出了结果的位数,显示了结果的所在范围。2.5 dos的功能调用在dos软中断指令中最常用的是系统功能调用(int 21h),主要完成文件管理,输入/输出设备控制,系统参数操作等等。它本身包含80多个子程序,每个字程序对应一个功能号,其编号为062h。此次课程设计用到的几个常用dos系统功能调用。1) 带显示的键盘输入(01h号功能)。此功能程序将等待键盘就输入,直到按下一个键(输入一个字符),把字符的asc码送入al,并在屏幕上显示该字符。如果按下的键是ctrl-c组合键,则停止程序运行。若按下tab制表键,屏幕上光标自动扩展到紧接着的
9、8个字符位置后面。本调用不需要入口参数,出口参数在al中。2) 在屏幕显示一个字符(02h号功能)。该功能要求的入口参数为:将欲显示字符的asc码存入dl,功能号存入ah。再执行int 21h时,会把dl寄存器中的asc码字符送到屏幕显示。02h号功能可显示任意字符,如果dl中存放退格键编号(08h),在屏幕上便向左移一个字符位置,并使该位置成为空格。09h号功能不能显示符号,所以02h号功能可作为09h号功能的补充。3) 字符串显示(09h号功能)。09h号功能子程序能在屏幕上显示多于一个的字符串。要现实的字符串必须事先存放在内存数据区中,且字符串以作为结束标志,除此之外,还需要把存放待显示
10、字符串的内存首地址分别存入ds和dx中。也可以将非显示字符(如:回车,换行)的asc码(如:0ah,0dh)插入字符串中。4) 返回操作系统(4ch号功能)。这个功能子程序没有入口参数,执行结果是结束当前正在执行的程序,并返回操作系统。屏幕显示操作系统提示符。表1 dos的功能调用代码功能描述mov ah , 01hint 21h 01h号功能,输入数据后使得al=键入的asc码mov dl,要显示字符的asc码mov ah,2int 21h02h号功能,对于dl中存在的数据,直接进行输出,输出一个字符。stringin db please input a string,db 0ah,0dh,
11、mov ds,seg stringinmov ah,9int 21h09h号功能,从键盘输入一个字符串,并且存放在偏移量的首地址为ds的内存单元中,存放的形势为一个一个字符的ascii值。mov ah,4chint 21h4ch号功能,执行结果是结束当前正在执行的程序,并返回操作系统。3 软件设计3.1 方案一软件设计表2 程序1的部分关键代码从键盘输入一个数字,并且判断数输入是否符合要求lea dx,data1_h ;接收第一个输入 mov ah,0ah int 21h cmp data1_h+4,0dh je next1 lea dx,mess4 ;输出回车换行 mov ah,09h in
12、t 21h lea dx,mess5 mov ah,09h int 21h jmp input1 next1: mov bl,data1_h+2 mov dl,data1_h+3 call exchange mov data1_d,dl lea dx,mess4 ;输出回车换行 mov ah,09h int 21h将输入的两位数字字符转化成十进制的数,并以二进制存放exchange proc near sub bl,30h ;将输入的十位字符转化成数字 mov al,bl imul right3 ;将所得十位数字乘以权重10ax sub dx,30h ;将输入的个位字符转化成数字 add dl
13、,al ;转化后存放在dl中 ret exchange endp将十六进制转化成十进制并输出子程序binidec proc near mov ax,result cwd idiv right1 ;除以1000,其中商为千位 mov mod1,dx call print mov ax,mod1 idiv right2 ;除以100,商为百位 mov mod2,ah call print mov al,mod2 ;除以10,商为十位 idiv right3 mov mod2,ah call print mov al,mod2 call print ret binidec endp3.2 方案二软件
14、设计表3程序2的部分关键代码输入一个两位数且转化为bcd码的值:iinput proc near mov ch,2 mov cl,4 xor bx,bx getc: mov ah,01h int 21h cmp al,0 jb getc cmp al,9 ja getc and al,0fh or bl,al rol bl,cl dec ch jnz getc ror bl,cl ret iinput endp利用乘法的性质将乘法转化为加法并得到结果mmul proc near mov bl,data1 mov cl,data2 mov dx,0 mov al,bl again: or al,
15、al jz nnext mov al,dl add al,cl daa mov dl,al mov al,dh adc al,0 daa mov dh,al mov al,bl dec al das mov bl,al jmp again nnext: ret mmul endp4 结论与心得体会4.1 结论两种方案都可以得到程序要求的结果,并且两种程序都设置了和用户的友好交互界面。其中方案一则更加的侧重于内部的代码的运行机制,而方案二则体现了汇编相对于机器代码的一定优势,利用了程序的函数以增加了程序的可读性和简介度。4.2 心得体会认真研读课程设计的任务书之后,明确了该课程设计的主要任务以及
16、最终所要实现的功能后,在查阅相关资料,学习汇编语言,熟悉所使用的汇编过程中,感觉是最新鲜的,终于不是纸上谈兵。熟悉的过程,将汇编软件自带的简单例子看完后,还实现了一些书上的例题。通过多次的汇编程序操练,使得自己掌握了汇编程序的相关函数和程序结构以及语法格式,这些再后来的自己的编写的汇编程序的过程中体现出了很多的优势,遇到的问题很快就能解决。查阅资料和网上搜索答案都是很好的解决办法。本课程设计主要目的是要学习bcd码的乘法运算,并学习输入输出的使用。在复习与设计相关的微处理器原理方面的内容,特别是对dos系统的调用的学习过程中,觉得这是汇编很关键的地方,大大减轻用户的编程负担,使用这些系统功能子
17、程序编写的程序简单,清晰,可读性好,而且代码紧凑,调试方便。利用dos系统功能调用实现显示提示语句,使得界面友好,提高人机交互。这些功能调用在上课时并没有详细讲解,主要因为这部分内容要通过自己上机实践才能知道好处。在设计总体软件的流程图的过程中,两个方案设计思路都比较清晰,流程图制作起来也很快捷方便。所以在设计方案时就应该往实现流程简洁清晰上面靠,发现实现流程越来越复杂时应该理智放弃,重新思考,找出错误。好的流程图就是高校的灰白能代码的关键,完成流程图的设计也是设计汇编程序的必要要求。在编写软件源代码的过程中,刚开始就是考虑到用汇编的相关优势,直接利用乘法的特点即可得到想要的程序,后来想了觉得
18、可以进行内部的代码的转换,就直接考虑了更底层的设计,结果也可以做出来,说明更加的让我了解了计算机的内部运行机制,使得我对计算机的了解又上了一个台阶。收获颇多。6 程序改进方向改程序的设计只是按照要求设计了两位数的乘法运算,对于多位的乘法运算又可以拓展的地方,加上一个判断的子程序,判断输入的为几位数,然后调用相同的转换子函数再乘上相应位的权重就可以得到最终的十进制的真值,利用同样的方法就可以进行多位的拓展,进行多位数之间的运算。改程序还可以增加其他的运算功能,可以做成一个简单的计算器。7 参考文献1 余春暄.80x86/pentium微机原理及接口技术.机械工业出版社,2008.92 戴梅萼,微型计算机技术及应用,北京,清华大学出版社,20053 顾滨,8086微型计算机组成、原理及接口,北京,机械工业出版社,2001 4 吕淑萍等,微型计算机原理及应用,哈尔滨,哈尔滨工程大学出版社,2004年
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全员A练习题
- 眼科三基习题库(附答案)
- 数字化医疗健康数据共享协议
- 贵州国企招聘2025纳雍县鸽子花农业有限公司招聘10人笔试参考题库附带答案详解
- 2025河南中原特钢技术(管理)人才招聘33名笔试参考题库附带答案详解
- 2025年随州国投集团公开招聘42名工作人员笔试参考题库附带答案详解
- 2025年中国检验认证集团河南公司招聘30人笔试参考题库附带答案详解
- 2025内蒙古中材科技(锡林郭勒)风电叶片有限公司招聘32人笔试参考题库附带答案详解
- 2025中储粮(海南)有限公司招聘19人笔试参考题库附带答案详解
- 初中数学跨学科教学的创新实践与路径探索
- (苏教版)六年级下册《扇形统计图》测试题
- 公路建设项目变更程序及管理办法
- 《卫生事业管理学》练习考试题库(100题)
- 新版FMEA(AIAG-VDA第一版)PFMEA过程FMEA课件PPT
- 青岛版小学科学实验目录
- 运维服务质量保障措施9948
- 煤矿井下低压电网保护装置整定(原)-课件
- MySQL数据库PPT完整全套教学课件
- 承包商资格预审表
- 电渣炉原理教案
- 激光切割机日常点检表
评论
0/150
提交评论