微机原理简易计算器课程设计报告_第1页
微机原理简易计算器课程设计报告_第2页
微机原理简易计算器课程设计报告_第3页
微机原理简易计算器课程设计报告_第4页
微机原理简易计算器课程设计报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、-. z. . . . . 资料. . .课 程 设 计 报 告课程设计名称: 简易计算器 系 别:三系学生*:*梦瑶班 级:11通信1班 学 号:成 绩:指导教师:袁静开课时间:2013-2014学年1学期一设计题目简易计算器二主要内容1、采用模块化程序构造设计软件,可将整个软件分成假设干功能模块。2、画出程序流程图。3、根据流程图,编写源程序。4、上机调试程序。三具体要求1、利用BIOS和DOS的中断来设计一个计算器,要求在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和完毕程序的功能。2、利用BIOS中断的10号功能调用来设置显示方式。3、利用DOS中

2、断的01号和02号子功能来完成键盘接收,结果显示。四进度安排周一周二周三周四周五讲课设内容,安排任务查资料,确定硬件电路方案编程调试编程调试写总结报告五成绩评定考核方法:现场验收占50%,课程设计报告占50%。考核内容:学习态度出勤情况,平时表现等、方案合理性、程序编制质量、演示效果、设计报告质量。成绩评定:优,良,中,及格,不及格。特别说明:如发现抄袭,按照不及格处理。目 录TOC o 1-3 h z uHYPERLINK l _Toc375485633前言 PAGEREF _Toc375485633 h 4HYPERLINK l _Toc3754856341、设计题目 PAGEREF _T

3、oc375485634 h 5HYPERLINK l _Toc3754856352、设计内容 PAGEREF _Toc375485635 h 5HYPERLINK l _Toc3754856362.1 根本内容 PAGEREF _Toc375485636 h 5HYPERLINK l _Toc3754856372.2 主要功能 PAGEREF _Toc375485637 h 5HYPERLINK l _Toc3754856403、设计原理及方案 PAGEREF _Toc375485640 h 6HYPERLINK l _Toc3754856413.1 总体方案 PAGEREF _Toc3754

4、85641 h 6HYPERLINK l _Toc3754856493.2 程序流程图 PAGEREF _Toc375485649 h 7HYPERLINK l _Toc3754856503.2.1 主程序 PAGEREF _Toc375485650 h 7HYPERLINK l _Toc3754856513.2.2 计算子程序 PAGEREF _Toc375485651 h 8HYPERLINK l _Toc3754856523.3 系统模块详细设计 PAGEREF _Toc375485652 h 9HYPERLINK l _Toc3754856533.3.1 界面设置 PAGEREF _T

5、oc375485653 h 9HYPERLINK l _Toc3754856593.3.2 算法选择设置 PAGEREF _Toc375485659 h 10HYPERLINK l _Toc3754856663.3.3 数制转换设置 PAGEREF _Toc375485666 h 11HYPERLINK l _Toc3754856714.汇编源程序代码 PAGEREF _Toc375485671 h 13HYPERLINK l _Toc3754857015、调试运行结果 PAGEREF _Toc375485701 h 20HYPERLINK l _Toc3754857025.1 操作说明 PA

6、GEREF _Toc375485702 h 20HYPERLINK l _Toc3754857035.2 调试运行结果 PAGEREF _Toc375485703 h 20HYPERLINK l _Toc3754857046、心得体会 PAGEREF _Toc375485704 h 23HYPERLINK l _Toc3754857057、参考文献 PAGEREF _Toc375485705 h 24前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、

7、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。计算器在我们日常生活中应用是相当普遍的,可以说它已经成为现代社会生活不可或缺的一局部。本次课程设计就是根据微机原理与接口的相关知识,利用BIOS和DOS的中断来设计一个简易计算器,能够实现加减乘除四则运算,并在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和完毕程序的功能。同时利用BIOS中断的10号功能调用来设置显示方式,利用DOS中断的01号和02号子功能来完成键盘接收,结果显示。通过本次课程设计,要求学生熟悉和掌握微机系统的软件的方法、设计步骤,使学生得到微机开发应用方面的初步训练,

