微机原理实习报告---电子时钟(用汇编语言实现).docx
河南农业IwJ校姓名成果课程设计报告题目:电子时钟显示设诃课程:微型计算机原理专业:电子信息工程班级:学生姓名:学号:指导老师:完成口期:机电I:程学院刖言1笫一章绪论.2一、实习目的.2三设计所需设备2其次串软件系统介绍3一、中断技术(或其它相关技术)3(一) 介绍中断的概念中断技术3(二) DOS与BIOS中断.3二、 汇编语言与汇编工具简介.3三、软件介绍.3第三章设计分析4一、软件设计思路.4二、软件各模块内容.4(一)光标定位子程序原理4(二)清屏原理.4(三)字符与字符串显示原理.4(四)压缩BCD转为ASCI1.码原理.5(五)动态扫描键盘原理.5三、 程序流程图设计5第四章系统实现.7一、 程序原代码清电与具体注释7二、 试验结果总结.16一、软件的选取.16二、图案的设计.16三、程序调试16参考文献16前言软件设计题目电子时钟。(在计算机屏幕上显示当前系统的时间,日期,或时间和日期,3人一组)设计目的:1.了解定时/计数器和中断(DOS/B1.OS)的运用:2.驾驭定时/计数器和中断的工作原理和编程方法。编程要求:1 .调用系统时间,在屏幕上显示出来;2 .获得键盘的按键值,推断键值并退出系统。程序设计参考步骤:第一部分:定义显示界面。其次部分:调用系统时间(日期),并招调用的用二进制表示的时间数转换成ASCI1.码,并将时间数(日期数)存入内存区。第三部分:将存在系统内存区的时间数(日期数)用显示字符串的形式显示出来。第四部分:获得键盘的按键值,推断键值并退出系统。第一章绪论一、试验目的1 .理解驾驭定时/计数器和中断的运用方法。2 .驾驭微机常用的输入输出方式与接口技术。3 .驾驭肯定的汇编语言学问,培育自己的动手操作实力。4 .学习程序设计的基本思路和方法。二、实习要求1 .调用系统时间,在屏幕上显示出来;2 .获得键盘的按键值,推断键值并退出系统。三、设计所需设备:PC机其次章软件系统介绍、中断技术(或其它相关技术)(一)介绍中断的概念中断技术在微机中,当CPU在执行过程中时,由于随机的事务(包括CPU内部的和CPU外部的事务)引起的CPf短暂停止正在执行的程序,而转去执行一个用于处理该事务的程序一称为中断式服务程序(或称中断处理程序),处理完后又返回被终止的程序断点处接着执行,这一过程成为中段(一)DOS1VBIOS中断通过调用DOS系统的8号功能实现限制字符的输入,通过调用延时程序实现特别之,秒的定时,通过调用DoS系统的2号功能实现光标定位,调用DoS系统的2号功能实现字符的输出,通过调用DOS系统的9号功能实现字符串的输出。二、汇编语言与汇编1.具简介汇编语言(ASSemb1.y1.angUage)是面对机器的程序设计语言。在汇编语合中,用助记符(MemOni)代替操作码,用地址符号(SymboI)或标号(1.abeD代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。运用汇编语言编写的程序,机器不能干脆识别,耍山种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。EMU8086是学习汇编必不行少的工具,它结合J'一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟1.具(虚拟PC),还有一个按部就班的指导工具。Emu8086同主流汇编程序相比,语法简洁得多,但是它能生成兼容808G的机器语言。可以干脆对通用寄存器,段寄存器,干脆进行汇编编址操作,而且便于干腌生成exe文件进行操作。三、软件介绍这个电子时钟可以通过DOS吩咐实现对系统时间进行调用,并且干脆显示出来,按C'或'c'干脆修改时间,然后按ESC'退出此时的程序第三章设计分析一、软件设计思路先在数据段开段显示缓冲区,用来存储系统时间,调用子程序的清屏部分。调用DOS中断,得到系统当前时间,并将其二进制转换成ASCI1.码。再分别将小时数、分钟数、秒数存入显示缓冲区,在修改时间的时候调用键盘输入输出程序实现忖钟的修改功能,然后存入结束字符'$'。调用DOS字符串显示功能将时间显示在显示器上,调用屏幕的"0中断,定位光标的起先位置,将时间显示在预先定义好的位置。把程序设计成用刷新的方式来不断获得系统的时间,这样就有了会秒秒走动的电子时钟。二、软件各模块内容(一)光标定位子程序原理DoS显示屏为25行、80列,左上角为(0,0),右卜角(18.4F)设置光标,可调用B1.OS系统,用汇编语句调用中断INTIO11。入口信息为(H)=2要设置光标:(BH)=O页号;(DH,D1.)=光标的行号、列号(一)清屏原理起先执行程序时为保证有一个干净的屏幕,可使能示屏做上滚动作,使屏幕留卜.片空白。要使屏幕上滚,可用汇编语句INTIOH,入口信息为(A1.1.)=6使屏幕上滚(A1.)=00上滚行数(CH,CD=滚动区域左上角的行、列号(DH,DD=滚动区域右卜角的行、列号(BG)=00颜色的设置(三)字符与字符串显示原理通过调用DOS系统模块2只能是西安D1.中的一个字符的显示。为了实现字符串的显示,调用其9号模块功能,其入口信息为(A1.1.)=9显示字符串的功能模块(DSzDX)指向字符串的首地址,要求字符串以字符$'结尾。(11)压缩BCD转为ASCI1.码原理两位的:先将压缩RCD吗的高4位取出,右移四位后,与30H相或,存到相应内存单元:然后将低4位取出,与3011相或,存到下一内存不元。(2.)位的:原数字加30H(五)动态扫描键盘:原理运用INT21H的8号功能来实现动态扫描键盘。假如有键按卜.,则相应的键值的ASCI1.码被存到A1.中。推断A1.中的数值,若不是限制字符,则接着循环,从而实现动态扫描键盘。三、程序流程图设计第四章系统实现程序原代码清单与具体注释数据段定义阶段datasegmentmess1.',0ah,OdhNew*',0ah,OdhDBDB'YearDBDB',*(&&&&)&&&&',0ah,Odh*(0)Happy*ASMASSIGNMENT*',0ah,OdhDB'*E1.ECTRONICC1.OCK*',0ah,OdhDB'*次*DesignedbyZhang1.eiChengQinandWuXiao*',0ah,OdhDB'*PressCorctocorrectthetime*',Oah1OdhDB'*PressESCbuttontoexit*',0ah,OdhDB'*',0ah,OdhDB'*率*',0ah,OdhDB'*',0ah,0<ih$'TSDB?,Oah1OdhDB?,Oah1OdhDB,=*=g=*=',0ah,OdhDB'P1.easeinputthenewtime(hh:min:ss)Odh1Oah1'提示输入时间的格式ness2dbTheTimeis:',Oah,Odh,'HCQdb40;在数据段开段时间显示缓冲区,大小为40个字节hordb?;为变量安排个字节的空间,初值为随意字符mindb?;为变量安排个字节的空间,初值为随意字符secdb?;为变量安排个字节的空间,初值为随意字符dataends堆栈段定义阶段stacksegmentdb100dup(?);定义100个字节的堆栈段s1.ackends;代码段定义阶段codesegmentassumecs:code,ss:stack,ds:data:确定各个逻辑段的类型int21hpus1.ibxmovah,2;置光标位理调用DOS的功能,M=2movbh,0;置显示以卜模式movdh,1;修改前面附加的内容的显示位置mov<11,0intIOh1.ea(ix,mess1.;取IneSSi的有效地址赋给DXmovah,9:调用IX)S9号功能,显示字符串int21hPPbx:BX寄存器出栈pus1.bx;PUSHBXmovah,2:置光标位置movbh,0;置显示模式movdh,17:定位在17行movd1.,35;定位在35列intIOhPPbx1.eadx,mess2IMZmess1.的有效地址赋给DXmovah,9int21hmovah,1A1.;调用键盘I/O中断功能号1,获得键值到int16hcmpa1.,'c';是C键,转到时间修改程序jeCorcmpa1.,'C'是C键,转到时间修改程序jeCorCmPa1.,Ibhjzquit;是ESC键,退出程序Jmpdisp1.ayquit:movah,4ch;程序终止功能号int21hretCor:ca1.1.correct;调用时间修改子程序C16-10PROCNEARPUSHCXMOVAH1O;16位二进制数转换为ASCn码MOVCX,IOD:基数10DIVC1.;用除IO取余的方法转换为BCD码(二进制码)ADDAX13030H:BCD码转换为ASCII码的代码MOVBX,A1.:此时将低八位的A1.加载到BX中,BX指的是寄存器BX指向的内存单元INCBX;BX指向的存储单.元加一MOVBX,HPOPCX