《课程设计报告》word版.doc_第1页
《课程设计报告》word版.doc_第2页
《课程设计报告》word版.doc_第3页
《课程设计报告》word版.doc_第4页
《课程设计报告》word版.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

河北科技大学课程设计报告学生姓名: 学 号: 专业班级: 课程名称: 微机原理与应用 学年学期: 2 012 2 013 学年第 二 学期 指导教师: 2 0 12 年 12月 25号目 录一、 设计目的-4二、 设计原理-4 1. 原理概述2. 清屏原理3. 取系统时间4. 键盘输入单字符5. 光标定位子程序原理 6. 字符及字符串显示原理 7. 二进制转化成ASCII码原理三、 实现方法-61. 各子程序流程图2. 主程序流程图四、 实施结果-8五、 改进意见及建议-9六、 设计体会-9七、 参考资料-10八、 个人贡献-10九、 附录(源程序)-12一、 设计目的 在屏幕上显示一数字时钟,能够实现时间的校准,能够实现定时,即当定时时间到后计算机的BP喇叭给出提示。该秒表软件界面友好,即使对汇编语言一无所知的人也能轻松运行EXE程序,通过调用DOS系统的2号功能实现光标定位,调用DOS系统的2号功能实现字符的输出,通过调用DOS系统的9号功能实现字符串的输出。实现字符串的输出,展现出一个比较漂亮的秒表计数界面。二、设计原理1. 原理概述从计算机里去除系统时间,然后直接由二进制转化为ASCII码,进而在屏幕上实现输出(输出之前先进行清屏处理)。通过设置响铃条件,实现有条件的调用报时程序。并且设置一个心形图像,通过DOS系统9号功能的调用,实现字符串的输出,展现出一个比较漂亮的秒表计数界面2.清屏原理开始执行程序时为保证有一个洁净的屏幕,可使显示屏做上滚动作,使屏幕留下一片空白。要使屏幕上滚,可用汇编语句INT 10H ,入口信息为 (AH )=6 使屏幕上滚 (AL)=00上滚行数 (CH,CL)=滚动区域左上角的行、列号 (DH,DL)=滚动区域右下角的行、列号 (BG)=00 颜色的设置 3. 取系统时间 利用DOC中的21号软中断指令进行取系统时间。入口参数: AH =2CH 出口参数: CH=小时(023) CL=分钟(059)DH=秒(059)DL=1/100秒(099)4键盘输入单字符DOC中的21号软中断指令中,AH=1,输入字符的ASCII码值存入AL中,并且字符会在屏幕上显示。DOC中的16号软中断指令中,AH=0,输入字符的ASCII码值存入AL中,并且字符会在屏幕上显示。5. 光标定位子程序原理DOS显示屏为25行、80列,左上角为(0,0),右下角(18,4F)。设置光标,可调用BIOS系统,用汇编语句调用中断INT10H。入口信息为 AH=2 设置光标, BH=0 页号, DH,DL=光标的行号、列号。 6.字符及字符串显示原理通过调用DOS系统模块2只能是西安DL中的一个字符的显示。为了实现字符串的显示,调用其9号模块功能,其入口信息为(AH)=9 显示字符串的功能模块 (DS:DX) 指向字符串的首地址,要求字符串以字符 $结尾。7. 二进制转化成ASCII码原理将AX中存的两位十进制数除以10,商存进AL,余数存进AH,然后将AX和3030H相加,之后将AL存进设置好的缓冲区BX中,将AH存进BX+1中。最后输出BX中的值,就会显示两位十进制数。三、实现方法1.各子程序流程图清屏子程序响铃子程序CX左上角行号列号 AL BELL的ASCII码07H DX 右下角行号列号DL ALBX 清屏区颜色类型调用INT 21H显示单个字符 AL 清屏区总行数 返回主程序调用INT 10H 中的6号功能实现清屏返回主程序返回主程序 2.主程序流程图 开始 调 用清屏子程序 取系统时间设置响铃条件 不符合转P0,调用响铃子程序 符合转P1,调用ASCII子程序将时间存入BUFF缓冲区 将时间输出显示在屏幕上键盘输入字符 调用延时子程序将mess1,mess2字符串输出在屏幕上 Q/q 退出DOS界面 C/c调用时间校准子程序四、实施结果1. 源程序运行结果图按下c或C键显示提示符“please input the new time(hh:mm:ss):”,并设置时间2. 源程序代码(见附录)五、改进意见及建议1.定时的时间是在程序中设定好的,可以更改为从屏幕上输入的随意设定的任何时间 2.表示日期的年、月、日是手动完成的,而不是取自系统时间。若加入适当程序使日期是取自系统时间的,就更完美了。六、设计体会 “纸上得来终觉浅,绝知此事要躬行”,这是本次课程设计我最大的体会。程设计报告的最终完成,我们经历了很多曲折,也收获了很多,下面具体阐述一下。1.图案的设计 为了能得到一个比较漂亮的界面显示,我们在图案设计上花了不少功夫。很多次设计的图案很漂亮,可是搬到程序里面运行时却是一堆乱码,让我们很沮丧.还有要把秒表的显示正好调到图案正中央,我们也经过了多次调试。在这个过程中,我们学会了耐心,去除浮躁,平心静气的把程序一遍遍的修改、调试,臻于完美。2.程序调试 程序调试前,我们检查了好几遍。可是调试时还是错误百出。尤其是“;”的使用,一定要区分英文输入的分号和中文分号的区别,还有字符串结束时一定要加$,否则会出现乱码。这些都是调试中发现的问题,只有注意细节,细心,才能顺利完成任务。通过设计过程,让我熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。独立设计题目的总体设计方案、编程、软件硬件调试等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。我加深了对课汇编语言的理解。七、参考资料1. 微型计算机原理及应用技术 朱金钧 麻新旗 等编著 机械工业出版社2微机原理与接口技术 宋杰 汪志宏 江敏 编著 机械工业出版社3微型计算机技术及应用 戴梅萼 史嘉权 编著 清华大学出版社4微型计算机系统原理及应用 周明德 编著 清华大学出版社八、个人贡献在本次课设实现过程中,我主要负责重新设定时间,和一部分程序的解释,主要有以下程序: mov ah,1 int 16h ;从键盘输入单个字符 cmp al,c je Cor cmp al,C ;若是C或c则转移到Cor je Cor CMP AL,q JZ Quit cmp al,Q jz Quit ; 若是Q或q则转移到Quit jmp displayCor: call correctcorrect proc ;重新设定时间子程序 call input mov ch,hor mov cl,min mov dh,sec and dl,0h mov ah,2dhMOV AL,00H int 21h jmp start retcorrect endpinput proc ;键盘输入设定时间子程序push ax push bxpush cxpush dxpushfmov dx,offset tips ;输出提示字符串mov ah,09hint 21hmov dx,offset BUFF ;通过键盘往 BUFF 缓冲区填入字符mov ah,0ahint 21hand dx,0hlea bx,BUFFinc bxinc bxmov dh,bxsub dh,30h ;将小时的十位数字的ASCII值转化成数字后存入dhinc bxmov dl,bxsub dl,30hmov cl,10mov al,dhmul cladd al,dlmov ch,almov hor,al ;将输入的小时存入horinc bxinc bxmov dh,bxsub dh,30h ;将分钟的十位数字的ASCII值转化成数字后存入dhinc bxmov dl,bxsub dl,30hmov cl,10mov al,dhmul cladd al,dlmov cl,almov min,al ;将输入的分钟存入mininc bxinc bxmov dh,bxsub dh,30h ;将秒的十位数字的ASCII值转化成数字后存入dhinc bxmov dl,bxsub dl,30hmov cl,10mov al,dhmul cladd al,dlmov dh,almov sec,al ;将输入的秒钟存入secpopf pop dx pop cxpop bxpop ax retinput endp九、附录(源程序) *数据段*data segment ;数据段开始mess1 db ,0ah,0dh db Electronic Clock ,0ah,0dh db ,0ah,0dh db Made By: WenRui & XueHan ZuoPeng & ZhongYuan ,0ah,0dhdb ,0ah,0dh db * * ,0ah,0dhdb * * * ,0ah,0dhdb * Merry * ,0ah,0dhdb * Christmas * ,0ah,0dhdb * D a y * ,0ah,0dhdb * ! * ,0ah,0dhdb * * ,0ah,0dhdb * ,0ah,0dh db ,0ah,0dh db Press Q or q button to exit ,0ah,0dhdb ,0ah,0dhdb Press c or C to input The Fixed Time ,0ah,0dhdb ,0ah,0dhdb 2 0 1 3 / 0 1 / 0 3 ,0ah,0dh db ,0ah,0dh,$ tips db Please input the new time (hh:mm:ss): ,0dh,0ah,$mess2 db The time is:,0ah,0dh,$BUFF db 40 ;定义缓冲区 db ? db 40 dup (?)hor dbmin db ?sec db ?fg db 0 data ends ; 数据段结束 *堆栈段*stack segment ;堆栈段开始 db 100 dup(?)stack ends ;堆栈段结束 *代码段-主程序*code segment ;代码段开始 assume cs:code,ss:stack,ds:data start: call clear ;调用清屏子程序 display: mov ax,data mov ds,ax mov bx,offset BUFF mov ah,2ch int 21h ;取出DOS保存的时间CMP CH,21JNE P1CMP CL,30JNE P1CMP DH,27JE P0JMP P1 ;设置响铃条件P0: CALL BELL ;调用响铃子程序P1: mov al,ch ;将小时存入al中 mov ah,0 call ASCII ;将小时转化为ASCII值 inc bx mov al,: mov bx,al inc bx mov al,cl mov ah,0 call ASCII ;将分钟转化为ASCII值 inc bx mov al,: mov bx,al inc bx mov al,dh mov ah,0 call ASCII ;将秒转化为ASCII值 inc bx mov al,$ mov bx,al push bx mov ah,2 mov bh,0 mov dh,20 mov dl,48 int 10h ;设置光标位置 pop bx lea dx,BUFF mov ah,9 int 21h ;输出时间 push bx mov ah,2 mov bh,0 mov dh,0 mov dl,0 int 10h ;设置光标位置 pop bx lea dx,mess1 mov ah,9 int 21h ;输出字符串mess1中的字符 push bx mov ah,2 mov bh,0 mov dh,20 mov dl,21 int 10h ;设置光标位置 pop bx lea dx,mess2 mov ah,9 int 21h ;输出字符串mess2中的字符 call delay1 ;调用delay1子程序 mov ah,1 int 16h ;从键盘输入单个字符 cmp al,c je Cor cmp al,C ;若是C或c则转移到Cor je Cor CMP AL,q JZ Quit cmp al,Q jz Quit ; 若是Q或q则转移到Quit jmp display Quit: mov ah,4ch int 21h ;跳出DOS界面 ret Cor: call correctASCII PROC NEAR ;二进制转化为ASCII的子程序 PUSH CX MOV AH,0 MOV CX,10D DIV CL ADD AX,3030H MOV BX,AL INC BX MOV BX,AH POP CX RETASCII ENDPclear proc near ;清屏子程序 push ax push bx push cx push dx mov ax,0600h mov bx,003eh sub cx,cx mov dx,0000h int 10h pop dx pop cx pop bx pop ax retclear endpdelay1 PROC ;延迟子程序 MOV DX,04ffh LP: XOR CX,CX a: NOP LOOP a DEC DX JNZ LP RETdelay1 ENDPcorrect proc ;重新设定DOS时间子程序 call input mov ch,hor mov cl,min mov dh,sec and dl,0h mov ah,2dhMOV AL,00H int 21h jmp start retcorrect endpinput proc ;键盘输入设定DOS时间子程序push ax push bxpush cxpush dxpushfmov dx,offset tips ;输出提示字符串mov ah,09hint 21hmov dx,offset BUFF ;通过键盘往 BUFF 缓冲区填入字符

温馨提示

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

评论

0/150

提交评论