8、熟练应用8086汇编语言编写应用程序和实际设计中的软件调试方法和步骤,熟悉微机系统的软件开发工具的使用方法。通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。1、设计题目简易计算器2、设计内容2.1根本内容1、编写一个程序,能从键盘上读入数据,并完成加、减、乘、除的计算。2、利用BIOS和DOS的中断来设计一个计算器,要求在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和完毕程序的功能。3、利用BIOS中断的10号功能

9、调用来设置显示方式。4、利用DOS中断的01号和02号子功能来完成键盘接收,结果显示。2.2 主要功能一、显示主菜单功能主菜单如下:Please input a number to choose the arithmetic operation1add 2subtract 3multiply 4divide qreturn to DOS二、计算功能1、别按数字键1、2、3,则执行相应子模块1、2、3,进展两个字节与两个字节的加法、减法和乘法运算,并在屏幕上显示运算结果。2、按数字键4,执行子模块4,进展两个字节除一个字节的除法运算,并显示结果。3、按字母键q,执行子模块5,程序退出,返回DOS

10、。4、假设按其它键则显示提示字符串:Please Press Number 1、2、3、4、q:,然后继续显示主菜单。3、设计原理及方案3.1 总体方案利用BIOS中断的10号功能调用来设置显示方式。利用DOS中断的01号、02号子功能来完成键盘承受、结果显示。设置屏幕显示方式。MOV AH,00HMOV AL,NUM NUM为显示方式属性字 INT 10H接着从键盘上承受键值,并判别后转到相应的子模块进展运算,并显示结果。MOV AH,01H INT 21H ;AL=键入字符的ASCII码从键盘上接收一串字符串命令:MOV AH,0AH MOV D*,OFFSET BUF ;BUF为数据段中

11、定义的数据缓冲区 INT 21H显示单个字符命令:MOV AH,02HINT 21H显示一串字符串的命令:MOV AH,09H MOV D*,OFFSET BUF ;BUF为被显示字符串的首地址 INT 21H十进制数显示过程:将十进制数送到B*中,B*除以1000,余数送B*中,商在AL中,*围为09,显示AL中的内容。B*除以100,余数送B*中,商在AL中,显示AL中的内容,依次类推,直到分出个位数字。如最高位为0,则不应显示,而非最高位的0则显示。可利用设标志位并结合商的方法来决定是否显示0。3.2 程序流程图 主程序显示主菜单显示主菜单接收数字AL=1AL=2AL=3AL=4AL=5

12、调用加法子程序调用减法子程序调用乘法子程序调用除法子程序完毕开场图3.1 主程序流程图 计算子程序提示输入第一个数提示输入第一个数提示输入第二个数计 算判断结果正负,并储存结果将结果转为ASCII码,并显示结果提示返回DOS还是重新计算将第一个数的ASCII码转为二进制并保存将第二个数的ASCII码转为二进制并保存结 束图3.2 计算子程序流程图3.3 系统模块详细设计本次设计需要实现的模块图图如1所示 四则运算器程序设计 四则运算器程序设计 界面设置算法选择设置数制转换设置 界面设置算法选择设置数制转换设置图3.3 模块图1界面设置 主要实现确定界面样式的功能,以菜单形式显示。算法选择设置用

13、于选择加、减、乘、除来进展运算。3数制转换设置 应用十进制二进制的转换算法来处理加、减、乘、除四则运算。 界面设置1、设置屏幕显示方式:MOV AH,00HMOV AL,2INT 10H通过调用BOIS的O2H号功能来设置屏幕显示方式。此处AL=2,即设置屏幕显示方式为80*25黑白文本。2、显示主菜单:DOS不仅为用户提供了许多指令,而且还有用户可以直接调用的上百个常用子程序。这些子程序的功能主要是进展磁盘读/写、根本输入/输出管理等。在使用时,用户只需要了解各个子程序的编号即可,这些编号成为DOS功能调用号。其调用过程为:1DOS功能条用号送AH存放器。2如果需要,按要求给定输入参数由得不

