中断应用程序设计Word文档下载推荐.docx

上传人:b****2 文档编号:15084604 上传时间:2022-10-27 格式:DOCX 页数:9 大小:75.80KB
下载 相关 举报
中断应用程序设计Word文档下载推荐.docx_第1页
第1页 / 共9页
中断应用程序设计Word文档下载推荐.docx_第2页
第2页 / 共9页
中断应用程序设计Word文档下载推荐.docx_第3页
第3页 / 共9页
中断应用程序设计Word文档下载推荐.docx_第4页
第4页 / 共9页
中断应用程序设计Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

中断应用程序设计Word文档下载推荐.docx

《中断应用程序设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《中断应用程序设计Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

中断应用程序设计Word文档下载推荐.docx

选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次,一直到整个屏幕都显示出彩条

2.设计要求:

掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。

1.设计正确,方案合理。

2.界面友好,使用方便。

3.程序精炼,结构清晰。

4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。

5.上机演示。

6.按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。

源程序及编译生成各文件均保存在软盘中;

7.按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。

并用A4的复印纸打印并装订;

二、进度安排

第16周:

星期1上午8:

00-12:

00

星期2下午2:

00-6:

星期4上午8:

 

附:

课程设计报告装订顺序:

封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。

正文的格式:

一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;

行距为22。

正文的内容:

一、课题的主要功能;

二、课题的功能模块的划分(要求画出模块图);

三、主要功能的实现(至少要有一个主要模块的流程图);

四、程序调试;

五、总结;

六、附件(所有程序的原代码,要求对程序写出必要的注释)。

正文总字数要求在5000字以上(不含程序原代码)。

目录

一.课题的主要功能…………………………………………1

二.课题的功能模块划分……………………………………1

三.主要功能的实现…………………………………………2

四.程序调试…………………………………………………4

五.总结……………………………………………………5

六.附件……………………………………………………7

一.课题的主要功能

本课题主要是要完成一个中断驻留程序,要求在屏幕的右上角上显示当前系统时间,时间格式为时:

秒。

完成该课题的系统时间的功能,需要不断的中断以同步显示系统时间,这里我们需要利用INT1CH,平均每秒中断18.2次,以这样的频率同步显示系统时间足以满足人们的视觉效果。

完成系统时间同步的前提,还需要读取系统时间和显示系统时间。

二.课题的功能模块划分

该课题的的功能模块,就是在定义好数据之后,完成读取系统时间和显示系统时间两大模块。

包括获取原中断类型,保存原中断类型,设置新的中断类型,执行中断处理程序,应用堆栈保护现场,读取系统时间,然后分别将时间的BCD码转换为字符,在制定内存位置写入时间并显示时间,最后恢复现场,中断返回。

具体功能模块图如下:

该课题,采用调用子程序的思想来完成,主体功能都通过子程序模块完成,中断模块,读取系统时间模块,显示系统模块,现场保护模块及现场恢复模块。

通过调用子程序的方法,使本程序更加具有条理性,其中现场保护是为了使寄存器里有用的数据保存起来,让寄存器进行其他运算,现场恢复是使之前保护起来的有用数据恢复,读取系统时间并使屏幕显示的时间与系统时间同步变化,这就不得不使用中断模块,运用INT1CH,可以平均每秒中断18.2次,足以满足视觉上的同步。

三.主要功能的实现

这个程序主要是要实现获取系统时间并显示时间。

定好好数据之后,在DOS环境下,用2C号取系统时间的功能,将时赋值给CH,将分赋值给CL,将秒赋值给DH,将1/100赋值给DL,具体实现如下:

MOVAH,2CH

INT21H

MOVHOUR,CH

MOVMINUTE,CL

MOVSECOND,DH

在DOS环境下,使用25号功能键设置中断向量,DS:

DX=中断向量,AL=中断类型号,接下来完成驻留内存。

MOVAX,251CH

MOVAH,1

MOVAX,3100H

设置显示时间在屏幕上的位置,

MOVDX,(PRG_LEN+15)/16+16

然后进行现场保护,接下来便用一个子函数INTIC来具体实现系统时间显示,将从系统中读取的时,分,秒分别送入内存T到T7,然后块装入指令把SI指向的存储单元读入累加器,其具体实现如下:

C1:

MOVAL,HOUR

CBW

MOVDL,0AH

DIVDL

ORAX,3030H

MOVWORDPTR[T],AX;

