课程设计报告IBM汇编电子钟_第1页
课程设计报告IBM汇编电子钟_第2页
课程设计报告IBM汇编电子钟_第3页
课程设计报告IBM汇编电子钟_第4页
课程设计报告IBM汇编电子钟_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告课程名称:微机原理与接口技术课程设计设计题目: 数字钟 系 别: 专 业: 组 别: 学生姓名: 学 号:起止日期: 指导教师: 教研室主任: 目录1. 需求分析 31.1 课程设计题目 31.2 课程设计任务及要求 31.3 课程设计思想 31.4 软硬件运行环境及开发工具 32. 概要设计 42.1 程序流程图 42.2 设计方法及原理说明 63. 详细设计 63.1 程序代码 63.2 运行结果 114. 调试与操作说明 125. 课程设计体会与总结 126. 致谢 137. 参考文献 13第一章 需求分析1.1 课程设计题目: 数字钟1.2 课程设计任务及要求: 在屏幕上显

2、示时:分:秒(hh:mm:ss)。按下非空格键开始计时,并显示00:00:00,每过1秒,ss增1,到60秒mm增1,到60分hh增1,到24后回归到00:00:00重新计时。当按下空格键时,程序结束并返回dos,数字钟消失。1.3 课程设计思想 数字钟的设计包括两个方面,一是计时,一是显示。计时利用int 1ch调用次数来实现。int 1ch是每秒钟被定时器硬件中断8调用18.2次,在程序的数据段中设立1个计数单元count,令int 1ch用户中断服务程序每次对它加1,若计到18次,则为1秒。这样一直累加下去,直到计满24小时,然后清零,又重新开始。时间显示利用dos系统功能调用功能,将时

3、、分、秒计时的内容送到屏幕显示。本题是利用系统的定时器资源,用户不用设计硬件电路。系统bios已对定时器进行了初始化,不需再写定时器的初始化程序段。程序分主程序和中断服务程序两部分:主程序包括对int 1ch向量的获取、修改和恢复,数字钟的显示、启动和停止退出控制。主程序的主体是一个循环结构:判断有无键按下,有键按下是否为空格键,若是空格键则退出循环转到程序结束处理;否则,显示数字钟的hh:mm:ss。中断服务程序主要是对计数单元加1及秒、分、小时进位的调整。服务程序不写中断结束指令,以iret指令返回。1.4 软硬件运行环境及开发工具 根据bios对8253初始化的规定,装入计数初值后,定时

4、的计数通道0就自动地从输出端out0向8259a的irq0每隔55ms申请1次中断,并进入硬件中断8的服务程序。中断8中断服务程序的功能有三项:对日时钟双字计数区(地址为0040:006c)进行加1计数,以实现日时钟的计时功能。当计数到001800b0h时(以55ms为计时单位),即到24小时,双字计数区复位到0,并建立“新日”标志,开始第二天计时。在中断8的服务程序中,发出一条int 1ch软中断指令,即调用1次int1ch。但是,int 1ch的服务程序只是一条iret指令,没有做任何事情就返回到中断8的服务程序中。对软盘动马达定时单元进行减1计数,减到0时,表示马达转速已达到要求。int

5、 1ch的作用:int 1ch作为用户定时中断。其方法是用户自己编制一个定时中断服务程序,并修改1ch号中断的中断向量,使之指向自编中断服务程序的入口地址。服务程序的主体部分是作加1操作,即对55ms进行累加。每调用1次,加55ms,当加到预设的时间就结束。这实际上是统计int 1ch调用的次数,若要求定时的时间为t,调用次数为n,则t55n(ms)。从式中就可以知道所要求的定时,需要调用多少次int 1ch。用户自编int 1ch中断服务程序时,程序结束应以iret指令返回。注:修改了int 1ch中断向量,使其指向自编中断服务程序入口,则自编中断程序就会不停地每秒被调用18.2次,与cpu

