中断应用程序设计汇编.docx
《中断应用程序设计汇编.docx》由会员分享,可在线阅读,更多相关《中断应用程序设计汇编.docx(12页珍藏版)》请在冰豆网上搜索。
![中断应用程序设计汇编.docx](https://file1.bdocx.com/fileroot1/2023-2/6/28c2601c-9493-4947-ba63-6a477f662875/28c2601c-9493-4947-ba63-6a477f6628751.gif)
中断应用程序设计汇编
课程设计报告
课程名称汇编语言程序设计
课题名称中断驻留程序
专业计算机科学与技术
班级计算机
学号201018
姓名
指导教师唐北平
2013年1月13日
湖南工程学院
课程设计任务书
课程名称汇编语言程序设计
课题中断驻留程序
专业班级计算机1
学生姓名
学号208
指导老师唐北平
审批
任务书下达日期2013年1月5日
任务完成日期2013年1月13日
一、设计内容与设计要求
1.设计内容:
通过本周的课程设计,学生能够巩固所学的基础知识,并能够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。
(1)、编制一计算比赛成绩的程序,要求完成以下功能:
a、9名评委,每个评委给分范围为0~100(整数);
b、9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位);
c、将得分在光标位置处显示出来。
(2)、编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,各数据的格式为:
学号,成绩1,成绩2,…,成绩5
然后根据grade中的学生成绩,把学生名次填入rank数据组中,并显示出来,格式为:
学号,名次
(3)、利用INT1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为
时:
分:
秒:
1/100秒
(4)、输入一个菱形的两条对角线长,在屏幕上用‘*’号画出一个彩色的菱形。
(5)、设置图形方式并显示彩条,要求:
选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次,一直到整个屏幕都显示出彩条
2.设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
(1)、设计正确,方案合理。
(2)、界面友好,使用方便。
(3)、程序精炼,结构清晰。
(4)、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
(5)、上机演示。
(6)、按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编写、调整和运行。
源程序及编译生成各文件均保存在软盘中;
(7)、按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
二、进度安排
第19周:
星期1
星期2
星期3
星期4
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(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
INT21H
MOVAH,1
INT21H
MOVAX,3100H
设置显示时间在屏幕上的位置,
MOVDX,(PRG_LEN+15)/16+16
INT21H
然后进行现场保护,接下来便用一个子函数INTIC来具体实现系统时间显示,将从系统中读取的时,分,秒分别送入内存T到T7,然后块装入指令把SI指向的存储单元读入累加器,其具体实现如下:
C1:
MOVAL,HOUR
CBW
MOVDL,0AH
DIVDL
ORAX,3030H
MOVWORDPTR[T],AX;将小时送入到[T]
MOVAL,MINUTE
CBW
DIVDL
ORAX,3030H
MOVWORDPTR[T+3],AX;将分钟送入到[T+3]和[T+4]
MOVAL,SECOND
CBW
DIVDL
ORAX,3030H
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:
程序调试图
2:
程序运行图
五.总结
这次课程设计时间虽然只有三天,学到了不少,但更多却不是知识上的收获,更多的是我们对程序设计的整体有了一个全新的认识,和同学交流得更好了。
在课程设计中我学会了团结合作精神的重要性,感谢老师悉心的指导,和热情的网友们,还有我们一同奋斗的同学们,这次们上机实验的时间刚好在今年的最冷的时候,老师每天冒着风雪这机房指导我们学习,这让我们非常的感慨,一个简单的程序应该要有一个好的算法,一开始的时候我没有一个好的算法,所以程序老是出错,在教师的悉心指导下,逐渐完善了算法,然后才一步一步的有了一个完整的程序,当然这期间还有同学的的一起努力。
通过这次课程设计我知道了,计算机是通过执行指令序列来解决问题,每种计算机都有一套指令集合供用户使用,对汇编语言有了一个全新的认识,助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,如此就增强了程序的可读性和编写难度,这样符号化的程序设计语言就是汇编语言。
六.附件
CODESEGMENT
ORG100H
ASSUMECS:
CODE,DS:
CODE
HOURDB0
MINUTEDB0
SECONDDB0
COUNTDB18
TDB"00:
00:
00"
START:
MOVAX,CODE
MOVDS,AX
MOVAH,2CH
INT21H
MOVHOUR,CH
MOVMINUTE,CL
MOVSECOND,DH
LEADX,INT1C
MOVAX,251CH
INT21H
MOVAH,1
INT21H
MOVAX,3100H;驻留内存
MOVDX,(PRG_LEN+15)/16+16
INT21H
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
JBC1
MOVMINUTE,0
INCHOUR
CMPHOUR,24
JBC1
MOVHOUR,0
C1:
MOVAL,HOUR
CBW
MOVDL,0AH
DIVDL
ORAX,3030H
MOVWORDPTR[T],AX;将小时送入到[T]
MOVAL,MINUTE
CBW
DIVDL
ORAX,3030H
MOVWORDPTR[T+3],AX;将分钟送入到[T+3]和[T+4]
MOVAL,SECOND
CBW
DIVDL
ORAX,3030H
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
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
POPES
POPDS
CEND:
IRET
INT1CENDP
PRG_LENEQU$-START
CODEENDSENDSTART
计算机科学与技术系课程设计评分表
课题名称:
中断应用程序设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
(注:
1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。
)