14、需要输入参数。3写入中断指令INT 21H。调用完毕,按功能使用其输出参数。本程序主菜单显示代码如下:MOV AH,09HMOV D*,OFFSET TOPINT 21H先在数据段中定义主菜单中要显示的字符串,再通过调用DOS系统的09H号功能显示字符串串尾字符为,但不显示来完成。 算法选择设置汇编语言中加减乘除运算指令分别为ADD、SUB、MUL、DIV。首先选择要进展的四则运算,规定:假设选择1,则进展加法;选择2,则进展减法;选择3,则进展乘法;选择4,则进展除法。具体计算过程分析如下:1、从键盘接收一个数字:MOV AH,01HINT 21H通过调用DOS系统的01H号功能键入字符并回

15、车来实现,其出口参数为键入字符的ASCII码,存在AL中。2、接收键入用于计算的数:MOV AH,0AHMOV D*,OFFSET BUF1通过调用DOS系统的0AH号功能键入字符串至内存缓冲区来实现,其入口参数如下:DS:D*=存放键入字符串的缓冲区的首地址;DS:D*=用户规定的缓冲区;DS:D*+1=实际键入的字符数;从DS:D*+2开场放键入的字符串。因此,在下面的程序中运用所键入的数字时要注意字符串的首地址。3、显示结果:MOV AH,09HMOV D*,OFFSET BUF3INT 21H将结果存入数据段中定义的缓冲区BUF3中,再通过调用DOS系统的09H号功能显示字符串串尾字符

16、为,但不显示来完成。 数制转换设置1、子程序A2将数的ASCII码转为二进制数:A2 PROC NEAR MOV CL,BUF1+1; 把BUF1+1中的实际键入的字符数放入CL MOV CH,0; CH清零 MOV B*,OFFSET BUF1+2; 把第一个数字的地址放在B* PUSH B*; 保存B*中的值 PUSH C* ; 保存C*中的值L1: MOV AL,B* AND AL,0FH ; 把ASCII码转换为十进制 MOV B*,AL; 存放十进制 INC B* ; 下一个数字的地址 LOOP L1 POP C* ; 恢复C* POP B*; 恢复B* MOV A*,0 ; 将累加

17、和赋零 MOV SI,10L2: MUL SIADD AL,B*ADC AH,0INC B* LOOP L2 ; 累加乘10L3: RETA2 ENDP入口:十进制数的ASCII在BUF1内;出口:转换后的二进制数在A*内。算法:先将其转换为十进制,再用累加和乘10加*的方法变为二进制,如将163转换为二进制数,可先将累加和赋0,再计算0*10+1*10+6*10+3结果为二进制数。2、将计算结果的二进制数转换为对应的十进制数ASCII码并输出显示A3程序段:该模块的程序设计详见程序清单及说明中A3、BB程序段 入口:二进制数在A*内;出口:转换后的ASCII码在BUF内。算法:A*内的数*围

18、在+32767到-32768之间,先检查A*符号位,决定输出+-,假设为负,先求补码得到原码后可与正数统一处理。方法:把将被转换的二进制数先除以10000,商为万位数,再将余数除以1000,商为千位数,以此类推,求出百十位数,剩下的为个位数。最后各个数加上30H,即为对应字符。4.汇编源程序代码DATA SEGMENTN=15TOP DB 5 DUP(0AH) DB N DUP( ), Please input a number to choose the arithmetic operation, 0DH,0AH DB N DUP( ), , 0DH,0AH DB N DUP( ),1add

19、 2subtract 3multiply, 0DH,0AH DB N DUP( ),4divide qreturn to DOS, 0DH,0AH DB N DUP( ), , 0DH,0AH DB N DUP( ),Choice (.4.q):$MESG1 DB 0DH,0AH,Please press number: .4.q !$ MESG2 DB 0DH,0AH,Please input the first number :$MESG3 DB 0DH,0AH,Please input the second number :$MESG4 DB 0DH,0AH,Play Add :$MES

