微机原理实习报告---电子时钟(用汇编语言实现)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

河南农业大学课程设计报告题目:电子时钟设计课程:微型计算机原理专业:电子信息工程班级:10级电信2班学生姓名:夏哨兵学号:1004101052指导教师:朱娟花完成日期:2012年12月31日机电工程学院姓名成绩夏哨兵目录前言……………………………………………………………………………………………………….1第一章绪论…………………………………………………………………………………………….2一、实习目的…………………………………………………………………………………………2二、实习要求……………………………………………………………………………………….2三、设计所需设备……………………………………………………………………………………2第二章软件系统介绍……………………………………………………………………….................3一、中断技术(或其它相关技术)…………………………………………………………………….3(一)介绍中断的概念中断技术…………………………………………………………………….3(二)DOS及BIOS中断……………………………………………………………………………..3二、汇编语言及汇编工具简介………………………………………………………………….3三、软件介绍………………………………………………………………………………………….3第三章设计分析……………………………………………………………………………………4一、软件设计思路…………………………………………………………………………………..4二、软件各模块内容………………………………………………………………………………….4(一)光标定位子程序原理………………………………………………………………………….4(二)清屏原理……………………………………………………………………………………...4(三)字符及字符串显示原理……………………………………………………………………….4(四)压缩BCD转为ASCII码原理………………………………………………………………….5(五)动态扫描键盘原理…………………………………………………………………………...5三、程序流程图设计………………………………………………………………………………….5第四章系统实现……………………………………………………………………………………….7一、程序原代码清单及详细注释…………………………………………………………………….7二、实验结果……………………………………………………………………………………..….15总结……………………………………………………………………………………………………...16一、软件的选取……………………………………………………………………………………...16二、图案的设计……………………………………………………………………………………...16三、程序调试……………………………………………………………………………………….16参考文献…………………………………………………………………………………………….....161前言软件设计题目电子时钟。(在计算机屏幕上显示当前系统的时间,日期,或时间和日期,3人一组)设计目的:1.了解定时/计数器和中断(DOS/BIOS)的使用;2.掌握定时/计数器和中断的工作原理和编程方法。编程要求:1.调用系统时间,在屏幕上显示出来;2.获取键盘的按键值,判断键值并退出系统。程序设计参考步骤:第一部分:定义显示界面。第二部分:调用系统时间(日期),并将调用的用二进制表示的时间数转换成ASCII码,并将时间数(日期数)存入内存区。第三部分:将存在系统内存区的时间数(日期数)用显示字符串的形式显示出来。第四部分:获取键盘的按键值,判断键值并退出系统。2第一章绪论一、实验目的1.理解掌握定时/计数器和中断的使用方法。2.掌握微机常用的输入输出方式及接口技术。3.掌握一定的汇编语言知识,培养自己的动手操作能力。4.学习程序设计的基本思路和方法。二、实习要求1.调用系统时间,在屏幕上显示出来;2.获取键盘的按键值,判断键值并退出系统。三、设计所需设备:PC机3第二章软件系统介绍一、中断技术(或其它相关技术)(一)介绍中断的概念中断技术在微机中,当CPU在执行过程中时,由于随机的事件(包括CPU内部的和CPU外部的事件)引起的CPU暂时停止正在执行的程序,而转去执行一个用于处理该事件的程序—称为中断式服务程序(或称中断处理程序),处理完后又返回被终止的程序断点处继续执行,这一过程成为中段(二)DOS及BIOS中断通过调用DOS系统的8号功能实现控制字符的输入,通过调用延时程序实现十分之一秒的定时,通过调用DOS系统的2号功能实现光标定位,调用DOS系统的2号功能实现字符的输出,通过调用DOS系统的9号功能实现字符串的输出。二、汇编语言及汇编工具简介汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。Emu8086同主流汇编程序相比,语法简单得多,但是它能生成兼容8086的机器语言。可以直接对通用寄存器,段寄存器,直接进行汇编编址操作,而且便于直接生成exe文件进行操作。三、软件介绍这个电子时钟可以通过DOS命令实现对系统时间进行调用,并且直接显示出来,按‘C’或‘c’直接修改时间,然后按‘ESC’退出此时的程序4第三章设计分析一、软件设计思路先在数据段开一段显示缓冲区,用来存储系统时间,调用子程序的清屏部分。调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码。再分别将小时数、分钟数、秒数存入显示缓冲区,在修改时间的时候调用键盘输入输出程序实现时钟的修改功能,然后存入结束字符‘$’。调用DOS字符串显示功能将时间显示在显示器上,调用屏幕的I/O中断,定位光标的开始位置,将时间显示在预先定义好的位置。把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。二、软件各模块内容(一)光标定位子程序原理DOS显示屏为25行、80列,左上角为(0,0),右下角(18,4F)设置光标,可调用BIOS系统,用汇编语句调用中断INT10H。入口信息为(AH)=2要设置光标;(BH)=0页号;(DH,DL)=光标的行号、列号(二)清屏原理开始执行程序时为保证有一个洁净的屏幕,可使显示屏做上滚动作,使屏幕留下一片空白。要使屏幕上滚,可用汇编语句INT10H,入口信息为(AH)=6使屏幕上滚(AL)=00上滚行数(CH,CL)=滚动区域左上角的行、列号(DH,DL)=滚动区域右下角的行、列号(BG)=00颜色的设置(三)字符及字符串显示原理通过调用DOS系统模块2只能是西安DL中的一个字符的显示。为了实现字符串的显示,调用其9号模块功能,其入口信息为(AH)=9显示字符串的功能模块(DS:DX)指向字符串的首地址,要求字符串以字符‘$’结尾。5(四)压缩BCD转为ASCII码原理(1.)两位的:先将压缩BCD码的高4位取出,右移四位后,与30H相或,存到相应内存单元;然后将低4位取出,与30H相或,存到下一内存单元。(2.)一位的:原数字加30H(五)动态扫描键盘原理运用INT21H的8号功能来实现动态扫描键盘。如果有键按下,则相应的键值的ASCII码被存到AL中。判断AL中的数值,若不是控制字符,则继续循环,从而实现动态扫描键盘。三、程序流程图设计6开始取系统时间并转二进制为ACSII码将时间存入显示缓冲区显示时间和界面返回DOS程序结束调用清屏子程序C键按下?ESC键按下?否是否调用时间修改程序读键盘输入值修改系统时间7第四章系统实现一、程序原代码清单及详细注释;--------------------------------数据段定义阶段-------------------------------------------------------datasegmentmess1DB'↖^(&&&&)^↖(^o^)',0ah,0dhDB'&&&&Happy^New~*Year',0ah,0dhDB'**************',0ah,0dhDB'****************************ASMASSIGNMENT***********',0ah,0dhDB'*****************ELECTRONICCLOCK**************',0ah,0dhDB'************DesignedbyXiaShaobing*',0ah,0dhDB'************PressCorctocorrectthetime******',0ah,0dhDB'*************PressESCbuttontoexit************',0ah,0dhDB'**********',0ah,0dhDB'********************',0ah,0dhDB'*********************',0ah,0dh,'$'TSDB?,0ah,0dhDB?,0ah,0dhDB'====**======@@======**=====',0ah,0dhDB'Pleaseinputthenewtime(hh:mm:ss):',0dh,0ah,'$';提示输入时间的格式mess2db'TheTimeis:',0ah,0dh,'$'HCQdb40;在数据段开一段时间显示缓冲区,大小为40个字节hordb?;为变量分配一个字节的空间,初值为任意字符8mindb?;为变量分配一个字节的空间,初值为任意字符secdb?;为变量分配一个字节的空间,初值为任意字符dataends;--------------------------------堆栈段定义阶段-------------------------------------------------stacksegmentdb100dup(?);定义100个字节的堆栈段stackends;--------------------------------代码段定义阶段------------------------------------------codesegmentassumecs:code,ss:stack,ds:data;确定各个逻辑段的类型start:callclear;调用清屏子程序display:;时间显示部分movax,data;将DATA的段基地址送到寄存器AXmovds,ax;将AX寄存器的内容存到DS中movbx,offsetHCQ;送HCQ的偏移地址到BXmovah,2ch;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数int21h;分别保存在CH,CL,DH中moval,ch;小时数设定movah,0;此处置零是为了callC16-10;调用进制转换子程序incbx;----------------------------------------------------------moval,':';显示分隔符号mov[bx],al;将寄存器内容存入BX中incbx;寄存器指向的地址+1;-------------------------------------------------------movah,2ch;调用DOS时间调

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功