显示计时器-汇编语言课程设计报告.doc
文本预览下载声明
汇编语言课程设计
实验题目:常驻内存时钟 学 院:石油化工学院
指导老师:魏宝武 班 级:计算机科学与技术2班
姓 名:高帅 学 号: 21号
地 点:机房 时 间: 17、18周
沈阳工业大学
汇编程序设计报告
设计目的
运用汇编语言编制程序以实现各种功能
将所学汇编语言知识综合起来运用于实际
设计要求
能灵活运用汇编语言进行编程
学习运用调用中断指令实现各种操作
学习中断服务程序设计方法
了解com程序的基本格式
设计内容
本设计的程序结构大致如下:
1.伪指令 进行数据常量赋值(CURSOR字符显示所在列值 ATTRIB字符属性值)
2.代码段 由于本程序属com类型,所以只有一个段即代
码段。
3.数据变量定义、分配空间(OLDCUR 为原光标所在列值 OLD1C 原1C号中断向量的入口地址 )
4.中断服务程序 取代原中断向量INT 1CH。此中断当每次系统时钟发出信号时发出中断,运行显示时间的常驻内存程序。
中断服务程序子程序:
SHOWBYTE 显示时间子程序,入口参数为BX。调用SHOW、CURMOVE子程序。
SHOWCOLON 显示时间中的“:”子程序,无入口参数。
SHOW 在显示器的DOS界面里显示字符、数字,入口参数AL。
CURMOVE 移动光标子程序,无入口参数。
5.中断程序设置部分 将中断服务程序设置成第1CH号中断向量并常驻内存。
设计程序执行过程分析
经分析此程序为com类型的程序,原因是本程序大致上符合com程序格式。
Com 程序的汇编语言格式如下:
NAME 模块名(可有可无)
段名 SEGMENT
ASSUME 段寄存器地址说明
ORG 100H
START:JMP BEGIN
数据空间预置
BEGIN:指令1
指令2
…
指令n
段名 ENDS
END START
Com程序的源程序形式不允许分段,程序中用到的数据定义、存储空间预置、堆栈区域以及程序代码均在仅有的一个段内。程序运行的起点必须是100H。程序结束使用END。按一般编程的习惯,将要定义的数据空间预置放到了程序前面并用JMP指令跳过。
在本程序中唯一不符合格式处为没有设置程序运行起点为100H。
程序执行过程中所用到的中断向量表如下:
INTAH 功能调用参数返回参数102置光标位置BH=页号
DH,DL=行,列103读光标位置BH=页号
CH=光标起始位置
DH,DL=行,列109在光标位置显示字符及
其属性BH=显示页
AL=字符
BL=属性
CX=字符重复次数1A2读实时钟CH:CL=时:分(BCD数)
DH,DL=秒:1/100秒(BCD数)1C定时器控制的软中断,每次系统时钟信号出现时发出中断21
25设置中断向量DS:DX=中断向量
AL=中断类型号2131结束并驻留AL=返回码
DX=驻留区大小2135取中断向量AL=中断类型ES:BX=中断向量
程序过程具体分析如下:
首先,程序开关进行了数据常量的定义,定义了数字显示所在列为69(45h)位于屏幕右侧,和数字显示时的属性值2fh.然后进行代码段的定义,com程序只有一个段,即代码段
从start开始jmp go 转移指令为com程序固定格式,跳过数
据空间预置和自定义的中断服务程序以及其调用的子程序.转到go.
标号go后面的程序为顺序结构,进行中断程序的设置中作.先将CS的内容压栈送入DX中,将AX的内容设置为351H.AH=35H为取中断向量,AL=1CH为中断向量类型,即也1CH号中断向量的CS:IP.
将BX--OLD1C,ES--OLD1C+2,即OLD1C中存储原1CH中断向量的CS:IP.
取标号NEWINT1C的偏移地址送入DX中,(程序开始处已设置DS:CODE)所以此时,DS:DX中为新的INT 1CH的中断向量入口地址.设置AX内容为251CH,AH=25H为设置中断向量,AL=1CH为中断向量类型,即设置INT 1CH的中断向量入口地址为DS:DX,调用INT 21H,将NEWINT1C的位置登记为1CH号中断向量的入口地址.
接下来要将新的中断向量,设置为常驻内存的程序.正常情况下,当程序结束后,其所占内存被DOS收回,中断服务程序即不可再用,若想让程序退出后中断服务程序所占内存仍然保留,以使为后续程序提供中断服务.则必须让中断服务程序驻留内存.
显示全部