1、 - 1 - 汇编语言与接口技术课程设计报告汇编语言与接口技术课程设计报告 题题 目目 计时器计时器 系系 部部 计算机学院计算机学院 专专 业业 计算机科学与技术计算机科学与技术 年级年级 1010 级级 学生姓名学生姓名 学学 号号 - 2 - 目目 录录 1、设计目的 1 2、总体设计 3 3、详细设计: 3 3.1、程序具体功能: 错误错误! !未定义书签。未定义书签。 3.2、函数功能: 错误错误! !未定义书签。未定义书签。 3.3、调试分析 错误错误! !未定义书签。未定义书签。 4、源程序和运行结果 4 4.1、源程序 . 4 4.2、运行结果 . 4 4.3、心得体会 . 8
2、 5、 参考文献. 9 - 3 - 计时器 1、 设计目的设计目的 1.1 课程设计题目:计时器 1.2 课程设计任务及要求: 在屏幕上显示时:分:秒(HH:MM:SS) 。按下非空格 键开始计时,并显示 00:00:00,每过 1 秒,SS 增 1,到 60 秒 MM 增 1,到 60 分 HH 增 1,到 24 后回归到 00:00:00 重新计 时。当按下空格键时,程序结束并返回 DOS,数字钟消失。 2、总体设计、总体设计 3、详细设计:、详细设计: 3.1、程序具体功能 定义数据段;创建输入时间功能,并以此为起始时间开始计时;创 计时器计时器 构建一个虚 拟地址 “xx:xx:xx”
3、 构 建 一 个 数据段 构建以延时 子程序 主程序 利用函数实 现功能 创建一个秒 钟段 创建一个小 时段 创建一个分 钟段 - 4 - 建 10 个存储位; 将 10 个存储位分别通过 buf+1buf+10 定义为时分 秒相对的位置;输入一个时间后将以此时间开始计时并在“时”到达 24 时所有位置自动清零。 3.2、函数功能 用 data 类创建一个数据段 buf,并在其后的地址空间中使“时: 分:秒”依次显示出来;在用创建 proc 类即构建子程序如: 时,分, 秒和延时这四个子程序。并在从程序中用“inc”实现地址中数据自 加 1; “jnz”实现地址跳转到指定执行步骤;利用 “cm
4、p”比较指令 来完成:时,分,秒 的清零和自身的跳转。 3.3、调试分析 由于对部分代码意义不明确, 因此在程序的编译时出现很多错误, 在对程序进行调试的时 候先后出现了时间表出现乱码、或者无法输入时间、时间表超过 24:00:00 时不会清零等问 题,通过与同学探讨以及向老师的询问,逐渐解决了以上问题。 4、源程序源程序和运行结果和运行结果 4.1、源程序、源程序 data segment st1 db:$ input db 20 db ? db 20 dup(?) data ends code segment assume cs:code,ds:data start: - 5 - mov
5、ax,data mov ds,ax mov dx,offset st1 mov ah,09h int 21h mov dl,0ah mov ah,2 int 21h mov dl,0dh mov ah,2 int 21h mov dx,offset input mov ah,0ah int 21h mov dl,0ah mov ah,2 int 21h mov dl,0dh mov ah,2 int 21h mov input+10,$ t1:call output inc input+9 call second call time jmp t1 mov ah,4ch int 21h second proc cmp input+9,3ah jnz back mov input+9,30h inc input+8 cmp input+8,36h jnz back mov input+8,30h - 6 - inc input+6 call minute back:nop ret second endp minute proc cmp in