20、G5 DB 0DH,0AH,Play Subtract :$MESG6 DB 0DH,0AH,Play Multiply :$MESG7 DB 0DH,0AH,Play Divide :$MESG8 DB 0DH,0AH,The Result :$MESG9 DB 0DH,0AH,PRESS Q RETURN DOC,ANY PRESS RETURN START!$BUF1 DB 6 ; 十进制数的缓冲区,可接收6个字符 DB ; 保存,用于10号调用时DOC填入实际输入字符数 DB 6 DUP() ; 一个符号位,四位数字ASCII码,加上一个回车符BUF2 DW ; 将第一个数转换为二进制

21、后,放于这里BUF3 DB 6 DUP(),$ ; 将结果转换为ASCII码后,放在这里DATA ENDSSTACK SEGMENT STACKSTACKCODE SEGMENTASSUME CS:CODE , DS:DATASTART: MOV A*,DATAMOV DS,A* MOV AH,00H ; 设置屏幕显示方式 MOV AL,2 INT 10H MOV AH,09H ; 显示菜单 MOV D*,OFFSET TOP INT 21HAA: MOV AH,01H ; 从键盘接收一个数字INT 21H CMP AL,1 ; 与1比拟 JNE NE*T1 ; 不等于1就转到NE*T1 JM

22、P JIA ; 等于1就转到加法程序NE*T1: CMP AL,2 ; 与2比拟 JNE NE*T2 ; 不等于2就转到NE*T2 JMP JIAN ; 等于2就转到减法程序NE*T2: CMP AL,3 ; 与3比拟 JNE NE*T3 ; 不等于3就转到NE*T3 JMP CHENG ; 等于3就转到乘法程序NE*T3: CMP AL,4 ; 与4比拟 JNE NE*T4 ; 不等于4就转到NE*T4 JMP CHU ; 等于4就转到除法程序NE*T4: CMP AL,q ; 与q比拟 JNE NE*T5 ; 不等于q就转到NE*T5 MOV AH,4CH ; 回DOS INT 21HNE

23、*T5: MOV AH,09H ; 显示MESG1MOV D*,OFFSET MESG1INT 21H JMP AA ; 跳到AAA1 PROC NEAR MOV AH,09H ; 提示输入第一个数 MOV D*,OFFSET MESG2 INT 21H MOV AH,0AH ; 接收第一个数 MOV D*,OFFSET BUF1 INT 21H CALL A2 ; 调用A2进展ASCII-二进制的转换 MOV BUF2,A* ; 把第一个数转换的二进制放在BUF2 MOV AH,09H ; 提示输入第二个数 MOV D*,OFFSET MESG3 INT 21H MOV AH,0AH ; 接

24、收第二个数 MOV D*,OFFSET BUF1 INT 21H CALL A2 ; 调用A2把第二个数进展ASCII-二进制转换RETA1 ENDPA2 PROC NEAR MOV CL,BUF1+1 ; 把BUF1+1中的实际键入的字符数放入CL MOV CH,0 ; CH清零 MOV B*,OFFSET BUF1+2 ; 把第一个数字的地址放在B* PUSH B* ; 保存B*中的值 PUSH C* ; 保存C*中的值L1: MOV AL,B* AND AL,0FH ; 把ASCII码转换为十进制 MOV B*,AL ; 存放十进制 INC B* ; 下一个数字的地址 LOOP L1 P

25、OP C* ; 恢复C* POP B* ; 恢复B* MOV A*,0 ; 将累加和赋零 MOV SI,10L2: MUL SIADD AL,B*ADC AH,0INC B* LOOP L2 ; 累加乘10L3: RET A2 ENDPJIA: MOV AH,09H ; 加法程序MOV D*,OFFSET MESG4INT 21H CALL A1 ; 调用A1 ADD A*,BUF2 ; 把转换后的放在BUF2中的第一个数和放在A* JMP A3 ; 的第二个数相加JIAN: MOV AH,09H ; 减法程序MOV D*,OFFSET MESG5INT 21H CALL A1 MOV B*,