6、的运行速度无关。这说明了采用int 1ch定时中断作为用户的定时或延时,具有通用性和可移植性好的特点。设计提示数字钟的设计包括两个方面,一是计时,一是显示。计时利用int 1ch调用次数来实现。int 1ch是每秒钟被定时器硬件中断8调用18.2次,在程序的数据段中设立1个计数单元count,令int 1ch用户中断服务程序每次对它加1,若计到18次,则为1秒。这样一直累加下去,直到计满24小时,然后清零,又重新开始。时间显示利用dos系统功能调用功能,将时、分、秒计时的内容送到屏幕显示。本题是利用系统的定时器资源,用户不用设计硬件电路。系统bios已对定时器进行了初始化,不需再写定时器的初始

7、化程序段。程序分主程序和中断服务程序两部分:主程序包括对int 1ch向量的获取、修改和恢复,数字钟的显示、启动和停止退出控制。主程序的主体是一个循环结构:判断有无键按下,有键按下是否为空格键,若是空格键则退出循环转到程序结束处理;否则,显示数字钟的hh:mm:ss。中断服务程序主要是对计数单元加1及秒、分、小时进位的调整。服务程序不写中断结束指令,以iret指令返回。第二章 概要设计2.1 程序流程图开 始判断是否按下非空格键显示开始计时提示语ny保存系统1ch中断服务子程序入口地址,并把1ch中断指向我们自己所写的中断服务子程序进入主函数main显示退出提示语和时间判断是否按下空格键ny恢

8、复系统1ch中断,退出程序ysisi+1=0n判断sisi+1=24?si+1,aaa指令调整y判断si+3si+2=60?si+2+1,aaa指令调整y判断si+4si+5=60?si+4+1,aaa指令调整计数单元count+1y判断count=18?关中断中断服务子程序流程图开中断,退出中断服务子程序2.2 设计方法及原理说明 数字钟的设计包括两个方面,一是计时,一是显示。计时利用int 1ch调用次数来实现。int 1ch是每秒钟被定时器硬件中断8调用18.2次,在程序的数据段中设立1个计数单元count,令int 1ch用户中断服务程序每次对它加1,若计到18次,则为1秒。这样一直累

9、加下去,直到计满24小时,然后清零,又重新开始。时间显示利用dos系统功能调用功能,将时、分、秒计时的内容送到屏幕显示。主程序包括对int 1ch向量的获取、修改和恢复,数字钟的显示、启动和停止退出控制。主程序的主体是一个循环结构:判断有无键按下,有键按下是否为空格键,若是空格键则退出循环转到程序结束处理;否则,显示数字钟的hh:mm:ss。中断服务程序主要是对计数单元加1及秒、分、小时进位的调整。服务程序不写中断结束指令,以iret指令返回。第三章 详细设计3.1 程序代码datas segmentcount db 0hh dw 3 dup(0)yy dw 0,:,0,:,0,$ int_s

10、eg dw ?int_off dw ?gg db 00 :00 :00$tishi1 db press not space to start!$ tishi2 db if you want to exit,press space!$ datas endsstacks segmentfd db 50 dup(0)stacks endscodes segment assume cs:codes,ds:datas,ss:stacksstart: mov ax,datas mov ds,ax call clear mov ah,02 mov bh,00 mov dl,18h mov dh,09h in

11、t 10h ;移动光标到指定位置 mov dx,offset tishi1 mov ah,09h int 21h mov ah,02 mov bh,00 mov dl,20h mov dh,0ch int 10h mov dx,offset gg mov ah,09h int 21h ;显示开始计时提示语 mov ah,01h int 16h jz tt mov ah,00h int 16h cmp al,20h jz tt ;检测是否按下非空格键 mov ax,351ch int 21h mov ax,es mov int_seg,ax mov int_off,bx ;保存原中断向量 cli

12、 mov ax,251ch mov dx,seg int_pro mov ds,dx mov dx,offset int_pro int 21h ;设置新中断向量 sti call main ;进入主函数main mov ah,4ch int 21htt: loop startmain proc push ax push si push dx push bx push dsff: mov ax,datas mov ds,ax call clear mov ah,02 mov bh,00 mov dl,15h mov dh,09h int 10h mov dx,offset tishi2 mov

