微机原理与接口技术课程设计显示系统时间的程序_第1页
微机原理与接口技术课程设计显示系统时间的程序_第2页
微机原理与接口技术课程设计显示系统时间的程序_第3页
微机原理与接口技术课程设计显示系统时间的程序_第4页
微机原理与接口技术课程设计显示系统时间的程序_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1成都学院微机原理与接口技术课程设计题目: 显示系统时间的程序学生姓名: 李凯 学 号: 201420314109 院 系: 信息工程与科学学院 专 业: 电气自动化技术 指导教师: 杨炷中 2015 年 12 月 23 日 2目 录1 设计的目的要 求 .11.1 设计目的 .11.2 设计任务 .21.3 具体要求 .22任务原理分析 .22.1 任务总体分析 .22.2 子程序分析 .32.2.1 子程序 1 .32.2.2 子程序 2 .42.2.3 子程序 3 .72.3 拓展设计及功能说明 .92.4 程序设计的主流程图 .93 方案比较 .103.1 方案 1.103.1.1 原理说明 .103.1.2 相关理论知识 .113.1.3 方案 1 的流程图 .123.2 方案 2.133.2.1 原理说明 .134 程序的调试过程 .145 调试过程中的问题 .166 心得体会 .17参考文献 .18附录 .193显示系统时间的程序1 设计的目的要求1.1 设计目的1. 掌握中断的使用方法。2. 掌握 BIOS 系统功能调用。3. 掌握基本的显存读写技术。4. 学会用汇编语言编写一个较完整的实用程序, 培养自己的动手操作能力。5 . 学习程序设计的基本思路和方法,编程、调试、撰写报告等。1.2 设计任务采用汇编语言设计一个显示系统时间程序,在屏幕上以“时:分:秒”的形式显示本机系统的时间。按 Q 退出程序。1.3 具体要求(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5) 调试记录及结果分析(6) 总结4(7) 参考资料(8) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图2任务原理分析2.1任务总体分析本课设的设计任务要求在运行时,在屏幕上以“时:分:秒”的形式显示本机系统的时间,并且按 Q 退出程序。由此可知,首先定义光标显示界面,然后调用 BIOS 中断,读取系统时间,并将调用的用二进制表示的时间数转换成 ASCII 码,并将时间数存入显存区,最后将存在系统内存区的时间用字符串的形式显示出来。由于获取了的系统时间不会自动刷新,所以我们要设计成循环的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可输入“Q”即可退出。如果用图形方式显示效果会更好,而且需注意设置显示时候的背景颜色。在本课程设计中,主要需要三个子程序来完成。2.2子程序分析2.2.1子程序 1子程序 1 的功能就是设置光标位置。其基本原理是:在子程序 1 中,我用到了显示器驱动程序(INT 10H)中 AH=2 的功能。AH=2 的功能是设置光标位置,入口参数:(DH,DL)=行、列;BH=页号(图形模式为 0) 。为了使显示的时间在 DOS 屏幕中的中间显示,DX 设置为 0A24H,即DH=0AH,DL=24H,就是在 0AH 行,24H 列。如果想改变时间显示的位置,只要改变DX 的数值就可以达到目的。由于在第零页中定位,可用 SUB BH,BH 来完成此操作。子程序 1 的源程序如下:MOV BX,005EH5MOV AX,1301HINT 10H ;设置光标位置MOV AH,02HMOV DH,0AHMOV DL,24H ;dh 显示行(x 坐标);dl 显示列(y 坐标)MOV BH,0 ;页码为 0INT 10H子程序 1 的流程图如图 1 所示。开始调用 I N T 1 0 A H = 2 号中断功能设置光标位置各寄存器内容恢复结束各寄存器内容保护在第 0 页中定位图 1 子程序 1 的流程图2.2.2 子程序 2子程序 2 的功能是把二进制数转换为十进制 ASCII 码输出。其基本原理是:首先要完成二进制到十进制数的转换,一般采用“除 10 取余”法来6完成,其大致过程如下:将待转换的数(在 AX 中)除以 10,得到第一个商和余数,此第一个余数就是所求的十进制数的个位;再用第一个商除以 10,得到第二个商和余数,此第二个余数就是所求十进制数的十位;重复这一过程直至商为 0,此时的余数就是所求十进制数的最高位。在内存中分配一缓冲区,用来存放以上分离出来的十进制数的每一位,然后再逐个转换成 ASCII 码,转换成 ASCII 码的过程很简单,就是给每个十进制位加上 30H 即可;最后送显示器输出。从转换的过程可以看出,先分离出来的是十进制数的低位,要后显示;后分离出来的是十进制数的高位,应该先显示。因此在编程时,我们可以利用堆栈操作中“先进后出、后进先出”的特性,当分离出各十进制位时依次入栈,要逐个转换成 ASCII 码送显示时依次出栈。 子程序 2 的流程图如下:BIN10OUT PROC ;二进制转十进制 ASCUII 码输出子程序 PUSH DIPUSH DXPUSH CXPUSH AXMOV CX,0LEA DI,TBUF ;去缓冲区首地址BIN1: PUSH CXMOV AX,DXMOV DX,0MOV CX,10DIV CX ;AX 内容除以 DX 内容,商在 AX,余数在 DXXCHG AX,DX ;交换 AX,DX 的内容ADD AL,30H ;余数加 30H,入栈准备输出MOV DI,ALINC DIPOP CXINC CX ;累加每调用一次要输出的位数7CMP DX,0 ;商和 0 比较JNZ BIN1 ;不等于 0 转 BIN1CMP CX,1 ;累加器和 1 比较JNZ BIN2 ;不等于 1 转 BIN2 MOV AH,2 ;等于 1 位,先在改位前输出 0MOV DL,0INT 21HBIN2: DEC DI ;等于 0 输出十进制数的各位MOV AL,DICALL STDOUTLOOP BIN2POP AX ;恢复现场POP CXPOP DXPOP DIRETBIN10OUT ENDP子程序 2 的流程图如图 2 所示。8开始二进制数除以1 0每一位都加3 0 H结束商是否为 0YN图 2 子程序 2 的流程图2.2.3 子程序 3子程序 3 的功能是读取系统的时间。其基本原理是调用 DOS 中断功能中的 INT 21H ,当 AH=2CH 时,读取系统的时间,使得 CH:CL=时:分,DH:DL=秒:秒100,此程序中精确到秒,这里只要提取时、分、秒、并在内存中分配一缓冲区,用来存放时间,不过此时的时、分、秒都是二进制的,因此要进行二进制和十进制的转换因此进入 BCDASC1 子程序进行转换成相应的 ASCII 码字符。子程序的源程序如下:TIME PROC NEAR ;显示时间子程序DISPLAY1: MOV SI,0MOV BX,100 ;除以 100 取整、取余DIV BLMOV AH,2CH ;取系统时间9INT 21HMOV AL,CH ;把小时数给 alCALL BCDASC ;将时间数值转换成 ASCII 码字符INC SIMOV AL,CL ;把分数给 alCALL BCDASCINC SIMOV AL,DH ;把秒数给 alCALL BCDASCMOV BP,OFFSET DBUFFER ;输出:,作为分隔符MOV DX,0C0DHMOV CX,8MOV BX,005EHMOV AX,1301HRE: MOV CX,0FFFFH ;延时DEC BX ;bx 减 1JNZ RE ;如果不等于零,转移到 reMOV AH,01H ;读键盘缓冲区字符到 AH 寄存器INT 16H ;读磁盘变化状态JE DISPLAY1 ;相等转移到 display1 程序JMP STARTMOV AH,4CHINT 21H ;返 dosRETTIME ENDP子程序 3 的流程图如图 3 所示。开始调用 B I O S 中断 , 读取系统时间将小时数放入 A L 中 , 并调用子程序转化为 A S C 码将秒数放入 A L 中 , 并调用子程序 1 转化为 A S C 码输入 : 作为分隔符将分数放入 A L 中 , 并调用子程序 1 转化为 A S C 码延时程序B X 是否为 0读取键盘缓冲区YNZ F 是否为 1NS T A R TD I S PL A Y程序Y图 3 子程序 3 的流程图102.3 拓展设计及功能说明在本课设中,在完成老师要求的 ASCII 码的转换等基本任务以外,我还在显示方式中的背景颜色和字体颜色等方面做了拓展。为了使屏幕显示更加美观,同时也可以方便地改变字体颜色,我采用的是显示器输出中断调用即为 INT 10H,其中的 0 号功能就是指设置显示方式,入口参数:AH=0(功能号),AL=设置方式(0 7)。出口参数:无。一共有 8 中不同

温馨提示

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

评论

0/150

提交评论