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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(汇编课设 显示系统时间汇编语言程序设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编课设 显示系统时间汇编语言程序设计.docx

1、汇编课设 显示系统时间 汇编语言程序设计课 程 设 计 报 告课程名称 汇编语言程序设计 课题名称 显示系统时间 专 业 计算机科学与技术 班 级 计算机0901 学 号 200903010128 姓 名 饶发强 指导教师 唐北平 2011 年 12 月 23 日湖南工程学院课 程 设 计 任 务 书课程名称 汇编语言程序设计 课 题 显示系统时间 专业班级 计算机0901 学生姓名 学 号 200903010128 指导老师 唐北平 审 批 任务书下达日期 2011 年 12 月1 日任务完成日期 2011 年 12 月 23 日目录一、课题主要功能4二、课题的功能模块的划分5三、课题主要功

2、能实现6四、上机调试 8五、心得体会9六、附录(原程序) 101课题的主要内容我做的是第三个课题:利用INT 1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为时:分:秒:1/100秒2课题的功能模块的划分显示系统时间程序可以大致分为三个模块:1. 利用1ch号功能来重定位中断程序的入口地址2. 调用21号中断的31h程序结束并驻留功能,使得显示时间的子程序常驻内存3. 显示系统时间模块功能模块图如下: 系统按每秒18。2次的频率调用 N Y3主要功能实现1.重定位入口地址;重定位中断程序的入口地址 lea dx,showtime mo

3、v ax,seg showtime mov ds,ax mov ax,251ch int 21h2.程序驻留并结束;调用21号中断的31h程序结束并驻留功能 mov ax,3100h mov dx,proclen int 21h3.显示系统时间showtime proc push ax push bx push ds push es mov ax,cs mov ds,ax mov ax,0b800h mov es,ax mov ax,2c00h ;调用21h号中断的2ch功能 int 21h ;输出时钟 mov bl,: mov bh,ch call adjust mov es:120,al

4、mov es:120+2,ah mov es:120+4,bl ;输出分钟 mov bh,cl call adjust mov es:120+6,al mov es:120+8,ah ;输出秒钟 mov bh,dh call adjust mov es:120+12,al mov es:120+14,ah mov es:120+16,bl ;输出毫秒 mov bh,dl call adjust mov es:120+18,al mov es:120+20,ah pop es pop ds pop bx pop ax iretshowtime end显示系统时间的流程图如下:4上机调试程序运行结

5、果如下: 调试过程遇到了一些问题,主要的是显示结果为乱码的情况,通过debug调试,发现原来是把两位数的时间转换为两个对应的字符输出时出现了问题,原来在汇编语言-王爽 写得那本书上看到介绍CMOS存取块时说过其中就保存有当前的系统时间,我也自己用代码实现过,应为那里面保存两位的时间是用组合型BCD码来实现的,受它的影响在实现调用系统时间中断功能时也想它是不是也是这样实现的,或者根本就是调用了它的值,后来才发现自己想错了,该过之后就得出了上面真确的结果。 在编写程序过程中也出现一些编译错误,但我认为这些都是最低级的错误,和容易就能通过编译器的提示把它解决,这里就没说了。5心的体会在开始写代码前,

6、我首先认真的阅读了群里老师发过来的那个与之类似的程序,它是随机的输出0到9之间的整数。但刚一开始阅读那个源程序我就发现其中有好多的错误,而且程序不完整,所以我决定先把这个示例程序调试出来,然后再写自己的那个程序。刚开始有好多的地方看不懂,有加之有些地方程序本身有问题,所以觉得我做的第三题应该有难度。但有一句说的好:明知山有虎,偏向虎山行,学习最忌讳的就是知难而退,对自己没有信心。学习不能被眼前的一点小小的困难就吓倒,而爬不起来,那么如果一直这样下去你是很难学到有用的东西的,或者说是很难在这方面有一定的成绩的。 学了一学期的汇编,一个这么小小的程序还不能完成那真是白学了,况且平时花在这门课程上的

7、时间也不少。于是,我不断的鼓励自己,一定能做得出来的,看不懂的地方我就到网上去查,问身边的同学,经过一下午的努力终于把那示例程序调试了出来。也大致清楚了我要做的那题的基本思路,后来根据那个示例程序的提示,在晚上就把它弄出来了。通过这一次的课设练习,对汇编了解了很多,更加的巩固了以前学习的那些基础知识,同时我也发现在写汇编程序中要注意的很多细节:1. 对重要的语句块,子程序必须记得的写注释,不然很难让人看懂,除非你不想让别人看懂它,上机的过程中,一同学要我帮他去看一下他在网上下载过来的源程序,整个程序下来就没有看到一个注释,200多行的代码,让人怎么看啊!2. 要合理,真确的利用自定义的堆栈来保

8、护好寄存器的值,只要把入口参数,和子程序中要用到的寄存器的值保护起来就好了,输出参数是不能保护的,在调试程序的过程中我就出现了应为把输出参数也保护起来的低级的错误。3. 合理的利用debug功能,会是你在调试程序过程中事半功倍。刚开始认为调用系统时间中断,保存在对应寄存器中的值是用组合型BCD码形式保存的(因为CMOS中存取的系统时间就是用组合型BCD码来存取的)。于是我直接通过移位操着得到其高四位,低四位的值,并输出来,发现结果时乱码,后来通过debug功能,查看对应寄存器中的值,发现原来就是用十进制形式保存的,直接除以10 就可以得到其余数和商,输出即可。六源程序assume cs:cod

9、e,ds:codestack segment db 128 dup(?)stack endscode segmentstart: ;ss段寄存器的装入 mov ax,stack mov ss,ax mov sp,128 ;重定位中断程序的入口地址 lea dx,showtime mov ax,seg showtime mov ds,ax mov ax,251ch int 21h ;调用21号中断的31h程序结束并驻留功能 mov ax,3100h mov dx,proclen int 21hshowtime proc push ax push bx push ds push es mov ax

10、,cs mov ds,ax mov ax,0b800h mov es,ax mov ax,2c00h ;调用21h号中断的2ch功能 int 21h ;输出时钟 mov bl,: mov bh,ch call adjust mov es:120,al mov es:120+2,ah mov es:120+4,bl ;输出分钟 mov bh,cl call adjust mov es:120+6,al mov es:120+8,ah ;输出秒钟 mov bh,dh call adjust mov es:120+12,al mov es:120+14,ah mov es:120+16,bl ;输出

11、毫秒 mov bh,dl call adjust mov es:120+18,al mov es:120+20,ah pop es pop ds pop bx pop ax iretshowtime endp;入口参数为bh,出口参数为ah,al;因为调用2ch中断得到的时间是用十六进制表示的,所以直接除以10得到商和余数adjust proc mov ah,0 mov al,bh mov bh,10 div bh add ah,30h add al,30h ret adjust endp proclen equ $-showtimecode endsend start另外附上用直接调用70,

12、71号端口显示系统时间的源程序:assume cs:code,ds:codestack segment db 128 dup(?)stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,128 lea dx,showtime mov ax,seg showtime mov ds,ax mov ax,251ch int 21h mov ax,3100h mov dx,proclen int 21hshowtime proc push ax push bx push ds push es mov ax,cs mov ds,ax mov

13、ax,0b800h mov es,ax mov ah,: mov al,4 out 70h,al in al,71h call intchar mov es:120,bh mov es:120+2,bl mov es:120+4,ah mov al,2 out 70h,al in al,71h call intchar mov es:120+6,bh mov es:120+8,bl mov es:120+10,ah mov al,0 out 70h,al in al,71h call intchar mov es:120+12,bh mov es:120+14,bl pop es pop ds

14、 pop bx pop ax iretshowtime endp intchar proc push cx mov bh,al mov bl,bh mov cl,4 shr bh,cl and bl,0fh add bh,30h add bl,30h pop cx retintchar endp proclen equ $-showtimecode endsend start计算机科学与技术系课程设计评分表课程名称: 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: (注:1此页附在课程设计报告之后;2综合成绩按优、良、中、及格和不及格五级评定。)

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

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