武汉理工微机原理数字累加求和课设报告_第1页
武汉理工微机原理数字累加求和课设报告_第2页
武汉理工微机原理数字累加求和课设报告_第3页
武汉理工微机原理数字累加求和课设报告_第4页
武汉理工微机原理数字累加求和课设报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学微机原理课程设计说明书目录摘要1 实验任务1.1 实验题目1.2 要求:2题目分析及方案选择3方案流程图3.1 方案分析3.2 流程图4.程序设计及分析4.1 输入程序4.2 求数字累加之和程序4.3 输出程序5.运行结果及分析6 心得体会7 参考文献附录摘要最近几十年,随着电子计算机的诞生和高速发展,社会和科技提到了前所未有的高度。计算机技术的发展所带来的信息技术的飞速发展,给人类社会带来了进步,给人们的生活生产发生了巨大深刻的变化。微机技术,在计算机发展过程中发挥了重要的作用。计算机在保持速度和性能的基础上,使得机器更加小巧。典型代表是pc机普及到各行各业的各个领域。而在工程领

2、域,在微机基础上使用汇编语言程序可以基本地实现计算机控制工程的运行状况。同时可以实现自动的检验计算机从系统中采集的信息以判断系统是否处于稳定的工作状态并发出命令进行调试。从而实现采集信息,辨别信息,执行命令一体化,形成多功能的控制终端。 作为电气工程自动化的学生,微机原理是我们的专业课,学好和灵活应用微机技术对我们来说有着十分重要的意义。学习了微机原理和接口技术,对微机有了初步的了解。学习结束后,为提高和巩固专业知识,我们进行了微机原理课程设计,程序设计是指为计算机编写能够接受并执行、且具有实际意义的语句序列。汇编语言程序设计就是运用汇编语言进行程序设计。汇编语言程序设计有以下几种结构形式,有

3、顺序结构,分支结构,循环结构,子程序调用个,系统功能调用等。根据结果要就需进行合理的选择才能建立正确的程序,子并且画出流程图进而完成题目任务。关键词:微机 汇编程序 流程图1 实验任务1.1 实验题目数字求和汇编语言程序设计 1.2 要求:(1)屏幕提示输入一个数字n(2位数); (2)计算s=1+2+3+n的和并输出求和结果s; (3)可连续输入数字进行计算,直至单击“q”或“q”键退出程序。2题目分析及方案选择本次课设是在键盘中输入一个1到99的数,然后求出其累加之和,并显示出来。显然,在设计汇编程序过程中,程序代码要包括输入提示语句、求数字累加之和、将结果输出三个部分。考虑到我们用到的是

4、16为汇编语言,而且寄存器有限,本题在编程序过程中会比较麻烦。在进行课设之前,思路如下:得出结果后,分析并完善程序将设计好的程序放到相应的环境里面运行并调试认真分析题目,设计具体方案根据所选方案设计程序流程图代码图1 思路流程图所以,开始编程序前做出了两个方案。方案一:由于本题要求是输入一个数,然后算出累加结果,我们可以先输入的值n后,通过累加算出从1加到n的值。此种方案程序计算量大,但程序简单。 方案二:在启动程序后,先将1到99的累加之和算出来,此处设为值a1,存在一定的位置,当得到输入n的之后,通过计算算出n到99的累加之和,此处设为值a2再通过a1减去a2得出加之和。此种方案计算量小,

5、但程序复杂。 两种方案都可行,经过思考,由于我们需要重复进行输入输出操作,程序可重复利用,让程序简单易懂且程序小运行快,我们选择第一种方案。 3方案流程图 3.1 方案分析1、由于我们所选的方案是要将1到n的阶数之和给求出来,所以,我们需要先在汇编程序代码中实现可输入功能,即人机交互模式。这要求程序代码中有输入提示部分的程序。2、由于n是介于1到99之间的数,那么我们程序必须可以判断输入的n是否超出了计算范围,这就要求我们的程序中有一部分可以判断n是否处于计算范围内,且在超出范围时输入界面提醒用户输入错误。3、由于题目要求可连续输入,那么程序必须可以做到键入退出按键才能实现退出功能,否则视为继

6、续输入计算。这就需要程序中设定退出功能以及可重复工作功能,实现用户使用时简单且方便。而在设置错误判断部分我们又有两种方案:、 通过累加求和后判断结果是否大于4050或者小于55.因为10加到n(10n99)的结果为55到4050之间,如果结果结果大于4050或者小于55那么则说明n的输入范围错误。、通过直接判定n是否处于10到99之间判定错误。而第一种方案需要占用的内存较大,且可使用的程序指令复杂,较少,不灵活。造成整体程序的设计工作量大,容易出现逻辑错误。而使用第二种方案主要原理为采用变量偏移地址内存进行比较判定是否出错。我们采用第二种方案。3.2 流程图 根据所设计好的方案和计划,设计出流

