ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:63.39KB ,
资源ID:10858178      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10858178.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(河南农业大学10级电子时钟汇编语言实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

河南农业大学10级电子时钟汇编语言实验报告.docx

1、河南农业大学10级电子时钟汇编语言实验报告姓名成绩LLGKFGS 河南农业大学课 程 设 计 报 告题 目: 电子时钟显示设计课 程: 微型计算机原理专 业: 电子信息工程班 级: 10电信(1)班学生姓名: LL GKF GS 学 号: 指导教师: ZJH完成日期: 2012.12.30机电工程学院目 录第一章 前言31.1实习目的31.2实习要求 31.3设计所需设备 3第二章 软件系统介绍42.1 DOS及BIOS功能调用 42.2 DOS及BIOS功能中断的用途和好处 42.3 DOS及BIOS功能中断的调用方法 42.4介绍中断技术 4第三章 系统介绍53.1流程图53.2程序设计原

2、理5第四章 实习设计分析7第五章 系统实现8 5.1程序源代码清单及详细注释8 5.2实验结果13第六章 总结14参考文献 14第一章 前言1.1实习目的汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制代码,就把机器语言变成了汇编语言。汇编语言能够最大限度的发挥硬件的性能。本次实习主要是为了了解定时/计数器和中断的使用。掌握微机常用的输入输出方式及接口技术。掌握一定的汇编语言,增强自己动手的能力。掌握程序设计的一般方法和步骤,能调试和修改程序。1.2实习要求根据实习的要求,可知需要设计的计算机时钟模拟显示程序是基于汇

3、编语言的应用程序设计,程序运行成功后,页面出现数字式的时钟。首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用DOS字符串显示功能将时间显示出来。并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超

4、过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。程序的最后还设计一了个按“ESC”键就退出的功能,采取了判断键值的方法。为了显示的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。本程序具有很强的扩展功能,我们可以在此基础上进行一些输入、输出扩展,显示的扩展,比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用PC喇叭发出报警声等等。但是由于时间的原因,所以只做了核心的部分,这不得不说是一个遗憾。此模拟时钟外观简洁明了,功能和实际运用到的时钟的基本功能一样,用起来非常方便、快捷。1.3设计所需设备PC机

5、emu8086模拟仿真软件 第二章 软件系统介绍一、DOS及BIOS功能调用 系统软件中提供的功能调用有两种,一种称为DOS功能调用(也叫低级调用)。用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。另外,用户程序也不必与这些服务程序代码连接,因为这些系统服务程序在系统启动时已被加载到内存中,程序入口也被放到中断向量表中。DOS和BIOS功能调用,会使编写的程序简单、清晰,可读性好 而且代码紧凑,调试方便。 通过调用DOS系统的8好功能实现控制字符的输入,通过调用延时程序实现十分之一秒的定时。通过调用DOS系统的2号功能实现光标定位,调用DOS系统的2号

6、实现符号输出,通过调用DOS系统的9号功能实现字符串的输出。二、DOS及BIOS功能中断的用途和好处DOS是PC机上最重要的操作系统,它和BIOS一样包括有近百个设备管理、目录管理和文件管理程序,是一个功能齐全、使用方便的中断例行程序的集合。使用DOS操作比使用相应功能的BIOS操作更简易,而且对硬件的依赖性更少些。BIOS是系统提供的基本输入输出例行程序,它包括系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块。BIOS有两个基本用途:一是给不同系列的微处理器提供兼容的I/O服务,使程序员在编程时不必考虑不同型号机器的具体差别。二是给程序员提供文件化的,直接对硬件进行操作

7、的子功能,程序员可不必了解硬件操作的具体细节。所以利用BIOS功能编写程序简单方便,可读性好。 三、DOS及BIOS功能中断的调用方法BIOS功能与DOS功能都是通过软件中断调用的。在中断调用前需要把功能号装入AH寄存器,把子功能号装入AL寄存器,除此而外,通常还需在CPU寄存器中提供专门的调用参数。一般地说,调用DOS或BIOS功能时,有以下几个基本步骤: (1)把调用参数装入指定的寄存器中; (2)如需功能号,把它装入AH; (3)如需子功能号,把它装入AL; (4)按中断号调用DOS或BIOS中断; (5)检查返回参数是否正确。四、介绍中断技术简单来说,中断是一种使CPU中止正在执行的程

8、序而转去处理特殊事件的操作。这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。 更具体地,我们定义CPU中断为这样一个过程:在特定的事件(中断源,也称中断请求信号)触发下引起CPU暂停正在运行的程序(主程序),转而先去处理一段为特定事件而编写的处理程序(中断处理程序),等中断处理程序处理完成后,再回到主程序被打断的地方继续运行。一方面,有了中断功能,PC系统就可以使CPU和外设同时工作,使系统可以及时地响应外部事件。而且有了中断功能,CPU可允许多个外设同时工作。这样就大大提高了CPU的利用率,也提高了数据输入、输出的速度。 另一方面,

9、有了中断功能,就可以使CPU及时处理各种软硬件故障。计算机在运行过程中,往往会出现事先预料不到的情况或出现一些故障,如电源掉电、存储出错,运算溢出等等。计算机可以利用中断系统自行处理,而不必停机或报告工作人。 第三章 系统介绍(一) 流程图(二)程序设计原理:调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用DOS字符串显示功能将时间显示出来。并调用屏幕I/O中断,定位光标的起始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我们要设计成刷

10、新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,屏幕显示延迟一段时间后再跳回到初始位置,再显示,由此循环下去。程序的最后还设计一了个按“ESC”键就退出的功能,采取了判断键值的方法。为了显示的美观,还设计一个字符图界面,通过显示字符串的方法显示出来。本程序具有很强的扩展功能,我们可以在此基础上进行一些输入、输出扩展,显示的扩展,比如可以做成计时器,并设计一个精美的运动的图形界面,时间到了会自动调用PC喇叭发出报警声等等。但是由于时间的原因,所

11、以只做了核心的部分,这不得不说是一个遗憾。本设计借用EMU 8086仿真平台。 第四章:实习设计分析(一)程序原理:程序先调用系统时间,然后将返回的二进制数转化成ASCII码,再通过dos显示功能显示出来,并通过循环不断刷新显示的时间。在二进制转化成ASCII码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的BCD码,再将高四位低四位分别相加30H,从而转化为ASCII码,此时要对照书本的附录了解电脑cup如何将ASCII码的信息转换成显示字符。(二)时间刷新:我们的程序是不断对显示屏进行刷新的,所以我们调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后我们

12、用了jmp display指令,刷新显示屏,从而达到时间的每秒显示。(三)屏幕显示:开始做完程序的时候由于采用了光标定位的方法,发现运行了程序后显示光标不停地在不同的位置上跳动,严重影响了程序的可看性。检查了解到光标的跳动跟程序的刷新频率还有人眼的视觉残象成影原理有关,只要系统的刷新频率大于1/25秒,那么人眼就会认为图象在改变,这跟电影为什么要设成25帧/秒的播放速率的原理是一样的。这样一来,就必须设计一较为精确的延时程序来改善画面的显示了,只要不让屏幕刷新得太快就可以打到要求,具体的显示时间是通过延时程序里的DX值决定的,通过调整DX的值,我们发现当DX等于04FF的时候显示效果是最好的。

13、(四)系统退出:开始本程序是使用了DOS中断的键盘功能调用,可是当加了比较跳转指令后整个程序就停了在那里,最后换成了键盘I/O功能调用,问题得到解决。5第五章:系统实现一、程序源代码清单及详细注释;name: ELECTRONIC CLOCK;design by lianglong gongshuai gaokefandata segmentmess1 db Press ESC button to quit ,0ah,0dhdb ,0ah,0dhdb ,0ah,0dhdb ,0ah,0dhdb ELECTRONIC CLOCK ,0ah,0dhdb * ,0ah,0dhdb * ,0ah,0d

14、hdb Henan Agricultural University ,0ah,0dhdb design by lianglong gongshuai gaokefan ,0ah,0dhdb ,0ah,0dhdb ,0ah,0dhdb ,$mess2 db ,0ah,0dh,$t_buff db 20 ;在数据段开辟一时间显示缓冲区data endsstack segmentdb 100 dup(?)stack endscode segmentassume cs:code,ss:stack,ds:datamain:call clear ;调用清屏子程序display: ;-时间显示部分-mov

15、ax, datamov ds,axmov bx,offset t_buff ;送t_buff的偏移地址到BXmov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数分别保存在CH,CL,DH中int 21hmov al,ch ;小时数设定mov ah,0call bctd ;调用进制转换子程序push axand al,0f0h ;选取al高四位mov cl,4 ;设置右循环的次数rol al,cl ;右循环or al,30h ;加30h得到ACSII码mov bx,al ;将得到的结果送到t_buff缓冲区inc bx ;BX自加1,指针指向下一个缓冲区的下一个地址p

16、op axand al,0fh ;选取低四位,道理同上or al,30hmov bx,al ;将转换后的低四位值送入缓冲区的第二个地址inc bx;-mov al,: ;显示分号mov bx,alinc bx;-mov ah,2chint 21hmov al,cl ;分钟数设定mov 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,alinc bx;-mov ah,2ch ;

17、秒设定int 21hmov 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=0,DH跟DL分别为行号与列号,并入栈保护BXmov ah,2mov bh,0mov dh,11mov dl,33int 10hpop bxlea dx,t_buff ;送t_buff偏移地址到D

18、X,并调用DOS显示功能,功能号为9mov ah,9int 21hpush bx ;置光标位置mov ah,2mov bh,0mov dh,0mov dl,0int 10hpop bxlea dx,mess1mov ah,9int 21hpush bx ;置光标位置mov ah,2mov bh,0mov dh,17mov dl,21int 10hpop bxlea dx,mess2mov ah,9int 21h;-call delay1mov ah,1 ;按任意键结束,调用键盘I/O中断功能号1,获取键值到ALint 16hcmp al,1bhjz quit ;是ESC键的话就跳转jmp di

19、splayquit:mov ah,4chint 21hret;-bctd proc near;二进制转BCD码子程序;AX输入参数;AX输出参数,存放调整过的BCD码;mov dx,axmov ax,0mov cx,16 ;设循环次数bctd1:clc ;清进位标志Crcl dx,1 ;通过进位的循环右移adc al,al ;带进位加法daa ;加法的十进制调整xchg al,ah ;交换高,低八位adc al,aldaaxchg al,ahloop bctd1 ;循环,次数保存在CX里retbctd endp;-clear proc nearpush ax ;入栈保护现场push bxpus

20、h cxpush dxmov ax,0600h;ah=06(滚动)al=00(全屏空白)mov bh,6ah ;背景颜色(6),绿色前景(a)sub cx,cxmov dx,5f5fhint 10hpop dx ;出栈恢复现场pop cxpop bxpop axretclear endp;-delay1 PROC ;精确延迟时间子程序MOV DX,04ffh ;循环次数up: XOR CX,CXa: NOPLOOP aDEC DXJNZ upRETdelay1 ENDP;-code endsend main二、实验结果点击运行后,出现运行结果如下: 第六章 总结心得体会:经过以上步骤,课程设计

21、所要求设计的电子钟显示设计软件便成功完成了,它能显示数字式的时钟,并且能设置初值和时钟进制。整个页面简洁清晰,方便用户读取,且操作简捷,符合课程设计中的各项要求。通过这次课程设计,我们对日常生活中司空见惯的时钟的工作原理有了一个比较深入的了解,将书本中的知识更好地与实际生活中的应用结合在了一起。通过这次微机原理课程设计学到了很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。而且我第一次感受到在写一个程序的时候,一定要事先把程序原理方框图画出来的重要性。在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。因为通过程序方框图,在

22、做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。本次课程设计的过程中遇到了很多问题,比如时间走得太快、光标的位置无法定位等等。对每个问题的解决都是一种对知识的重新整理和考察。我更加感到愉悦的,此次的课程设计锻炼了我的编程能力。到此为止,我们接近两周的课程设计也告一段落。通过这次课程设计,使我认识到理论与实际相结合的重要性,对课本上的只是在实际生活中的运用也有了进一步的了解,同时基本上能够掌握汇编语言编程中编程的步骤,可以说是从中受益匪浅。通过本次课设我也学到很多课堂上学不到的调试知识。很感谢学校给我们提供了这么好的学习机会,感谢老师的指导,从老师的身上学到了对知识真正严谨细致的态度,让我受益匪浅。参考文献:1 周佩玲,彭虎傅,忠谦. 微机原理与接口技术. 电子工业出版社.2007 2 朱金均,麻新旗. 微机原理及应用技术(第二版). 机械工业出版社.20053 沈美明,温冬婵.IBM-PC汇编语言程序设计.清华大学出版社.19934 邵玉祥. 汇编语言程序设计. 科学出版社.20055 冯博琴,吴宁.微型计算机原理及接口技术(第二版).清华大学出版社.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1