26、A* ; 把转换后的放在A*的第二个数放到B* MOV A*,BUF2 ; 把转换后放在BUF2中的第一个数放到A* SBB A*,B* ; 两数相减 JMP A3CHENG: MOV AH,09H ; 乘法程序MOV D*,OFFSET MESG6INT 21H CALL A1 MOV B*,A* ; 把转换后的放在A*的第二个数放到B* MOV A*,BUF2 ; 把转换后的放在BUF2中第一个数放到A* MUL B* ; 两数相乘 JMP A3CHU: MOV AH,09H ; 除法程序MOV D*,OFFSET MESG7INT 21H CALL A1 MOV D*,A* ; 把转换后

27、的放在A*的第二个数放到D* MOV A*,BUF2 ; 把转换后的放在BUF2中第一个数放到A* DIV DL ; 两数相除,商在AL里 MOV AH,0H ; 使AH清零 JMP A3A3: MOV BUF3,+ ; 把BUF3放+ CMP A*,0 ; 把结果于0比拟 JGE L4 ; A*0转到 L4 NEG A* ; A*0将A*取反 MOV BUF3,- ; 把BUF3放-L4: CWDMOV B*,10000 DIV B* ; 商为第一位数字放在AL,余数放在D*CALL BB MOV BUF3+1,AL ; 把第一个数放在BUF3+1单元中 MOV A*,D* ; 把放在D*中

28、的余数放到A* CWD MOV B*,1000 DIV B* ; 商为第二位数字放在AL,余数放在D*CALL BB MOV BUF3+2,AL ; 把第二个数放在BUF3+2单元中 MOV A*,D* ; 把放在D*中的余数放到A* MOV BL,100 DIV BL ; 商为第三位数字放在AL,余数放在AHCALL BB MOV BUF3+3,AL ; 把第三个数放在BUF3+3单元中 MOV AL,AH ; 把放在AH 中的余数放到AL CBW MOV BL,10 DIV BL ; 商为第四位数字放在AL,余数放在ACALL BB MOV BUF3+4,AL ; 把第四个数放在BUF3+

29、4单元中 ADD AH,30H ; 把个位转为ASSCII码 MOV BUF3+5,AH ; 把第五个数放在BUF3+5单元中 MOV AH,09H ; 提示结果 MOV D*,OFFSET MESG8 INT 21H MOV AH,09H MOV D*,OFFSET BUF3 ; 把放在BUF3缓冲区中的结果显示出来INT 21H MOV AH,09H ; 提示是返回DOS还是重新计算 MOV D*,OFFSET TOP INT 21H JMP NE*T5 ; 其他数字重新计算BB PROC NEAR CMP AL,0H ; 与零比拟 JE L5 JMP L6L5: MOV AL,20H ;

30、 等于零,赋AL空格JMP L7L6: ADD AL,30H ; 不等于零,把数转为ASSCII码L7: RETBB ENDPA4: MOV AH,4CH ; AL等于Q就返回DOSINT 21HCODE ENDSEND START5、调试运行结果5.1 操作说明1按提示输入1,2,3,4。21:加法 ADD。32:减法 SUB。43:乘法 MUL。54:除法 DIV。输入一个十进制数,回车。再输入一个十进制数,回车。显示计算结果。退出按q。5.2 调试运行结果1进入系统界面,程序运行截图如图5.1所示。图5.1 进入系统界面2加法:算法选择1,按提示输入两个十六进制数,回车后显示计算式和结果。程序运行截图如图5.2所示。图5.2 加法程序截图3减法:算法选择2,按提示输入两个十进制数,回车后显示计算结果,程序运行截图如图5.3所示。图5.3 减法程序截图4乘法:算法选择3,按提示输入两个十进制数,回车后显示计算结果。程序运行截图如图5.4所示。图5.4 乘法程序截图5除法:算法选择3,按提示出入两个十进制数,回车后显示计算结果,程序运行截图如图5.5所示。图5.5 除法程序截图6退出:按q键即可退出程序。程序运行截图如图5.6所示。图5.6 退出运行截图程序运行后可以看出,程序完成了十进制加减乘除四则运算,按q键则退出程序,符合设计要求。同

温馨提示

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

评论

0/150

提交评论