欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    微机原理课程设计报告.docx

    • 资源ID:15955055       资源大小:79.54KB        全文页数:16页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理课程设计报告.docx

    1、微机原理课程设计报告微机原理课程设计报告电子表程序设计。(一)设计任务:用汇编语言设计一电子表程序,要求:!(1)实现秒、分、时的计时,并显示于屏幕中央(2)能够校时(3)能够半点、整点报时(二)设计原理该程序主要由三部分构成:时间设置、延时程序和时钟显示。(1)时间设置输入初始时间先调用DOS操作系统模块2,在显示屏上显示:,再调用DOS操作系统模块10,提示输入初始时间。由键盘输入的时间以字符串形式存放在已定义的存储器缓冲区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓冲区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放置在寄存器CH、DH、DL中。暂

    2、停计时按Pause Break键即可暂停计时,再按下任意键恢复计时重新输入时间在程序运行时,可按下Esc键重新输入初始时间,此时程序检测到Esc(ASCII码为1BH)被按下,返回步提示重新输入时间。以上两步可实现校时的功能。半点、整点报时程序运行时,分钟值每次改变都需要与30、60比较,若相等,则调用DOS操作系统模块7使计算机响铃并在时间后显示 -。同时若分、秒值为60则需进位,时为24时进位,保证时钟程序的正确性。(2)延时程序计算机在执行指令时,各种操作都按指令执行,但在像程序控制器那样由计算机发出指令控制外部设备是,由于外部设备所具有的机械惯性或其他原因,需要在计算机发出指令后有规律

    3、地延迟或等待一段时间。这类延时,可以用硬件延时来完成,单用软件来实现也是一种方便和常用的方法。计算机执行每一条指令,虽然很快,但还是需要一段时间的。因此从理论上讲,可在程序中加一些与程序无关的指令去完成,要计算指令执行的时间,又不能过多的为了延时而增加编制程序的工作量。因此,编制延时程序,应尽量采用较少的指令,节约存储器,并且不能对主程序造成影响。每条指令执行时间的长短,是以计算机的时钟周期为基本单位的。当CPU采用的时钟频率一定时,时钟周期也为定值。因此可根据时钟周期的多少来计算执行指令所需的时间。完成本设计任务使用的计算机采用Intel Pentium 4处理器,主频为,时钟周期约为。通过

    4、时间约1s的长延时累加,并以时、分、秒的形式显示出来,就可以编写出一个时钟程序。(3)时钟显示设置光标位置子程序IOSET一般的显示屏可显示25行、80列字符,屏幕左上角字符位置为0行0列,右下角字符位置为24行79列,对应于十六进制为:左上角为(0,0),右下角为(18,4F)。设置光标,可调用BIOS系统,用汇编语句调用中断INT 10H,其入口信息为(AH)=2 要设置光标;(BH)=0 页号;(DH,DL)=( 0CD,24) 置光标于行、列数,本程序要求置光标于屏幕中央,即为12行36列(十进制)。清除屏幕子程序IOCLR当开始执行程序时,总希望有一个洁净的屏幕,此时可使显示屏幕作上

    5、滚动作,使屏幕留下一片空白,也可以清楚屏幕的一部分,是这部分空白留作它用。要使屏幕上滚,可用汇编语句调用中断INT 10H,其入口信息为((AH)=6 是屏幕上滚;(AL)=00 上滚行数,若(AL)=0,则整屏为空白;(CH,CL)= 滚动区域的左上角行列号,本程序中(CX)=0;(DH,DL)= 滚动区域的右下角行列号,本程序中(DX)=184FH;(BG)= 空白行属性,当(BH)=7时,为正规属性(黑白)。屏幕显示程序DISPY显示屏幕作为常用的输出设备,可用来显示运算的中间结果或最终数据,也可用来显示表示正确完成或检验出的错误信息。为了显示表示正确或显示错误的信息,必须在数据段中以字

    6、符串形式将提示信息加以定义,然后由显示器在屏幕上加以显示。DOS系统中的显示功能模块号为2,每次调用仅能显示DL中的一个字符。为显示字符串,可调用DOS系统另一功能,用汇编语句调用中断INT 21H,其入口信息为(AH)=9 显示字符串的功能模块号;(DS:DX) 指向字符串的首地址,要求字符串以字符$结尾。(三)框图(四)程序清单DAT SEGMENTRING DB -$FLAG DB 0BUFFER DB 10 DB DB 10 DUP ()DAT ENDSSTA SEGMENT PARA STACK STACKSTAPN DB 100 DUP ()TOP EQU LENGTH STAPN

    7、STA ENDSCOD SEGMENTSTART PROC FAR| ASSUME CS:COD,DS:DAT,SS:STA MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AX,OFFSET TOP MOV SP,AXMAIN: ;主程序 PUSH BX PUSH CX PUSH DX CALL IOCLR ;清除屏幕 CALL IOSET ;设置光标位置 POP DX POP CX POP BX : MOV DL,: MOV AH,2 ;显示字符:,提示输入时间 INT 21H MOV DX,OFFSET BUFFER MOV AH,10 INT

    8、 21H MOV BX,OFFSET BUFFER+2 CALL TRAN1、 INC BX INC BX CALL TRAN1 INC BX INC BX CALL TRAN1 MOV BX,OFFSET BUFFER+2 MOV AL,BX。 CALL MUL10 MOV CH,AL INC BX INC BX MOV AL,BX CALL MUL10 MOV DH,AL INC BX INC BX MOV AL,BX CALL MUL10 MOV DL,ALAGAIN: MOV AL,0 MOV FLAG,AL MOV AH,01H ;判断是否键盘有无输入,若有则重新置初值、 INT 1

    9、6H CMP AL,1BH JZ MAIN CALL TIME MOV AL,DL ADD AL,1 DAA MOV DL,AL CMP AL,60H JNE DISPY MOV DL,0 MOV AL,DH ADD AL,1 DAA MOV DH,AL CMP AL,30H ;与30比较 JNE NEXT MOV AL,1 MOV FLAG,AL JMP DISPYNEXT: CMP AL,60H ;与60比较 JNE DISPY MOV AL,1 MOV FLAG,AL: MOV DH,0 MOV AL,CH ADD AL,1 DAA MOV CH,AL CMP AL,24H JNE DI

    10、SPY MOV CH,0DISPY: MOV BX,OFFSET BUFFER MOV AL,CH CALL TRAN2 INC BX MOV AL,: MOV BX,AL INC BX, MOV AL,DH CALL TRAN2 INC BX MOV AL,: MOV BX,AL INC BX MOV AL,DL CALL TRAN2【 INC BX MOV AL,$ MOV BX,AL PUSH BX PUSH CX PUSH DX CALL IOCLR CALL IOSET MOV DX,OFFSET BUFFER MOV AH,9 INT 21H MOV AL,FLAG ;若标志位为1

    11、,则报时,并显示 - CMP AL,1 JNE NEXT1 MOV DX,OFFSET RING MOV AH,9; INT 21H MOV AH,02 MOV DL ,07H INT 21HNEXT1: POP DX POP CX POP BX JMP AGAIN RETSTART ENDPTRAN1 PROC ;ASCII码转BCD码 MOV AL,BX AND AL,0FH MOV BX,AL INC BX% MOV AL,BX AND AL,0FH MOV BX,AL RETTRAN1 ENDPMUL10 PROC ;BCD码转压缩BCD码 ADD AL,AL DAA? MOV CL,

    12、AL ADD AL,AL DAA ADD AL,AL DAA ADD AL,CL DAA MOV CL,AL INC BX MOV AL,BX ADD AL,CL RETMUL10 ENDP TRAN2 PROC ;压缩BCD码转ASCII码 MOV CL,AL SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 OR AL,30H MOV BX,AL INC BX MOV AL,CL AND AL,0FH OR AL,30H MOV BX,AL RETTRAN2 ENDPTIME PROC ;延时子程序 PUSH CX PUSH AX MOV AX,04FFFHGOON2

    13、: MOV CX,0FFFFHGOON: DEC CX JNZ GOONGOON1: DEC AX CMP AX,0 JNE GOON2 POP AX POP CX RETTIME ENDPIOCLR PROC ;清除屏幕子程序 MOV AX,0600H MOV CX,0000H MOV DX,184FH MOV BH,07 INT 10H RETIOCLR ENDPIOSET PROC ;设置光标位置 MOV DX,0C24H MOV BH,00 MOV AH,02 INT 10H RETIOSET ENDPCOD ENDS END START(五)程序调试(1) 源代码输入后,无法顺利汇编

    14、成OBJ文件,首先检查程序,看是否存在字符输入错误或语法错误,并借助EMU8086 软件(版)检查,经过反复调试终于顺利汇编、连接成功。(2)程序开始运行后,无法实现清屏幕,正确调用IOCLR清楚屏幕子程序后问题得以解决。(3)走时不准确,由于本程序是利用计算机软件延时来实现计时的,时间快慢与计算机主频有关,计算机主频为,设置了两重循环,根据主频及延时程序大致计算延时的数值,并根据调试结果相应的更改数值大小。(4)校时程序,自己编不出能校时的程序,引用网上查找到的一个中断代码,加入到程序中,可以实现时间调校。(5)报时程序:一开始无从下手,通过分析产生报时的条件及时间,设置了一个FLAG标志字

    15、,很好地解决了报时问题。(六)运行结果(截图)(1)一般状态(2)半点报时(3)整点报时(七)体会首先,由于程序较长,寄存器运用时要注意不能重复,调用或中断程序时要注意使用PUSH和POP命令保存当前地址,运用堆栈来完成。在调试过程中,我充分感受到了断点保护的重要性,有时不能想当然,犯经验主义的错误,要切实分析中断程序中是否使用了当前的寄存器,如果有一定要加以保护,否则很可能会出现程序的错误甚至导致系统崩溃。在调试中就曾经出现过乱码现象,刚开始没有意识到是保护问题出现了差错,经过使用DEBUG程序才找到了问题的所在;还多次出现死机现象,大大影响了工作的效率。同时通过这次调试程序,我切实感觉到了

    16、注释的重要性,如果一味的写程序,很容易出现混乱,导致事后自己都不知到自己编的代码是什么意思,最好一边写代码一边加注释,这样在调试及查错时效率会比较高。程序一定要有备份,在汇编以前最好备份,以免在汇编是出现死机或其他以外状况,造成源代码的丢失。在调试程序时,应先把最基本的计时功能程序调试成功,然后在此基础上再慢慢加入各种功能,每一次更改程序都存档,每次都在调试成功后在去添加新的功能,否则会出现错误的交叉不便于调试找出错误。这次调试程序,我还认识到我们应该充分利用课本以外的知识,课本上的知识以教学任务为主,但是在实际工程中会遇到其他很多课本上与不到的问题,比如调用键盘中断校时使用的INT 16H以

    17、及清屏和设置光标程序就是我们在课内没有学到的,我们通过查阅微型计算机上机程序以及通过网络寻找到了一些有用的代码很好的解决了这些问题。在课程设计验收的时候,老师的提问让我发现了该程序的一些缺点。例如在输入非法数据如24:60:65时,程序应该做出相应的判断去屏蔽这些错误,由于时间仓促这些问题没有很好地避免。此外,如果能在程序开始时先提示输入计算机的主频并自动选择合适的延时程序,电子表在不同主频的计算机上计时快慢不一样的问题将能够得到解决。这些是我在今后的编程中应该探索和考虑的问题。通过这次编写以及上机调试,我充分感受到了上机调试的重要性。平时学习中只是用手写代码,而很少上机运行,这样很容易出现错误,只有能够调试成功的程序才能算是正确的。调试成功之后还应通过多次实验发现程序的不足,力争消除隐含的错误。这次课程设计很好地锻炼了我的编程特别是上机调试能力。调试程序比编写程序更加繁琐,以后的编程中要尽量在首次编写时就争取减少错误,特别是逻辑上的错误,这样在上机调试时会容易许多。最好在编写程序前先画好流程图,这样在编写程序时思路清晰,调试时也容易找出其中的错误。最后感谢老师给予的指导和帮助!(八)参考书:微型计算机原理 山东工业大学 张荣祥 主编 中国电力出版社微型计算机原理及接口技术 山东大学 杨志坚 主编 中国电力出版社


    注意事项

    本文(微机原理课程设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开