河南农业大学-10级电子时钟(汇编语言)实验报告_第1页
河南农业大学-10级电子时钟(汇编语言)实验报告_第2页
河南农业大学-10级电子时钟(汇编语言)实验报告_第3页
河南农业大学-10级电子时钟(汇编语言)实验报告_第4页
河南农业大学-10级电子时钟(汇编语言)实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、GKFGS河南农业大学课 程 设 计 报 告题课专班 电信班学 机电工程学院目 录第一章 前言 31.1 实习目的 31.2实习要求 31.3 设计所需设备 3第二章 软件系统介 绍 42.1DOS及 BIOS功能调用 42.2DOS及 BIOS功能中断的用途和好处 42.3DOS及 BIOS功能中断的调用方法 42.4介绍中断技术 4第三章 系统介绍 53.1 流程图 53.2 程序设计原理 5第四章 实习设计分析 7第五章 系统实现885.1 程序源代码清单及详细注释5.2 实验结果13第六章 总结 14参考文献 142 1.1 实习目的汇编语言是面向机器的程序设计语言。在汇编语言中,用助

2、记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制代码,就把机器语言变成了汇编语言。汇编语言能够最大限度的发挥硬件的性能。本次实习主要是为了了解定时 /计数器和中断的使用。掌握微机常用的输入输出方式及接口技术。掌握一定的汇编语言,增强自己动手的能力。掌握程序设计的一般方法和步骤,能调试和修改程序。1.2 实习要求根据实习的要求,可知需要设计的计算机时钟模拟显示程序是基于汇编语言的应用程序设计,程序运行成功后,页面出现数字式的时钟。首先在数据段开辟一显示缓冲区,用来存储系统时间。调用 DOS 中断,返回系统时间,并将来返回的二进制时间转换成 ASCII 码,方便时间显示时

3、的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用DOS 字符串显示功能将时间显示出来。并调用屏幕I/O 中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近 1 秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。程序的最后还设计一了个按“”键就退出的功能,采取了判断键值的方法。为了显示

4、的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。本程序具有很强的扩展功能,我们可以在此基础上进行一些输入、输出扩展,显示的扩展,比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用 PC 喇叭发出报警声等外观简洁明了,功能和实际运用到的时钟的基本功能一样,用起来非常方便、快捷。1.3 设计所需设备PC 机 emu8086模拟仿真软件3 一、DOS及 BIOS功能调用系统软件中提供的功能调用有两种,一种称为 DOS功能调用(也叫低级调用)。用户程序在调用这些系统服务程序时,不是用 CALL命令,而是采用软中断指令 INT n来实现。另外,用户程序也不必与这些服务程序

5、代码连接,因为这些系统服务程序在系统启动时已被加载到内存中,程序入口也被放到中断向量表中。DOS和 BIOS功能调用,会使编写的程序简单、清晰,可读性好 而且代码紧凑,调试方便。通过调用 DOS系统的8好功能实现控制字符的输入,通过调用延时程序实现十分之一秒的定时。通过调用 DOS系统的2号功能实现光标定位,调用 DOS系统的2号实现符号输出,通过调用 DOS系统的9号功能实现字符串的输出。二、DOS及 BIOS功能中断的用途和好处DOS 是 PC 机上最重要的操作系统,它和 BIOS一样包括有近百个设备管理、目录管理和文件管理程序,是一个功能齐全、使用方便的中断例行程序的集合。使用 DOS

6、操作比使用相应功能的 BIOS操作更简易,而且对硬件的依赖性更少些。BIOS是系统提供的基本输入输出例行程序,它包括系统加电自检,引导装入,主要 I/O设备的处理程序以及接口控制等功能模块。BIOS有两个基本用途:一是给不同系列的微处理器提供兼容的 I/O 服务,使程序员在编程时不必考虑不同型号机器的具体差别。二是给程所以利用 BIOS功能编写程序简单方便,可读性好。三、DOS及 BIOS功能中断的调用方法BIOS功能与 DOS 功能都是通过软件中断调用的。在中断调用前需要把功能号装入 AH寄存器,把子功能号装入 AL寄存器,除此而外,通常还需在 CPU 寄存器中提供专门的调用参数。一般地说,

