1、 1 作业题目 操作系统实验报告 学生学号 学生姓名 所在院系 计算机科学与技术学院 专业名称 计算机科学与技术 完成时间 2 一、一、 实验报告题目: 自制时钟 二、二、 问题描述 编制和调试一个自制时钟,在屏幕右上角当时的时间;按: 形式显示,并且能正确进位,24 小时应消零。系统每隔 55ms 就自动调用新 的中断, 在主程序中取系统时间, 并驻留程序。 在新的 1Ch号中断中显示时间。 编制一个汇编程序,它应包括两个部分: 1) 新的 1CH 中断处理程序,其功能 是,首先执行原 1CH中断处理,然后取当 时系统时间,处理进位,正确显示 当时的时间。 2) 初始化程序:其功能是,首先取
2、原 1CH 中断向量,然后设置 新 1CH 中断向 量,最后驻留新 1CH 中断处理程序 三、三、 数据结构及符号说明 CLOCK: 设置新的 1CH 中断处理程序并常驻内存。 DISPLAY:利用宏定义及宏调用保存光标位置,并写入字符。 SHOW: 在在屏幕右上角显示正确变化的当时时间 TRNS: 利用宏定义及宏调用将时间的二进制转换成ASCII字符显示出 来。 CURSOR: 在屏幕右上角显示当时的系统时钟,如 20:05:33。 DEAL: 对时间的进位进行处理控制。 四、四、 流程图 3 五、五、 源程序及说明 .286 DATAS SEGMENT h1 db 0 h2 db 0 m1
3、 db 0 m2 db 0 入口 取 1ch 中断向量并保存 设置新的 1ch 中断向量 取系统时间 将时、分、秒转换为可显示的形 式,存入相应变量单元 程 序 驻 留 退 出 init 初始化程序 Y Count=0? 入口 执行原 1ch 中 保存各寄存 Count 计数减 int-1c 中断返回 Count 恢复初 Sec2+1 进行一系列计数、进位 恢 复 各 寄 存 取光标位置并保 置新光标位 依次显示 hour1 等开始的 8 个字节 显 示 回 恢复光标位 1ch 中断处理程 入口 取 1ch 中断向量并保存 设置新的 1ch 中断向量 取系统时间 将时、分、秒转换为可显示的形
4、式,存入相应变量单元 程 序 驻 留 退 出 init 初始化程序 N Y Count=0? 入口 执行原 1ch 中 保存各寄存 Count 计数减 int-1c 中断返回 Count 恢复初 Sec2+1 进行一系列计数、进位 恢 复 各 寄 存 取光标位置并保 置新光标位 依次显示 hour1 等开始的 8 个字节 显 示 回 恢复光标位 1ch 中断处理程 4 s1 db 0 s2 db 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX main proc far ;保存原
5、有 1ch 中断 mov al,1ch mov ah,35h int 21h push es push bx push ds ;设置新的 1ch 中断 mov ax,seg clock mov ds,ax mov dx,offset clock mov al,1ch mov ah,25h int 21h ;常驻内存 mov ax,3100h int 21h ;恢复原有 1ch 中断 pop ds pop dx pop ds mov al,1ch mov ah,25h int 21h ;退出 mov ax,4c00h int 21h main endp clock proc far call g
6、ettime iret clock endp ;获取系统时间 gettime proc near 5 pusha mov ah,2ch int 21h ;将除数 10 保存在 bl中 mov bl,10d ;处理小时 mov al,ch cbw div bl mov h1,al mov h2,ah ;处理分钟 mov al,cl cbw div bl mov m1,al mov m2,ah ;处理秒 mov al,dh cbw div bl mov s1,al mov s2,ah ;显示时间 call showtime popa ret gettime endp ;显示时间 showtime proc near pusha ;获取当前光标位置 mov bh,0h mov ah,03h int 10h push dx push cx ;重置光标 mov bh,0d mov dh,0d mov dl,72d mov ah,02h int 10h ;显示时间 add h1,30h 6 mov al,h1 mov ah,0eh int 10h add h2,