7、程图。输入流程图如下:开始显示字符串 请输入一个数字键盘读入数据n 判断是否为q或者q y 结束 n 判断是都在1099中 n 报错y 计算1n的累加之和数制转化并显示 图 2 输出流程图要求能够连续的输入数据进行计算,在此循环跳转。对输入数据进行了判断,符合要就在1099内则进行计算,并在屏幕上显示出计算结果,不在此范围内的输入报错,若为q或q则直接退出程序,结束任务。计算部分流程图如图开始将ibuf+2便宜地址给si将0赋值给ax,1赋值给bxbl减去30h,将字符转换成数字bx是否为0输出转换ax清零将ax中内容赋值给cxbx加上ax存于ax中ny将最后一个字节赋值给$,以便将字符串输出

8、n将ax与ax相与是否得0y 结束图3 主程序流程图 输出流程图如下:开始 输出output将bx赋值给dx输出结果跳转至start进行重复计算结束图4 输出流程图设计好流程图后,成功将程序的过程理清楚,给程序设计和调试带来了方便。 4.程序设计及分析4.1 输入程序 根据报告要求和设计的方案需要,设计了输入10到99的累加和程序段,并且判断是否出错的程序段,程序如下如下:lea dx,message ;输入提示语句mov ah,09h int 21h mov ah,07hint 21hcmp al,'q' ;判定是否为qje exit ;若是q执行跳转 cmp al,'

9、;q' ;判定是否为qje exit ;若是q执行跳转 lea dx,inputmov ah,09hint 21hmov bl,0ffh mov ibuf+5,bl ;将ibuf里第三位数置为0ffhlea dx,ibuf mov ah,0ahint 21hmov si,dxmov bl,si+5cmp bl,0ffh ;与第三位进行比较判断是否有三位存在jne error ;判定是否出错mov bl,si+2 ;判定输入是否为小于10的数 cmp bl,30h ;十位跟零比较jna error ;小于等于0就跳到错误 cmp bl,3ah ;大于9就会错误 jnb error mov

10、 bl,si+3 ;个位跟零比较 cmp bl,2fh ;小于0就错误 jna errorcmp bl,3ahjnb errorjmp correcterror:lea dx,error_mess ;出错提示 mov ah,09hint 21hjmp startexit: mov ah,4chint 21h此段程序主要是将输入的数字移动到ibuf这个变量里然后进行判断输入的数字是否在允许计算范围内。si+5表示第三位,si+2表示第一位,si+3表示第二位,分别与这三位进行比较判定是否错误。4.2 求数字累加之和程序为求累加求和,设计了一下代码段:correct:mov cl,ibuf+1xo

11、r ch,chmov si,offset ibuf+2mov ax,0 ;循环运算前的初始化again: ; (0*10 * a0)*10 + a1)*10 + a2)mov dx,10mul dx ;在做乘法的过程中不用考虑dx,因为输入的数为099,所以dx总是为0mov bl,byte ptr si ;取出该字符的ascll码sub bl,30h ;将其减去30h得到数值add al,bl adc ah,0 ;在做加法是要考虑是否有进位inc siloop again mov cx,axmov ax,0mov bx,1 loop2: add ax,bxinc bxloop loop2;这

12、个循环就实现了sum = 1 + 2 + . + n的操作了mov bx,offset obuf+7mov byte ptr bx,'$'将最后一个字节赋值为'$'以便将数字字符串输出出来。mov cx,10jmp loop1loop1 : mov dx,0div cx ;(ax <- ax/10) ax 中存放的是商,汇编中16进制就可以当做10进制来运算add dl,30h ; dl中存放的是余数dec bx ;将指针前移一个字节mov bx,dl ;将余数放在字符串的末尾or ax,ax ;当ax为0时结束jnz loop1 ;当zf=0时跳转,ju

13、mp not zero dec bxmov byte ptr bx,0dhdec bxmov byte ptr bx,0ah ;在字符串的前面加上回车换行。此部分主要为计算1加到n的算法程序,而程序解释已写入代码中。4.3 输出程序 根据题目的要求,设计一下输出程序,程序段如下: lea dx,output ;输出提示 mov ah,09hint 21hmov dx,bxmov ah,09hint 21h ;显示字符串bxjmp start 而为了进行可连续重复计算所以最后加入jmp start指令。5.运行结果及分析将设计好的程序放在mfpci98中运行,得到结果,满足任务书上的要求。 图3

14、 运行结果 在运行程序后,在屏幕输出提示符'if you want to quit, please press q or q!'和'press other key to continue',当输入q或者q时则视为退出程序,当输入一个小于10或者大于99的数时则视为输入错误,屏幕上会输出input error,plerase input again,当输入一个大于10小于9的数,在屏幕上输出一个result=,其后所出现一个数,这个数就是计算结果。6 心得体会微机原理与接口技术是一门应用性,综合性,实践性较强的课程,通过有针对性的课程设计,使学生学会系统地运用所学

