微机原理课程设计(秒表+).doc_第1页
微机原理课程设计(秒表+).doc_第2页
微机原理课程设计(秒表+).doc_第3页
微机原理课程设计(秒表+).doc_第4页
微机原理课程设计(秒表+).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

微机原理课程设计目 录一、 设计任务-3二、 设计原理-32.1 原理概述2.2 延时原理2.3 显示字符及字符串原理2.4 压缩BCD码转为ASCII原理2.5 动态扫描键盘原理三、 设计流程图-43.1 主程序流程图3.2 各子程序流程图四、 源程序运行结果- 7五、 程序调试-8六、 心得体会-9七、 参考书目-9八、 附录(源程序代码)-10一、设计任务1. 具有秒和百分之一秒计时并显示于图案中央2. 具有启、停功能3. 具有复位功能4具有记忆功能5具有整分报时功能二、设计原理2.1 原理概述通过调用INT 21H的8号功能实现控制字符的输入,通过调用延时程序实现百分之一秒的定时,通过调用INT 10H 的2号功能实现光标定位,调用INT 21H 的2号功能实现字符的输出,通过调用INT 21H 的9号功能实现字符串的输出。2.2 延时原理 本设计利用软件实现延时,即通过可控制的循环来占用CPU的时间来实现延时。延时函数名为TIME,运用内外两层循环,外循环由AX中的数值来控制,内循环有CX中的值来控制。实现不同延时的控制,通过反复比较调试,确定AX的值为0EFH,CX的值为0FFFFH。2.3 显示字符及字符串原理 整个屏幕可显示25行、80列字符,屏幕左上角字符位置为0行0列,右下角字符位置为24行79列,对应于十六进制为:左上角为(0,0),右下角为(18,4F)。定位光标用INT 10H 的2号功能,DH中存行号,DL中存列号,BH中存页号。显示字符用INT 21H的2号功能,DL中存放要显示字符的ASCII码。显示字符串用INT 21H的9号功能,DX中存要显示的字符串的偏移地址。2.4 压缩BCD转为ASCII原理先将压缩BCD码的高4位取出,右移四位后,与30H相或,存到相应内存单元;然后将低4位取出,与30H相或,存到下一内存单元。2.5 动态扫描键盘原理 运用INT 21H的8号功能来实现动态扫描键盘。如果有键按下,则相应的键值的ASCII码被存到AL中。判断AL中的数值,若不是控制字符,则继续循环,从而实现动态扫描键盘。一、程序流程图3.1主程序流程图3.2 子程序流程图四、源程序运行结果图 4.1 程序执行效果图五、程序调试1、主程序的调试 本方案的设计思路是先写好各子程序再写主程序,因此必须明确何时调用子程序,否则会出现逻辑错误。何种寄存器需要保护,取决于子程序在主程序中的位置以及该寄存器在主程序中的作用,要尽量少用堆栈操作以提高效率。主程序调试的另一重要内容是如何实现控制字符的各种功能。我们组使用DOS系统功能调用的8号功能,该功能将键盘输入存入AL寄存器,通过判断寄存器中是否为控制字符来判断是否有字符输入,若AL中为随机数则无输入。主程序的控制字符为大写字符,一开始我们没有用大写字母锁定,按什么键都不能启动,以为程序有问题,几经修改,浪费了很多时间。主程序使用压缩BCD码做的加法,再用DAA进行调整,这时要注意DAA只能对AL中的结果进行调整,因此只能用AL做加法,再将数据传送过去。2、延时子程序的调试 延时程序的时间并没有经过精确计算,因此只能用试探法逐渐增加或减小AX值。我们组是每十秒与标准时间(手机秒表)比较一次,程序走的比较快因此应逐渐增加AX值,最终选定AX= 0EFH 。当然了人总有一定的反应时间,不可能做到十分精准,但是在误差允许范围之内就可以了。3、图形显示程序的调试 我们组的图形显示使用了宏调用,主要因为它可以方便的传递参数,图形显示需要大量重复性程序使用宏定义可以节约编程时间,又可以让程序更简洁。调试的主要任务是使图形更美观,通过数出各点的行数列数就可以方便地确定某点的位置和字符。需要改动时只需修改宏调用的参数。4、清屏子程序调试 通过阅读微型计算机原理与接口技术我了解到,可以使用BIOS中断调用中10H号中断的6号功能实现向上滚屏,同时可以设置颜色。由于书中没有具体指明颜色代号,只能通过从01H开始依次尝试。经过多次调试最终确定图形使用0CH红色,字幕使用0BH绿色,记忆区使用0DH紫色。5、记忆功能子程序调试 记忆功能的基本原理很简单就是每次复位时都调用一次记忆子程序,将当前值记录下来,共可记录10组数据,这样方便了多次计时。该程序的调试主要是通过对屏幕的设计,使的每满十次记忆后可以顺利将原数清空。基本原理与清屏功能相同,就是将记忆区的起始行列号和终止行列号准确的送到INT 10H的入口参数。6、响铃功能的调试 响铃功能结构简单但有一个关键点,就是不能将响铃的ASCII码直接送到DL,只能通过AL转送。六、心得体会1掌握几种实用工具的重要性 汇编语言的编译、链接工具都很简单,适用于小程序的编辑和调试,遇到复杂的程序就应使用更高级的工具,网上有很多语言工具免费使用,画流程图时,我却还用Windows画图工具,效率低且不准确,以后要多学习,掌握更多的方法才能提高效率。2、要熟悉课本并不断深入探索 课本的附录有很多功能,大家往往只关注考试要求的内容,对其他的实用信息不能深入挖掘。本程序的清屏功能就是从“BIOS中断调用表”中找到的,经过多次尝试才确定了我们需要的功能。以后学习时遇到问题,也可以用软件实现来验证自己的猜测。微机原理是一门实用性很强的学科,要加强理论与实践的联系才能学的更透,理解的更深。3、做事要认真细心、一丝不苟 将源程序敲入电脑,常会有错字漏字,要反复比较才能保证不出错。刚开始我们的宏定义在结尾时加了宏名称,由于过程定义结束时都是要加过程名,我就理所当然的认为宏定义也要加名称,在数据传送时直接传送容易出现类型不匹配问题,通过AL传可以避免。字符串结束时一定要加$,否则会出现乱码。这些都是调试中发现的问题,只有注意细节,才能顺利完成任务。总结:通过本次课程设计,我加深了对课本知识的理解,同时熟练掌握了汇编语言的编辑、调试工具。在以后的学习生活中还要继续保持严谨认真的科学态度,保持不断尝试和探索的耐心,保持勇于解决问题的决心。不断地向老师、同学们学习、交流,分享吸取他们的经验,更好的提高自己。七、参考书目1 张永祥微型计算机原理 中国电力出版社 2005年8月2 武新 汇编语言程序设计 武汉理工大学出版社 2006年7月3 马力 8086汇编语言程序设计 机械工业出版社 2006年9月4 杨季文汇编语言程序设计教程 清华大学出版社 2008年3月八、附录(源程序)DIS MACRO LOCAT,CODE ;设置图形显示宏定义 PUSH DX PUSH BX PUSH AX MOV DX,LOCAT ;设置光标位置 MOV BH,00 MOV AH,02H INT 10H MOV DL,CODE ;输出字符串 MOV AH,02H INT 21H POP AX POP BX POP DX ENDM DAT SEGMENT ;设置数据段BUF DB INPUT START RESET END CONTINUE $ ;设置功能说明BUFFER DB 10 DUP(?) ;定义缓存区TIP DB M E M O R Y$ ;定义记忆提示NUM DB 1 LOD EQU 0929HDAT ENDSCOD SEGMENT ;定义代码段START PROC FARASSUME CS:COD,DS:DAT MOV AX,DATMOV DS,AXMOV DX,OFFSET BUF ;输出功能说明MOV AH,09HINT 21HCALL DISMER ;记忆区提示符置光标MOV DX,OFFSET TIP ;输出记忆提示字符MOV AH,09HINT 21HCALL CLR ;图形区清屏并设置颜色CALL CLRDAT ;秒表数字区清屏并设置颜色CALL CLRMER ; 记忆区清屏并设置颜色DIS 0419H, ;通过宏调用显示图形DIS 0517H,DIS 0715H,DIS 0914H,DIS 0B14H,DIS 060EH,_DIS 0710H,_DIS 0812H,_DIS 0913H,_DIS 0A14H,_DIS 0915H,_DIS 0816H,_DIS 0718H,_DIS 061AH,_DIS 071CH,*DIS 081EH,*DIS 091FH,*DIS 0B20H,*DIS 0D21H,*DIS 0F21H,*DIS 1120H,*DIS 131FH,*DIS 141EH,*DIS 151DH,*DIS 161BH,*DIS 1719H,*DIS 1717H,_DIS 1616H,_DIS 1514H,_DIS 1612H,_DIS 1711H,_DIS 170EH,*DIS 160CH,*DIS 150BH,*DIS 140AH,* DIS 1309H,*DIS 1108H,*DIS 0F07H,*DIS 0D07H,*DIS 0B08H,*DIS 0909H,*DIS 080AH,*DIS 070CH,*DIS 0C12H,_DIS 0C13H,_DIS 0C14H,_DIS 0C15H,_DIS 0C16H,_CALL GO ;设置初植LOAD: CALL IOSET ;光标定位CALL HALT ;等待输入MOV DX,0MOV CH,0AGAIN: CALL TIME ;调用延时程序 MOV AL,DL ;百分之一秒加一ADD AL,1DAAJC NEXT1 ;满一百进位MOV DL,ALJMP DISPY ;不满一百显示NEXT1: MOV DL,0MOV AL,DH ;秒位加一ADD AL,1DAAMOV DH,ALCMP AL,60H JNE DISPYCALL BELL ;满60提示铃声并进位MOV DH,0MOV AL,CH ;分位加一ADD AL,1DAAMOV CH,ALCMP AL,60HJNE DISPY ;满60清零MOV CH,0DISPY: ;显示电子秒表MOV BX,OFFSET BUFFER ;取缓冲区地址 MOV AL,CHCALL TRAN ;将分位转变为ASCII码并送缓冲区INC BXINC BXMOV AL,DH ;将秒位转变为ASCII码并送缓冲区CALL TRANINC BXINC BXMOV AL,DL ;将百分之一秒位转变为ASCII码并送缓冲区CALL TRANPUSH BXPUSH CXPUSH DXCALL IOSET ;光标置位MOV DX,OFFSET BUFFER ;输出缓冲区字符串MOV AH,09HINT 21HPOP DXPOP CXPOP BXMOV AH,0BH ;等待键盘输入INT 21HAND AL,ALJZ AGAINMOV AH,08HINT 21HCMP AL,R ;判断输入是否为RJNE NEXT2 ;不是则判断是否为ECALL MEMORY ;若是则调用记忆功能保存当前值MOV CH,0 ;初值清零重新计数MOV DL,0MOV DH,0JMP AGAINNEXT2:CMP AL,E ;判断是否为E JNE AGAIN ;不是则继续计数NEXT3: ;若是则暂停计数MOV AH,08HINT 21HCMP AL,C ;判断是否输入CJE AGAIN ;若是则继续计数CMP AL,R ;判断是否输入RJNE NEXT3 ;若不是则继续等待输入CALL MEMORY ;若是则调用记忆功能CALL GO ;重新设置初值等待重新启动CALL IOSETMOV DX,OFFSET BUFFERMOV AH,09HINT 21HJMP LOADRETSTART ENDPGO PROC ;设置初值子程序MOV BX,OFFSET BUFFERMOV AL,0MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,:MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,:MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,0MOV BX,ALINC BXMOV AL,$MOV BX,ALRETGO ENDPIOSET PROCMOV DX,0F10HMOV BH,00MOV AH,02HINT 10HRETIOSET ENDPHALT PROCMOV AH,08HINT 21HCMP AL,SJNE HALTRETHALT ENDPTRAN PROC ;十六进制转ASCII码子程序MOV CL,ALSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HMOV BX,ALINC BXMOV AL,CLAND AL,0FHOR AL,30HMOV BX,ALRETTRAN ENDPTIME PROC ;延时子程序PUSH CXPUSH AXMOV AX,0EFHMOV CX,0FFFFHA1:DEC AXJNZ A2JMP A3A2:DEC CXJNZ A2JMP A1A3:POP AXPOP CXRETTIME ENDPMEMORY PROC ;记忆功能子程序PUSH DXPUSH BXPUSH AXCMP NUM,10JE X2ADD NUM,1X1:MOV DX,LODADD DH,NUMMOV BH,00MOV AH,02HINT 10HMOV DX,OFFSET BUFFERMOV AH

温馨提示

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

评论

0/150

提交评论