7、调用 DOS 或 BIOS功能时,有以下几个基本步骤:(1)把调用参数装入指定的寄存器中;(2)如需功能号,把它装入 AH;(3)如需子功能号,把它装入 AL;(4)按中断号调用 DOS 或 BIOS中断;(5)检查返回参数是否正确。四、介绍中断技术简单来说,中断是一种使 CPU 中止正在执行的程序 而转去处理特殊事件的操作 。这些引起中断 的事件称为中断源,它们可 能是来自外设的输入输出请求 ,也可能是计算机的一些异 常事故或其它内部原因。 更具体地,我们定义 CPU 中断为这样一个过程:在特定的 事件(中断源,也称中断请求信 号)触发下引起 CPU 暂停正在运行的程序(主程序 一段为特定事

8、件而编写的处理 程序(中断处理程序 等中断处理程 序处理完成后,再回到主程序被 打断的地方继续运行。一方面 ,有了中断功能 ,PC 系统就可以使 CPU 和外设同时工作,使 系统可以及时地响应外部 事件。而且有了中断功能, CPU 可允许多个外设同时 工作。这样就大大提高了 CPU 的利用率,也提高了数据输入、 输出的速度。 另一方面,有了中断功能 ,就可以 使 CPU 及时处理各种软硬件 故障。计算机在运行过程中,往 往会出现事先预料不到的情况 或出现一些故障,如电源掉电 、存储出错,运算溢出等等 。计算机可以利用中断系统 自行处理,而不必停机或报告工 作人。4 (一) 流程图调用 DOS

9、中断2 进制转 ACSIIYESC键按下?N程序结束调用 DOS 中断,返回系统时间,并将来返回的二进制时间转换成 ASCII 码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用 DOS 字符串显示功能将时间显示出来。并调用屏幕I/O 中断,定位光标的起5始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近 1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。程序的最

10、后还设计一了个按“”键就退出的功能,采取了判断键值的方法。为了显示的美观,还设计一个字符图界面,通过显输出扩展,显示的扩展,比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用 PC 喇叭发出报警声等等。但是由于时间的原因,所以只做了核心的部分,这不得不说是一个遗憾。本设计借用 EMU 8086 仿真平台。6(一)程序原理:程序先调用系统时间,然后将返回的二进制数转化成 ASCII 码,再通过 dos 显示功能显示出来,并通过循环不断刷新显示的时间。在二进制转化成 ASCII 码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的 BCD码,再将高四位低四位分

11、别相加30H ASCII 码,此时要对照书本的附录了解电脑cup 如何将 ASCII 码的信息转换成显示字符。(二)时间刷新:我们的程序是不断对显示屏进行刷新的,所以我们调用了 bctd 程序,这是一个精确的计时程序,计数时间约为1 秒,然后我们用了jmp display指令,刷新显示屏,从而达到时间的每秒显示。(三)屏幕显示:开始做完程序的时候由于采用了光标定位的方法,发现运行了程序后显示光标不停地在不同的位置上跳动,严重影响了程序的可看性。检查了解到光标的跳动跟程序的刷新频率还有人眼的视觉残象成影原理有关,只要系统的刷新频率大于 1/25 秒,那么人眼就会认为图象在改变,这跟电影为什么要设

12、成25 帧/秒的播放速率的原理是一样的。这样一来,就必须设计一较为精确的延时程序来改善画面的显示了,只要不让屏幕刷新得太快就可以打到要求,具体的显示时间是通过延时程序里的 DX 值决定的,通过调整 DX 的值,我们发现当DX 等于 04FF 的时候显示效果是最好的。(四)系统退出:开始本程序是使用了 DOS 中断的键盘功能调用,可是当加了比较跳转指令后整个程序就停了在那里,最后换成了键盘 I/O 功能调用,问题得到解决。57第五章:系统实现一、程序源代码清单及详细注释;name: ELECTRONIC CLOCK;design by lianglong gongshuai gaokefanda

13、ta segmentmess1,0ah,0dhdbdbPressESCbuttontoquit,0ah,0dhdb,0ah,0dhdb,0ah,0dhdb,0ah,0dhdb,0ah,0dhdb,0ah,0dhdb,0ah,0dhdbELECTRONIC CLOCK*Henan Agricultural Universitydesign by lianglong gongshuai gaokefan,0ah,0dhdb,0ah,0dhdb,0ah,0dhdb,$mess2db ,0ah,0dh,$t_buff db 20data ends;在数据段开辟一时间显示缓冲区stack segment

14、db 100 dup(?)stack endscode segmentassume cs:code,ss:stack,ds:datamain:call clear;调用清屏子程序8display: ;-时间显示部分-mov ax, datamov ds,axmov bx,offset t_buffmov ah,2ch存在 CH,CL,DH中int 21h送 t_buff 的偏移地址到BX;调用 DOS 时间调用功能,功能号小时,分钟,秒数分别保mov al,chmov ah,0;小时数设定call bctd;调用进制转换子程序push axand al,0f0hmov cl,4;选取al高四位

15、;设置右循环的次数rol al,cl;右循环or al,30h加 30h 得到ACSII码mov bx,alinc bx;将得到的结果送到 t_buff缓冲区;BX自加 1,指针指向下一个缓冲区的下一个地址pop axand al,0fhor al,30hmov bx,alinc bx;选取低四位,道理同上;将转换后的低四位值送入缓冲区的第二个地址;-mov al,: ;显示分号mov bx,alinc bx;-mov ah,2chint 21hmov al,clmov ah,0call bctdpush ax;分钟数设定and al,0f0hmov cl,4rol al,clor al,30

16、hmov bx,alinc bxpop ax9and al,0fhor al,30hmov bx,alinc bx;-mov al,:mov bx,alinc bx;显示;号;-mov ah,2chint 21h;秒设定mov al,dhmov ah,0call bctdpush axand al,0f0hmov cl,4rol al,clor al,30hmov bx,alinc bxpop axand al,0fhor al,30hmov bx,alinc bx;-mov al,$;将字符串的结束位送至显示缓冲区的最后一位mov bx,al;-push bx;置光标位置 ,AH=2,BH=

17、0,DH跟 DL分别为行号与列号,并入栈保护 BXmov ah,2mov bh,0mov dh,11mov dl,33int 10hpop bxlea dx,t_buff ;送 t_buff偏移地址到 并调用 DOS 显示功能,功能号为 9mov ah,9int 21hpush bx;置光标位置10mov ah,2mov bh,0mov dh,0mov dl,0int 10hpop bxlea dx,mess1mov ah,9int 21hpush bxmov ah,2mov bh,0mov dh,17mov dl,21int 10h;置光标位置pop bxlea dx,mess2mov ah

18、,9int 21h;-call delay1mov ah,1;按任意键结束,调用键盘I/O 中断功能号 获取键值到 ALint 16hcmp al,1bhjzquitdisplay是 ESC键的话就跳转jmpquit:mov ah,4chint 21hret;-bctd proc near;二进制转 BCD码子程序;AX输入参数;AX输出参数,存放调整过的 BCD码;movmovmovdx,axax,0cx,16;设循环次数11bctd1:clc;清进位标志 C;通过进位的循环右移;带进位加法rcldx,1al,aladcdaa;加法的十进制调整;交换高,低八位xchg al,ahadcdaa

19、al,alxchg al,ahloop bctd1ret;循环,次数保存在 CX 里bctdendp;-clear proc nearpush axpush bxpush cxpush dx;入栈保护现场mov ax,0600h;ah=06(滚动)al=00(全屏空白)mov bh,6ah ;背景颜色(6),绿色前景(a)sub cx,cxmov dx,5f5fhint 10hpop dxpop cxpop bxpop axret;出栈恢复现场clear endp;-delay1 PROC 精确延迟时间子程序MOV DX,04ffh;循环次数XOR CX,CXNOPup:a:LOOP aDEC DXJNZ upRETdelay1 ENDP;-12code endsend main二、实验结果点击运行后,出现运行结果如下:13 心得体会:经过以上步骤,课程设计所要求设计的电子钟显示设计软件便成功完成了,它能显示数符合课程设计中的各项要求。通过这次课程设计,我们对日常生活中司空见惯的时钟的工作原理有了一个比较深入的了解,将书本中的知识更好地与实际生活中的应用结合在了一起。通过这次微机原理课程设计学

温馨提示

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

评论

0/150

提交评论