ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:1.20MB ,
资源ID:30742790      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30742790.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理课程设计.docx

1、微机原理课程设计课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 计算器初始条件:设计一个简单的计算器程序。用汇编语言(8086/DOS)编计算器程序,所设计的计算器能实现加、减、乘、除的计算。该程序接受的是10进制数。执行时,直接用键盘输入数字和运算符,按等号键即可完成运算。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 具备计算器的界面,在屏幕上显示出来。2. 实现按键的输入,能实现一位数的四则运算并能连续计算,以及实现有符号数的计算及清屏功能。3撰写符合学校要求的课程设计说明书,内容包括:摘要、目录、正文、参考文献、附录(程序

2、清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。时间安排:1. 1月08日-1月10日 查阅资料及方案设计2. 1月11日-6月13日 编程3. 1月14日-6月16日 调试程序4. 1月17日-1月18日 撰写课程设计报告5. 1月19日 上午准备答辩,下午正式答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘 要汇编语言(AssemblyLanguage)是面向机器的程序设计语言,是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。在汇编

3、语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。本次程序设计是以计算器为任务,运用汇编语言来完成。任务要求有计算器的界面,并显示出来。所以程序中一个重要的程序段是界面的设计。另外对于两个数字和运算符的输入存储和显示也是比较重要的一段。在本程序设计,我们采用了较多的子程序,使得程序的阅读理解比较清晰简单。在输入计算表达式的时候,所输入的有效字符将在计算器的界面中高亮显示。但由于各方面的限制,程序还只能运算一位数。但在本程序中有一个特色是,设置一个功能键,只有当功能键处于有效状态即绿色时,计算器才处于工作状态。此外,只要输入的字符无效时,功能键

4、都将变成红色,中断计算器的工作。关键词:计算器 汇编语言 子程序 DOS调用计算器1 设计任务及要求初始条件:设计一个简单的计算器程序。用汇编语言(8086/DOS)编计算器程序,所设计的计算器能实现加、减、乘、除的计算。该程序接受的是10进制数。执行时,直接用键盘输入数字和运算符,按等号键即可完成运算。要求完成的主要任务: 1. 具备计算器的界面,在屏幕上显示出来。2. 实现按键的输入,能实现一位数的四则运算并能连续计算,以及实现有符号数的计算及清屏功能。2 总体方案论证该课程设计的任务是做一个简易计算器,可以对两个一位数进行加减乘除运算,例如8/2=4。这个题目难点在于这两个要做运算的数未

5、知,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个一位数进行运算,而且做的是运算符号也未知,所以我们还要判断这个运算是什么,并且调用相应的程序。首先,我们必须先设计一个计算器的界面和必要的提示语句。同时我们还要准备一行来用于表达式的显示。接着就是两个数和运算符号的输入显示和存储。另外,我们还设置了一个功能键,说明计算器的工作状态。运行计算器后,首先按“Q”/“q”打开计算器,处于有效状态。同时,只要从键盘输入有效字符,功能键将一直显示为绿色;否则,显示为红色。当输入第一个有效数字,程序可以在表达式行显示出来,并将其对应的值出入A中,同时在显示的计算器界面中,对应的数值也将

6、由绿色变为红色。接着运算字符和第二个有效数字也一样。最后,从键盘上按下“Enter”键,在屏幕上将显示“=”,同时,程序将显示计算结果。对于键入的运算符号,程序将通过比较指令CMP来判断其属于哪一种运算,然后直接跳转到相应的程序段。至于结果的输出,在四个不同的子运算程序中,都将结果转化为对应的ASCII码,然后再使用DOS功能调用,将其显示出来。图2-1 数据的提取运算示意图由于计算的结果有可能出现负数,对其必须要有相应的处理。首先判断存在BUF0 中的结果是否为负数,若为正数,则直接输出;若是负数,则取补后,再输出,并在结果前显示一个“-”。最后就是程序的退出,当从键盘输入“Q”“或q”时,

7、程序将提示退出。3 程序流程图及其说明3.1 流程图总体的流程图见图3-1。图3-1 总体流程图3.2 流程图说明 程序流程图是一个总体的框架,大概说明了设计的思想,简要说明实现的功能及功能的大概算法。 程序开始执行,进入欢迎界面,输出提示性语句,以及显示计算机界面。判断输入字符是否为“O”或“o”,若输入字符“O”或“o”,则打开计算器;若输入字符“Q”或“q”,则退出计算器;若输入字符为其他字符,则继续保持计算器欢迎界面。打开计算机后,输入第一个数,若输入字符为数字,则把数据存入数据区A,且在屏幕的表达式显示栏显示输入的数字;若输入字符为其他字符,则继续返回计算器欢迎界面。然后输入运算符,

8、若输入合法的运算符“+”、“-”、“*”、“/”,则可继续输入第二个数,且在屏幕的表达式显示栏显示运算符;若为其他字符,则再次返回欢迎界面。输入第二个数,若输入的字符为数字,则把数据存入数据区B,且在屏幕的表达式显示栏显示输入的数字;若输入字符为其他字符,则再次返回计算器欢迎界面。 然后,按下回车键,得到计算结果,并且把计算结果存入数据区BUF0。 接下来,就是符号数的处理,需要对数据区BUF0的数据进行正负数的判断。若数据区BUF0的数据为整数,则直接输出到屏幕的显示栏显示计算结果;若数据为负数,而负数在是以补码的形式存储在计算机中,当然不能直接输出,用NEG指令对就算结果求补运算,得到的结

9、果为负数的绝对值,这是需要在求补后的数值前添加“-”号,即实现有符号数的正确计算。对于输出的结果后,再次判断是否有运算符输入。若有,则继续重复上述操作进行四则运算;若无,则保持运算结果界面。再次按下“O”或“o”键,则可实现清零操作,重新开始计算器功能;若按下“Q”或“q”键,则退出程序。总体流程图如图3-1。4 软件设计说明4.1 软件设计思想程序基本采用结构化程序设计的思想,即将整个大程序分解成若干个小程序,采用自顶向下、逐步求精的程序设计方法,使用三种基本控制结构构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造。在程序中通过大量采用子程序,而简化主程序,可以使程序设计的思路很

10、清晰,也有利于程序的调试和查找错误。本程序中的子程序:SEVERAL_RECT:画多个矩形方框的子程序HIGHLIGHT:高亮化的子程序LOWLIGHT:取消高亮化的子程序POSITION:设置修改提示性语句的位置RECT:绘制一个方框的子程序FRAME1:方框绘制和字符的子程序FRAME2:显示界面字符的子程序O_F2T10:将二进制转化为十进制的子程序RADIX1:进制转换处理子程序4.2主要功能程序段设计4.2.1 界面显示程序设计首先是提示语句的定义:NOTE1 DB 0AH,0DH, YOU ARE WELCOME! ,0AH,0DH,$NOTE2 DB 0AH,0DH, YOU C

11、AN QUIT WITH Q OR q ! ,0AH,0DH,$NOTE3 DB ,0AH,0DH,$NOTE4 DB ,0AH,0DH,$程序段设计:BEN1:;*设置BIOS调色板* mov ah, 00h ;设置绘图模式 mov al, 13h ;四色图形模式 13 int 10h ;Bios mov ah, 0bh ;设置调色板 mov bh, 0Fh ;调色板ID mov bl, 02h ;颜色 02 int 10h ;Bios ;*显示欢迎语句* LEA DX,NOTE1 MOV AH,09H INT 21H LEA DX,NOTE2 MOV AH,09H INT 21H CALL

12、 RECT;* CALL FRAME1 ;调用绘制方框子程序 CALL FRAME2 ;调用显示数字子程序;*4.2.2 字符的输入存储和高亮显示设计将输入的两个有效数字存入A和B中,同时在计算器界面中,将输入的字符高亮显示。YUNSUAN: MOV X_POS,4 ;行 INC DX ;列 MOV Y_POS,DL ADD Y_POS,1 ;MOV Y_POS,8;列 CALL POSITION;*键盘输入* MOV AH,07H ;无回显的键盘输入 INT 21H;*显示键盘输入的字符* MOV BH,00H MOV BL,06H ;2-红,4-橙红,6-橘黄,7-白,8-灰;与上面一样

13、MOV CX,1 MOV AH,0AH INT 10H ;对应的数字高亮 CMP AL,0 JZ H_L_0 CMP AL,1 JZ H_L_1 CMP AL,2 JZ H_L_2 CMP AL,3 JZ H_L_3 CMP AL,4 JZ H_L_4 CMP AL,5 JZ H_L_5 CMP AL,6 JZ H_L_6 CMP AL,7 JZ H_L_7 CMP AL,8 JZ H_L_8 CMP AL,9 JZ H_L_9 CMP AL,+ JZ H_L_ADD CMP AL,- JZ H_L_SUB CMP AL,* JZ H_L_MUL CMP AL,/ JZ H_L_DIV CMP

14、 AL,0DH;回车键,显示= JZ H_L_EQU JMP EXIT1H_L_0: MOV X_POS,14 MOV Y_POS,3 MOV BL,0 JMP CALL_H_L1H_L_1: MOV X_POS,11 MOV Y_POS,3 MOV BL,1 JMP CALL_H_L1H_L_2: MOV X_POS,11 MOV Y_POS,7 MOV BL,2 JMP CALL_H_L1H_L_3: MOV X_POS,11 MOV Y_POS,11 MOV BL,3 JMP CALL_H_L1H_L_4: MOV X_POS,9 MOV Y_POS,3 MOV BL,4 JMP CAL

15、L_H_L1H_L_5: MOV X_POS,9 MOV Y_POS,7 MOV BL,5 JMP CALL_H_L1H_L_6: MOV X_POS,9 MOV Y_POS,11 MOV BL,6 JMP CALL_H_L1H_L_7: MOV X_POS,6 MOV Y_POS,3 MOV BL,7 JMP CALL_H_L1H_L_8: MOV X_POS,6 MOV Y_POS,7 MOV BL,8 JMP CALL_H_L1H_L_9: MOV X_POS,6 MOV Y_POS,11 MOV BL,9 JMP CALL_H_L1H_L_ADD: ;加减乘除显示有点问题 MOV X_

16、POS,14 MOV Y_POS,15 MOV BL,+ JMP CALL_H_L2H_L_SUB: MOV X_POS,11 MOV Y_POS,15 MOV BL,- JMP CALL_H_L2H_L_MUL: MOV X_POS,9 MOV Y_POS,15 MOV BL,* JMP CALL_H_L2H_L_DIV: MOV X_POS,6 MOV Y_POS,15 MOV BL,/ JMP CALL_H_L2H_L_EQU: MOV X_POS,14 MOV Y_POS,11 MOV BL,= JMP CALL_H_L3CALL_H_L1: CALL HIGHLIGHT ADD FO

17、RTH_SUAN,1 CMP YUN_HAVE, 1 ;判断运算符是否输入 JZ NEXT3 CMP FORTH_SUAN,2 ;判断是否有一次数字输入 JZ STORE1_1NEXT3: ADD LATTER_SUAN,1 CMP LATTER_SUAN,2 ;判断运算符后是否有一次数字输入 JZ STORE2 ;有则存入第二个数 JMP YUNSUAN ;没有则无条件转移到开头STORE1_1: MOV A, BX ;存入第一个数 JMP YUNSUAN ;返回输入状态 STORE2: MOV B, BX ;存入第二个数 JMP YUNSUAN ;返回输入状态4.2.3 加减乘除计算段程序

18、设计 通过判断输入的运算字符,确定属于哪一种运算,再转移到相应的程序段执行。程序设计如下:CALL_H_L3: ;键入了回车运算符,需显示运算结果 CALL HIGHLIGHT CALL FRAME2 ;调用显示数字子程序 CMP AD_D,1 JZ ADD2CMP SU_B,1 JZ SUB2 CMP MU_L,1 JZ MUL2 CMP DI_V,1 JZ DIV2 ADD2: ;加法设计 MOV X_POS,4 ;行 MOV Y_POS,13 ;列 CALL POSITION MOV AX,A ADD AX,B SUB AX,96 ;实际调试表明要减去96方可得到结果 CALL O_F2

19、T10 JMP EXIT1SUB2: ;减法设计 MOV X_POS,4 ;行 MOV Y_POS,13 ;列 CALL POSITION MOV AX,A SUB AX,B ;两数相减 CALL O_F2T10 JMP EXIT1 MUL2: ;乘法设计 MOV X_POS,4 ;行 MOV Y_POS,13 ;列 CALL POSITION MOV X_POS,4 ;行 MOV Y_POS,13 ;列 CALL POSITION MOV AX,A SUB AX,30H MOV BX,B SUB BX,30H MUL BX CALL O_F2T10 JMP EXIT1DIV2: ;除法设计

20、MOV X_POS,4 ;行 MOV Y_POS,13 ;列 CALL POSITION MOV AX,A SUB AX,30H MOV DX,0 MOV BX,B SUB BX,30H DIV Bx CALL O_F2T10 5 程序调试运行程序后,进入程序运行初始界面,会有一个提示语句,按“Q”或“q”后,功能键显示为绿色,计算器处于工作状态。如图5-1。图5-1 程序运行的初始界面输入一个运算表达式,则对应的数字和运算符将处于高亮状态。如图5-2。图5-2 输入一个表达式后的界面图键入“Enter”,表达式被清除掉,相应的数字和字符也取消高亮。同时也显示出表达式的计算结果。如图5-3图5

21、-3 计算结果的界面图6 心得体会微机原理与接口技术作为自动化专业的学生一个非常重要的专业必修课,对我们的专业能力的培养,对实践动手能力的提升都有着非常重要的意义,是要引起我们大家重视的。而微机原理的课程设计正是要求我们通过一个具体实在的任务,将我们所学的理论知识与实际需求相结合起来,以实际要求为出发点和归宿点,时刻考虑着实际生活的种种限制,通过我们小组内部不断探讨研究,一个个解决遇到的问题,最终做出一个比较完美的作品。或许,我们我们在期末考试中都取得了不错的成绩。然而在真正遇到课程设计这样一个比较实际的问题面前,很多人却傻了眼。似乎,我们无从下手。因为我们得到的信息太少了。我们有太多的不懂。

22、所以,我们小组借助于各类图书,因特网,收集各类资料,不断研究我们小组的任务,细化其中的要求,一步步抽丝剥茧,渐渐地,我们就有了眉目,对整个过程也有了较为清晰的理解。此外,在这次课程设计中,我更深刻的体会到了一点。就是即学即用,很多时候,我们都会面临新的疑问,新的知识。这个时候不是我们抱怨的时候,只有我们静下心来,钻研相关的资料,学习其中的知识,并结合自己所面临的问题,有针对性的去解决它,往往这个时候,我们会有意想不到的效果。是的,以后当我们走进社会,我们会遇到形形色色的问题,而这些我们是不可能在学校里就学会了的。所以这样一种思维方式,一种学习方式正是我们所需要的。我感触比较深的另外一点是老师们

23、对报告的高要求。一开始的时候,本以为只要我们真正的把问题研究透了,理解了,报告随便写写就无所谓了。然而这又是我的一个错误,因为报告正是我们设计成果的一个展示,我们不是要口述告诉老师,而是要通过我们的报告将我们的想法完整正确的呈现在老师面前。这就要求我们必须尽可能把我们要表达的意思完整地在报告里表达出来。此外,由于设计报告有一个规范的格式,我们也必须遵循,并且是严格的遵循,容不得我们一点随便。可能在学校里,老师们对我们比较宽松,做的不好的我们还有机会拿回去修改,然而在以后的职场中,老板就不会那么仁慈了。所以,我们现在就必须养成良好的习惯,遵循规范要求,做一个比较完美的报告。总之,在本次课程设计中

24、,我的收获还是比较大的。无论是设计这程序还是写课程设计报告都让我学到了好多东西,有对课本知识更加深入的了解和掌握,也有对于流程图的设计以及绘制还有word的一些用法和排版等,都让我受益匪浅。非常感谢学校和老师给我们安排了这次课程设计,不仅让我掌握了更多的知识,还让我领会到要把一件事情做好并真正有所收获还得靠自己独立地去完成并坚持不懈!我要珍惜每一次课程设计的机会,让自己不断地提高。参考文献1 周佩玲、彭虎、傅忠谦. 微机原理与接口技术(基于16位机). 北京:电子工业出版社. 2005 2 何小海、严华. 微机原理与接口技术.北京:科学出版社,20063 钱晓捷. 新版汇编语言程序设计. 北京

25、:电子工业出版社,20074 马春燕. 微机原理与接口技术(基于32位机)实验与学习辅导. 北京:电子工业出版社. 20075 黄海萍. 汇编语言与微机接口技术实验教程. 北京:国防工业出版社. 2007附录(程序代码)DATAS SEGMENT;*定义欢迎画面* NOTE1 DB 0AH,0DH,YOU ARE WELCOME!,0AH,0DH,$ NOTE2 DB 0AH,0DH,YOU CAN QUIT WITH Q OR q !,0AH,0DH,$ NOTE3 DB ,0AH,0DH,$ NOTE4 DB ,0AH,0DH,$;*定义光标位置* X_POS DB 20 ;行 Y_POS

26、 DB 20 ;列;*定义运算变量* A DW 0 ;为一个字 B DW 0;* BUF0 DB 4 DUP(0);* FORTH_SUAN DB 1 LATTER_SUAN DB 1 YUN_HAVE DB ? ;判断运算符是否输入;*定义键入的符号* AD_D DB ? ;+ SU_B DB ? ;- MU_L DB ? ;* DI_V DB ? ;/;*定义个方框* ypos dw 52 ;定义列起始位置 0-639 xpos dw 60 ;定义行起始位置 0-199 color db ? ;0-无色,1-绿,2-红,3-橘黄,4-橙红,5-紫红,7-白,8*-灰,9- 蓝,10-绿,1

27、1-青绿,12-粉红,14-黄,15-白 cnt1 DW 0 ;定义方框宽度 cnt2 DW 0 ;定义方框长度 len db 0 DATAS ENDSSTACKS SEGMENT DB 512 DUP(?) STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AXBEN1:;*设置BIOS调色板* mov ah, 00h ;设置绘图模式 mov al, 13h ;四色图形模式 13 int 10h ;Bios mov ah, 0bh ;设置调色板 mov bh, 0Fh ;调色板ID mov bl, 02h ;颜色 02 int 10h ;Bios ;*显示欢迎语句* LEA DX,NOTE1 MOV AH,09H INT 21H LEA DX,NOTE2 MOV AH,09H INT 21H CALL RECT;* CALL FRAME1 ;调用绘制方框子程序 CALL FRAME2 ;调用显示数字子程序;* MOV AH,08H ;按O键打开计算器 INT 21H CMP AL,O JZ OPEN CMP AL,o JZ OPEN CMP AL,q JZ EXIT CMP AL,Q JZ EXIT JMP BEN1;跳转至等待按

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1