13、 ah,09h int 21h ;显示退出提示语 mov ah,02 mov bh,00 mov dl,20h mov dh,0ch int 10h ;移动光标到屏幕中间 mov si,offset hh mov di,offset yy mov al,si+4 or al,30h mov di+9,al mov al,si+5 or al,30h mov di+8,al mov al,si+3 or al,30h mov di+4,al mov al,si+2 or al,30h mov di+5,al mov al,si+1 or al,30h mov di,al mov al,si or

14、 al,30h mov di+1,al ;根据小端法则将数据交叉放入指定空间 mov ah,09h mov dx,offset yy int 21h mov ah,01h int 16h jz ff mov ah,00h int 16h cmp al,20h jz quit loop ffquit: cli mov ax,251ch ;恢复原中断向量 mov dx,int_seg mov ds,dx mov dx,int_off int 21h sti pop ds pop bx pop dx pop si pop ax retmain endpclear proc ;刷新屏幕mov ax,3

15、600hmov bh,07mov cx,0000hmov dx,184fhint 10hretclear endpint_pro proc far push ax push siclimov ax,datasmov ds,axmov si,offset hhinc countcmp count,12hjnz kkmov al,0mov count,al mov ax,si+4 add ax,1 aaa mov si+4,ax ;修改秒 cmp ax,600hjnz kk mov ax,0 mov si+4,ax mov ax,si+2 add ax,1 aaa mov si+2,ax ;修改分

16、 cmp ax,600hjnz kk mov ax,0 mov si+2,al mov ax,si add ax,1 aaa mov si,ax ;修改小时 cmp ax,204h jnz kk mov ax,0 mov si,axkk:pop sipop axstiiretint_pro endpcodes ends end start3.2 运行结果第四章 调试与操作说明根据bios对8253初始化的规定,装入计数初值后,定时的计数通道0就自动地从输出端out0向8259a的irq0每隔55ms申请1次中断,并进入硬件中断8的服务程序。中断8中断服务程序的功能有三项:对日时钟双字计数区(地

17、址为0040:006c)进行加1计数,以实现日时钟的计时功能。当计数到001800b0h时(以55ms为计时单位),即到24小时,双字计数区复位到0,并建立“新日”标志,开始第二天计时。在中断8的服务程序中,发出一条int 1ch软中断指令,即调用1次int1ch。但是,int 1ch的服务程序只是一条iret指令,没有做任何事情就返回到中断8的服务程序中。对软盘动马达定时单元进行减1计数,减到0时,表示马达转速已达到要求。int 1ch的作用:int 1ch作为用户定时中断。其方法是用户自己编制一个定时中断服务程序,并修改1ch号中断的中断向量,使之指向自编中断服务程序的入口地址。服务程序的

18、主体部分是作加1操作,即对55ms进行累加。每调用1次,加55ms,当加到预设的时间就结束。这实际上是统计int 1ch调用的次数,若要求定时的时间为t,调用次数为n,则t55n(ms)。从式中就可以知道所要求的定时,需要调用多少次int 1ch。用户自编int 1ch中断服务程序时,程序结束应以iret指令返回。第五章 课程设计体会和总结经过这为期三天的实训,我清晰的认识到了自己在汇编语言的学习上的不足。刚刚接触到这个课程设计的题目的时候自己是很迷茫的,不知道怎么下手,但是仔细的看了老师所给的课程设计任务书以后感觉自己的思路一下子被打开了。可是在自己设计程序的时候就又遇到了一个问题,对于修改中断服务子程序的入口地址虽然在理论上自己懂,但是从来都没写过这种程序,所以自己查了一下相关的书籍才真正的完整的知道怎么修改中端服务子程序的入口地址了。随后是中端服务子程序中时分秒数据的进位问题。最后就是进入数字钟显示界面的设计问题,主要是int 10h号终端来控制输出属性和字符输出的位置。这整个课程设计下来我感觉确实对自己在这半年来所学习到的知识起到很好的练手作用。第六章 致谢感谢学院和系部给了我们这次实训的机会,同时也感谢黄老师分出您宝贵

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论