15、的理论知识,提高学生在程序设计方面的开发与调试本领,系统地掌握微机原理的相应知识。此次课程设计,即霓虹灯显示程序设计要求在屏幕上显示文字或图像,并让这些文字或图像按照一定规律动态变化。从整个课程设计的角度上,我也遇到了很多问题,如怎样让文字显示的坐标代码显示出更美观的字体、怎样将图像转化为坐标代码以及以后编译过程出现得种种错误等等,但是通过网上查阅资料,查询相关书籍,请教同学,最终都得以解决。我想这就是课程设计的目的,它让我们学会学习,怎样查阅资料,怎样利用自己的已有知识,去获得自己未知的东西;让我们在实际的操作中学会排错、纠正的的方法。是我们工科学生必不可少的一门教学课程。总之,通过本次课程

16、设计,我有机会将课堂上所学到的理论知识运用到了实际当中。并通过对知识的综合利用,进行了必要的分析,比较,提高了自己分析问题的能力,同时通过对编译软件和取模软件的使用,进一步增强了自己的动手能力。总之,这次课设让我受益匪浅,希望在今后的学习中自己能够做的更好。7 参考文献1 彭虎等编著微机原理与接口技术(第三版)北京:电子工业出版社,2008 2沈美明,温东禅ibm-pc汇编语句程序设计(第2版)北京:清华大学出版社,2001 3任向明,卢惠林汇编语言程序设计实用教程北京:清华大学出版社,2009 4马力妮80x86汇编语言程序设计北京:机械工业出版社,2004 附录data segment i

17、nput db 0ah,0dh,"please input a number(199):$" obuf db 10 dup(?) ibuf db 7,0,6 dup(?)output db 0ah,0dh,'result=$'message db 0ah,0dh,'if you want to quit, please press q/q ! ' db 0ah,0dh,'press other key to continue',0ah,0dh,' $'error_mess db 'input error

18、 ,please input again',0ah,0dh,'$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,message ;输入提示语句mov ah,09h int 21h mov ah,07hint 21hcmp al,'q' ;判定是否为qje exit ;若是q执行跳转 cmp al,'q' ;判定是否为qje exit ;若是q执行跳转 lea dx,inputmov ah,09hint 21hmov bl,0ffh m

19、ov ibuf+5,bl ;将ibuf里第三位数置为0ffhlea dx,ibuf mov ah,0ahint 21hmov si,dxmov bl,si+5cmp bl,0ffh ;与第三位进行比较判断是否有三位存在jne error ;判定是否出错mov bl,si+2 ;判定输入是否为小于10的数 cmp bl,30h ;十位跟零比较jna error ;小于等于0就跳到错误 cmp bl,3ah ;大于9就会错误 jnb error mov bl,si+3 ;个位跟零比较 cmp bl,2fh ;小于0就错误 jna errorcmp bl,3ahjnb errorjmp correc

20、terror:lea dx,error_mess ;出错提示 mov ah,09hint 21hjmp startexit: mov ah,4chint 21hcorrect:mov cl,ibuf+1xor ch,chmov si,offset ibuf+2mov ax,0 ;循环运算前的初始化again: ; (0*10 * a0)*10 + a1)*10 + a2) mov dx,10 mul dx ;在做乘法的过程中不用考虑dx,因为输入的数为099,所以dx总是为0 mov bl,byte ptr si ;取出该字符的ascll码 sub bl,30h ;将其减去30h得到数值 ad

21、d al,bl adc ah,0 ;在做加法是要考虑是否有进位 inc si loop again mov cx,ax mov ax,0 mov bx,1 loop2: add ax,bx inc bx loop loop2;这个循环就实现了sum = 1 + 2 + . + n的操作了 mov bx,offset obuf+7 mov byte ptr bx,'$'将最后一个字节赋值为'$'以便将数字字符串输出出来。 mov cx,10jmp loop1 loop1 : mov dx,0 div cx ;(ax <- ax/10) ax 中存放的是商,汇

22、编中16进制就可以当做10进制来运算 add dl,30h ; dl中存放的是余数 dec bx ;将指针前移一个字节 mov bx,dl ;将余数放在字符串的末尾 or ax,ax ;当ax为0时结束 jnz loop1 ;当zf=0时跳转,jump not zero dec bx mov byte ptr bx,0dh dec bx mov byte ptr bx,0ah ;在字符串的前面加上回车换行。lea dx,output ;输出提示 mov ah,09hint 21hmov dx,bxmov ah,09hint 21h ;显示字符串bxj start code ends end start本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日成绩评分表 项目 评分标准 得分 课 程 设 计 说 明 书 撰 写 60分 方案 论证 10分 能正确分析设计内容,算法选择合理,并有详细的说明、论证。 10x8 能分析设计内容,算法选择满足设计要求,有简单说明 7x

温馨提示

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

评论

0/150

提交评论