将小时送入到[T]

MOVAL,MINUTE

MOVWORDPTR[T+3],AX;

将分钟送入到[T+3]和[T+4]

MOVAL,SECOND

MOVWORDPTR[T+6],AX;

将秒钟送入到[T+6]和[T+7]

MOVCX,8

MOVAX,0B800H

MOVES,AX

LEASI,[T]

MOVDI,144

C3:

LODSB;

块装入指令把SI指向的存储单元读入累加器

STOSW;

从AX读取的字送入到ES:

DI

LOOPC3

CEND:

IRET

INT1CENDP

以上是该课题的主要功能实现,该课题的总流程图如下:

四.程序调试

1:

程序调试图

图4.1

2:

程序运行图

图4.2

图4.3

五.总结

上机调试 

程序运行结果如下,调试过程遇到了一些问题,主要的是显示结果为乱码的情况,通过debug调试,发现原来是把两位数的时间转换为两个对应的字符输出时出现了问题,原来在《汇编语言》写得那本书上看到介绍CMOS存取块时说过其中就保存有当前的系统时间,我也自己用代码实现过,应为那里面保存两位的时间是用组合型BCD码来实现的,受它的影响在实现调用系统时间中断功能时也想它是不是也是这样实现的,或者根本就是调用了它的值,后来才发现自己想错了,该过之后就得出了上面真确的结果。

在编写程序过程中也出现一些编译错误,但我认为这些都是最低级的错误,和容易就能通过编译器的提示把它解决,

在开始写代码前,我首先认真的阅读了群里老师发过来的那个与之类似的程序,它是随机的输出0到9之间的整数。

但刚一开始阅读那个源程序我就发现其中有好多的错误,而且程序不完整,所以我决定先把这个示例程序调试出来,然后再写自己的那个程序。

刚开始有好多的地方看不懂,有加之有些地方程序本身有问题,所以觉得我做的第三题应该有难度。

但有一句说的好:

明知山有虎,偏向虎山行,学习最忌讳的就是知难而退,对自己没有信心。

学习不能被眼前的一点小小的困难就吓倒,而爬不起来,那么如果一直这样下去你是很难学到有用的东西的,或者说是很难在这方面有一定的成绩的。

学了一学期的汇编,一个这么小小的程序还不能完成那真是白学了,况且平时花在这门课程上的时间也不少。

于是,我不断的鼓励自己,一定能做得出来的,看不懂的地方我就到网上去查,问身边的同学,经过一下午的努力终于把那示例程序调试了出来。

也大致清楚了我要做的那题的基本思路,后来根据那个示例程序的提示,在晚上就把它弄出来了。

通过这一次的课设练习,对汇编了解了很多,更加的巩固了以前学习的那些基础知识,同时我也发现在写汇编程序中要注意的很多细节:

 

要合理,真确的利用自定义的堆栈来保护好寄存器的值,只要把入口参数,和子程序中要用到的寄存器的值保护起来就好了,输出参数是不能保护的,在调试程序的过程中我就出现了应为把输出参数也保护起来的低级的错误。

合理的利用debug功能,会是你在调试程序过程中事半功倍。

刚开始认为调用系统时间中断,保存在对应寄存器中的值是用组合型BCD码形式保存的(因为CMOS中存取的系统时间就是用组合型BCD码来存取的)。

于是我直接通过移位操着得到其高四位,低四位的值,并输出来,发现结果时乱码,后来通过debug功能,查看对应寄存器中的值,发现原来就是用十进制形式保存的,直接除以10 

就可以得到其余数和商,输出即可。

六.附件

CODESEGMENT

ORG100H

ASSUMECS:

CODE,DS:

CODE

HOURDB0

MINUTEDB0

SECONDDB0

COUNTDB18

TDB"

00:

00"

START:

MOVAX,CODE

MOVDS,AX

MOVSECOND,DH

LEADX,INT1C

MOVAX,3100H;

驻留内存

INT1CPROCFAR

DECCS:

COUNT

JZC2

JMPCEND

C2:

PUSHDS

PUSHES

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

PUSHDI

PUSHCS

POPDS

MOVCOUNT,18

INCSECOND

CMPSECOND,60

JBC1

MOVSECOND,0

INCMINUTE

CMPMINUTE,60

MOVMINUTE,0

INCHOUR

CMPHOUR,24

MOVHOUR,0

C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

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

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