微机原理实习报告---电子时钟(用汇编语言实现)._第1页
微机原理实习报告---电子时钟(用汇编语言实现)._第2页
微机原理实习报告---电子时钟(用汇编语言实现)._第3页
微机原理实习报告---电子时钟(用汇编语言实现)._第4页
微机原理实习报告---电子时钟(用汇编语言实现)._第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

1、河南农业大学 课程设计报告题目:电子时钟显示设计课程:微型计算机原理专业:电子信息工程班级:学生姓名:学号:指导教师:完成日期:机电工程学院姓名成绩目录.1第一章绪论 .2实习目二、实习要求 .2三、设计所需设备 2第二章软件系统介绍 3一、中断技术(或其它相关技术 .3(一介绍中断的概念中断技术 .3(二 DOS 及 BIOS 中断 .3二、汇编语言及汇编工具简介 .3三、软件介绍3第三章设计分析 4一、软件设计思路 .4二、软件各模块内容 .4(一光标定位子程序原理 .4匚清屏原理 .4(三字符及字符串显示原理 .4(四压缩BCD转为ASCII码原理 .5(五动态扫描键盘原理 .5三、程序

2、流程图设计 .5第四章系统实现 .7一、程序原代码清单及详细注释 .7二、实验结果15总结.16一、软件的选.16图案的设计 .16三、程序调试 .16参考文献.16.、八、-刖言软件设计题目电子时钟。(在计算机屏幕上显示当前系统的时间,日期,或时间和日期,3人一 组设计目的:1. 了解定时/计数器和中断(DOS/BIOS的使用;2. 掌握定时/计数器和中断的工作原理和编程方法。编程要求:1. 调用系统时间,在屏幕上显示出来;2. 获取键盘的按键值,判断键值并退出系统。程序设计参考步骤:第一部分:定义显示界面。第二部分:调用系统时间(日期,并将调用的用二进制表示的时间数转换成 ASCII码,并

3、将时间数(日期数存入内存区。第三部分:将存在系统内存区的时间数(日期数用显示字符串的形式显示出来。 第四部分:获取键盘的按键值,判断键值并退出系统。第一章绪论一、实验目的1. 理解掌握定时/计数器和中断的使用方法。2. 掌握微机常用的输入输出方式及接口技术。3. 掌握一定的汇编语言知识,培养自己的动手操作能力。4. 学习程序设计的基本思路和方法。二、实习要求1. 调用系统时间,在屏幕上显示出来;2. 获取键盘的按键值,判断键值并退出系统。三、设计所需设备:PC机第二章软件系统介绍一、中断技术(或其它相关技术(一介绍中断的概念中断技术在微机中,当CPU在执行过程中时,由于随机的事件(包括CPU内

4、部的和CPU 外部的事件引起的CPU暂时停止正在执行的程序,而转去执行一个用于处理该事 件的程序一称为中断式服务 程序(或称中断处理程序,处理完后又返回被终止的程序 断点处继续执行,这一过程成为中段(二DOS及BIOS中断通过调用DOS系统的8号功能实现控制字符的输入,通过调用延时程序实现十 分之一秒的定 时,通过调用DOS系统的2号功能实现光标定位,调用DOS系统的2 号功能实现字符的输出,通过调用DOS系统的9号功能实现字符串的输出。、汇编语言及汇编工具简介汇编语言(AssemblyLanguage是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni代替操作码,用地址符号(Sym

5、bol或标号(Label代替地址码。这样 用符号代替机器语言的二进制 码,就把机器语言变成了汇编语言。于是汇编语言亦 称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编 语言翻译成机器语言,这种起翻译作用的程序叫汇编程 序,汇编程序是系统软件中语 言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译 器、反组译器、具除错功能的软件模拟工具(虚拟PC还有一个循序渐进的指导工 具。Emu8086同主流汇编程序相比,语法简单得多,但是它能生成兼容8086的机器 语言。可以直接对通用寄存 器,

6、段寄存器,直接进行汇编编址操作,而且便于直接生成 exe文件进行操作。、软件介绍这个电子时钟可以通过DOS命令实现对系统时间进行调用,并且直接显示出来 按 C或 c直接修改时间 然后按 ESC退出此时的程序第三章设计分析一、软件设计思路先在数据段开一段显示缓冲区,用来存储系统时间,调用子程序的清屏部分。 调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码。再分别将小时 数、分钟数、秒数存入显示缓 冲区,在修改时间的时候调用键盘输入输出程序实现 时钟的修改功能,然后存入结束字符$调用DOS字符串显示功能将时间显示在 显示器上,调用屏幕的I/O中断,定位光标的开始位置,将时间显示在预

7、先定义好的位把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走 动的电子时钟。二、软件各模块内容(一光标定位子程序原理DOS显示屏为25行、80列,左上角为(0, 0右下角(18,4F设置光标,可调用BIOS系统,用汇编语句调用中断INT10H。入口信息为(AH=2要设置光标;(BH=0页号;(DH,DL =光标的行号、列号(二清屏原理开始执行程序时为保证有一个洁净的屏幕,可使显示屏做上滚动作,使屏幕留下 一片空白。要使屏幕上滚,可用汇编语句INT 10H ,入口信息为(AH =6使屏幕上滚(AL =00上滚行数(CH , CL =滚动区域左上角的行、列号(DH , DL =

8、滚动区域右下角的行、列号(BG =00颜色的设置(三字符及字符串显示原理通过调用DOS系统模块2只能是西安DL中的一个字符的显示。为了实现字 符串的显示,调用其9号模块功能,其入口信息为(AH =9显示字符串的功能模块(DS:DX指向字符串的首地址,要求字符串以字符 $吉尾。4(四压缩BCD转为ASCII码原理(1.两位的:先将压缩BCD码的高4位取出,右移四位后,与30H相或,存到相应内 存单元;然后将低4位取出,与30H相或,存到下一内存单元。(2.位的:原数字加30H(五动态扫描键盘原理运用INT 21H的8号功能来实现动态扫描键盘。如果有键按下,则相应的键值 的ASCII码被存到AL中

9、。判断AL中的数值,若不是控制字符,则继续循环,从而实 现动态扫描键盘。三、程序流程图设计56第四章系统实现程序原代码清单及详细注释数据段定义阶段data segme ntmessl DB A ( & & A (AoA ,0ah,0dh DB & & Happy A New * Year,0ah,0dhDB,0ah,0dhDB* * * * * * * *ASM ASSIGNMENT*,0ah,0dhDB * * * * * * ELECTRONIC CLOCK * 0ah 0dhDB * * * * * * Press C or c to correct the time * ,0ah,0d

10、hDB * * * * * * Press ESC butt on to exit * ,0ah,0dhDb * * * * * 0ah 0dhDB,0ah,0dhDB* * * * I,0ah,0dh,$TS DB ?,0ah,0dhDB ?,0ah,0dhDB =*=*=,0ah,0dhDB Please in put the new time (hh:mm:ss:,0dh,0ah,$提示输入时间的格式 mess2 db The Time is:,0ah,0dh,$HCQ db 40 ;在数据段开一段时间显示缓冲区,大小为40个字节hor db ?;为变量分配一个字节的空间,初值为任意字符

11、7min db ?;为变量分配一个字节的空间,初值为任意字符sec db ?;为变量分配一个字节的空间,初值为任意字符data ends堆栈段定义阶段stack segme ntdb 100 dup(?;定义100个字节的堆栈段stack ends;代码段定义阶段code segme ntassume cs:code,ss:stack,ds:dat确定各个逻辑段的类型sta比call clear调用清屏子程序display:;时间显示部分mov ax, data ;将DATA的段基地址送到寄存器 AXmov ds,ax ;将AX寄存器的内容存到 DS中mov bx,offset HCQ ;送H

12、CQ的偏移地址到BXmov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数int 21h ;分别保存在CH,CL,DH中mov al,ch ;小时数设定mov ah,0 ;此处置零是为了call C16-10 ;调用进制转换子程序inc bxmov al,:;显示分隔符号mov bx,al ;将寄存器内容存入 BX中inc bx ;寄存器指向的地址+1mov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数8int 21h ;分别保存在CH,CL,DH中mov al,cl ;分钟数设定mov ah,0將该位置零call C16-10inc bx

13、mov al,:;显示分隔符号mov bx,al ;将寄存器内容存入 BX中inc bx ;寄存器指向的地址+1;秒的设计mov ah,2ch ;秒设定int 21hmov ah,0將该位置零call C16-10inc bxmov al,$;将字符串的结束位送至显示缓冲区的最后一位mov bx,alpush bx ;修改时间显示的地方mov ah,2 ;置光标位置,调用功能号AH=2mov bh,0 ;置显示模式mov dh,17 ; DH跟DL分别为行号与列号,并入栈保护BX mov dl,50 ;显示输 出在第17行int 10h ;显示输出在51列pop bxlea dx,HCQ ;送

14、HCQ偏移地址到DX,并调用DOS显示功能,功能号为9 mov ah,9 ;调用DOS 9号功能,显示字符串int 21hpush bxmov ah,2 ;置光标位置调用DOS的功能,AH=2mov bh,0 ;置显示以下模式mov dh,1 ;修改前面附加的内容的显示位置mov dl,0int 10hlea dx,mess1取 m essl的有效地址赋给 DXmov ah,9 ;调用DOS 9号功能,显示字符串int 21hpop bx ;BX寄存器出栈push bx ;PUSH BXmov ah,2 ;置光标位置mov bh,0 ;置显示模式mov dh,17 ;定位在17行mov dl,

15、35 ;定位在35列int 10hpop bxlea dx,mess2取 mess1的有效地址赋给 DXmov ah,9int 21hmov ah,1 ;调用键盘I/O中断功能号1,获取键值到AL int 16hcmp al,c;是c键,转到时间修改程序je Corcmp al,C ;是C键,转到时间修改程序je Corcmp al,1bhjz quit;是ESC键,退出程序jmp displayquit:mov ah,4ch ;程序终止功能号int 21hretCor: call correct ;调用时间修改子程序C16-10 PROC NEARPUSH CXMOV AH,0 ; 16位二

16、进制数转换为 ASCII码MOV CX,10D ;基数 10DIV CL ;用除10取余的方法转换为BCD码(二进制码ADD AX,3030H ;BCD 码转换为ASCII码的代码MOV BX,AL ;此时将低八位的AL加载到BX中,BX指的是寄存器BX指 向的内存单元INC BX ; BX指向的存储单元加一MOV BX,AHPOP CXRETC16-10 ENDPclear proc n earpush ax ;入栈保护现场push bxpush cxpush dxmov ax,0600h ; ah=06滚动 al=00(全屏空白mov bh,2eh ;设置背景颜色(2和前景颜色(esub

17、cx,cx ;将寄存器清零mov dx,5f5fh ;设备重定向子功能号功能描述int 10hpop dx ;出栈恢复现场pop expop bx pop ax retclear endpcorrect proe NEAR ;时间修改子程序call in put ;调用键盘输入子程序输入数据mov ch,hormov cl,minmov dh,secand dl,0hint 21hmov ah,2dh ;调用DOS功能调用系统时间并修改系统时间jmp startretcorrect endpJin put proc NEAR ;键盘输入子程序push ax ;入栈保护数据push bxpush

18、 expush dxpushfmov dx,offset TS ;显示修改时间的格式提示mov ah,09h ;显示字符串,提示的内容int 21h ;调用DOS功能mov dx,OFFSET HCQ ;数据缓冲区的数据输入mov ah,0ah ;带缓存的键盘输入(字符串int 21hand dx,0h ;将寄存器置零lea bx,HCQ ;向BX装入有效地址inc bx ;地址 +1inc bx ;跳过:mov dh,bx;将BX的内容储存到寄存器 DH中sub dh,30h ;将得到的ASCII码转化为16进制的数据inc bx ;地址加1mov dl,bx;分sub dl,30h ;转化

19、为16进制的数据mov cl,10 ;计数器计数十次mov al,dh ;将DH的内容送入寄存器mul cl ;通过减30h,再乘10的方法得到该二进制数add al,dl ;然后将两个数据 相加mov ch,al ;存入时间mov hor,al ;将寄存器的内容存入 HOR中inc bxinc bxmov dh,bx;将ASCII码转换为二进制数sub dh,30hinc bx mov dl,bx sub dl,30h mov cl,10 mov al,dh mul cl add al,dl mov cl,al mov min,al inc bx inc bx mov dh,bx sub d

20、h,30h inc bx mov dl,bx sub dl,30h mov cl,10 mov al,dh mul cl add al,dl mov dh,al mov sec,al popf pop dx pop cx pop bx pop ax ret in put endp ;14 ;乘以10 ;将ASCII码转换为二进制数;出栈恢复数据code ends end star二、实验结果 点击运行后,出现运行的结果如下:当按下或 (时显示提示符 “ please in put the new time(hh:mm:ss:” 15总结纸上得来终觉浅,绝知此事要躬行”,这是本次课程设计我最大的体会。刚开始时,看着老师给的参考材料,心里想这个课程设计不是

温馨提示

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

评论

0/150

提交评论