8086数字时钟课程设计报告.docx
- 文档编号:27003123
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:21
- 大小:179.32KB
8086数字时钟课程设计报告.docx
《8086数字时钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《8086数字时钟课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
8086数字时钟课程设计报告
INTEL8086/8088系列
微型计算机
原理及接口技术
课程名称:
微型计算机原理及接口技课程设计
设计题目:
具有年月日时分秒功能的时钟显示
院系:
电气工程学院
班级:
设计者:
学号:
同组者:
指导教师:
设计时间:
目录
一、设计内容与要求2
二、设计思路2
三、流程图3
四、程序6
五、运行结果11
六、硬件设计…………………………………………………………………………………………………
七、调试步骤12
八、心得体会13
九、参考文献13
一、设计内容与要求:
用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间****年**月**日**时**分**秒。
在程序启动后,微机屏幕上显示当前时间,按下a键开始计时,按下b键停止计时,按下c键退出程序。
二、设计思路:
利用BIOS的INT1AH的2号系统功能调用,将计算机系统的时间参数(BCD码)送入寄存器。
其中CH和CL中保存的是小时数和分钟数;DH中保存的是秒钟数。
利用除法命令DIV,若进行字节操作,16位被除数隐含在AX中,8位除数就是源操作数,结果的8位商在AL中,8位余数在AH中,即
(AL)(AH)/(SRC)的商
(AL)(AH)/(SRC)的余数
若进行字操作,32位被除数低16位隐含在AX中,高16位8位隐含在DX中,16位除数就是源操作数,结果的16位商在AX中,16位余数在DX中,即
(AX)(DX,AX)/(SRC)的商
(DX)(DX,AX)/(SRC)的余数
通过以上方法将二进制表示的年月日时分秒转换为BCD码,再将BCD码表示的时,分,秒转换成ASCⅡ码并送入屏幕显示。
能调用子程序,若显示时间与当前时间不符,则校准显示时间,并用INT21H的7号功能调用判断输入回车并清屏。
若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示。
详细过程见程序注释。
三、流程图:
N
四、程序:
GBMACROX;宏定义
MOVAX,0200H
MOVBX,0000H
MOVCX,0000H
MOVDX,X
INT10H
ENDM
XIANSHIMACROY,Z,W
MOVBP,OFFSETY
MOVAH,13H
MOVAL,0B
MOVBX,0EH
MOVCX,Z
MOVDX,W
INT10H
ENDM
DATASEGMENT
BUFFER1DB11DUP(?
)
BUFFER2DB9DUP(?
)
SECONDDB?
SIGNDB?
STR1DB'THECURRENTTIME:
$'
STR4DB'PRESSCTOEXIT:
$'
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP('S')
STACKENDS
CODESEGMENTPARA'CODE'
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
STAPROCFAR
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,0600H
MOVBX,0754H
MOVCX,0000H
MOVDX,194FH
INT10H
XIANSHISTR1,17,0416H;显示‘THECURRENTTIME:
’
XIANSHISTR4,16,1016H;显示‘PRESSCTOEXIT:
’
BEGIN:
CMPSIGN,3;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示
JETUI1
MOVAH,2AH
INT21H;取日期
LEABX,BUFFER1
PUSHDX;保护寄存器
MOVAX,CX;利用除法产生商和余数,把以二进制形式保存的年号转换为BCD码
MOVDX,0000H;年号除以1000得到商即为年号的千位
MOVCX,1000
DIVCX
ORAL,30H;年号的千位转换为其ASCII码并存入BUFFER1第1存储单元中
MOV[BX],AL
MOVAX,DX;年号的百位转换为其ASCII码并存入BUFFER1第2存储单元中
MOVCL,64H
DIVCL
ORAL,30H
INCBX
MOV[BX],AL
MOVAL,AH
MOVAH,00H;年号的十位转换为其ASCII码并存入BUFFER1第3存储单元中
MOVCL,10
DIVCL
ORAL,30H
INCBX
MOV[BX],AL
ORAH,30H;年号的千位转换为其ASCII码并存入BUFFER1第4存储单元中
INCBX
MOV[BX],AH
POPDX;年号转换完毕
INCBX
MOVCL,2DH;“—”号的ASCII码存入BUFFER1第5存储单元中
MOV[BX],CL;月数除以10得到商即为月数的十位
MOVAL,DH;月数的十位转换为其ASCII码并存入BUFFER1第6存储单元中
CMPAL,10
JAEL1
JMPL2
L1:
ADDAL,6
L2:
PUSHAX
ANDAL,0F0H
SHRAL,1
SHRAL,1
SHRAL,1
SHRAL,1
ORAL,30H
INCBX
MOV[BX],AL
POPAX
ANDAL,0FH
ORAL,30H
INCBX
MOV[BX],AL;月数的十位转换为其ASCII码并存入BUFFER1第7存储单元中
INCBX;月数转换完毕
MOVCL,2DH;“—”号的ASCII码存入BUFFER1第8存储单元中
MOV[BX],CL;日期除以10得到商即为日期的十位
MOVAL,DL;日期的十位转换为其ASCII码并存入BUFFER1第9存储单元中
MOVAH,00H
MOVCL,10
DIVCL
ORAL,30H
INCBX
MOV[BX],AL;日期的个位转换为其ASCII码并存入BUFFER1第10存储单元中
ORAH,30H
INCBX;年月日转换完毕
MOV[BX],AH
MOVCL,'$';“$”号的ASCII码存入BUFFER1第11存储单元中
INCBX
JMPNEXT
TUI1:
JMPTUI2
NEXT:
MOV[BX],CL
XIANSHIBUFFER1,10,0616H;用9号功能显示年月日
MOVAH,2CH
INT21H;取时间
LEABX,BUFFER2
MOVAL,CH;小时数除以10得到商即为小时数的十位
MOVAH,00H
MOVCH,10
DIVCH
ORAL,30H;小时数的十位转换为其ASCII码并存入BUFFER2第1存储单元中
MOV[BX],AL
ORAH,30H;小时数的个位转换为其ASCII码并存入BUFFER2第2存储单元中
INCBX
MOV[BX],AH
INCBX
MOVCH,3AH;“:
”号的ASCII码存入BUFFER2第3存储单元中
MOV[BX],CH;分钟数除以10得到商即为分钟数的十位
MOVAL,CL
MOVAH,00H
MOVCL,10
DIVCL
ORAL,30H;分钟数的十位转换为其ASCII码并存入BUFFER2第4存储单元中
INCBX
MOV[BX],AL;分钟数的个位转换为其ASCII码并存入BUFFER2第5存储单元中
ORAH,30H
INCBX
MOV[BX],AH
INCBX
MOVCL,3AH;“:
”号的ASCII码存入BUFFER2第6存储单元中
MOV[BX],CL
MOVAL,DH;秒数除以10得到商即为秒数的十位
MOVAH,00H
MOVCL,10
DIVCL
ORAL,30H;秒数的十位转换为其ASCII码并存入BUFFER2第7存储单元中
INCBX
MOV[BX],AL
ORAH,30H;秒数的个位转换为其ASCII码并存入BUFFER2第8存储单元中
INCBX
MOV[BX],AH
INCBX;时分秒转换完毕
MOVCL,'$';“$”号的ASCII码存入BUFFER2第9存储单元中
MOV[BX],CL
XIANSHIBUFFER2,8,0716H;用9号功能显示时分秒
CALLDELY;调用子程序,若显示时间与当前时间不符,则校准显示时间
JMPBEGIN
TUI2:
RET
STAENDP
DELYPROC
PUSHCX
PUSHDX
MOVAH,2CH
INT21H
MOVSECOND,DH
RE:
MOVAH,2CH
INT21H
PUSHDX
MOVAH,6
MOVDL,0FFH
INT21H
POPDX
CMPAL,63H;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示
JEZ3
JMPCONTIN
Z3:
MOVSIGN,3
CONTIN:
CMPSECOND,DH
JERE
CMPSIGN,1
JMPEXIT
EXIT:
POPDX
POPCX
RET
DELYENDP
CODEENDS
ENDSTA
五、运行结果:
程序运行后如下图所示:
按下c键,则会出现下图界面:
(此时按下任意键即可退出该程序)(注意,若没按下任何键或按下的不是c键,则不会出现下图所示界面)
六、硬件设计:
1、硬件设计说明:
由8284产生系统脉冲送8253的CLK1,通过CPU置计数初值使计数器2输出1KHZ方波。
将此方波送8253的计数器1,置计数初值为1000H,所以每隔1sOUT1就会产生一个高电平输出。
将此输出接8259中IR0~IR7任一端口。
当8259接到一个高电平时,它的INT端口就向CPU发出一个中断请求,CPU如果响应了这个请求,就从它的INTA向8259发出两个负脉冲作为应答。
然后CPU调用中断服务程序--时间累计并转换成字符形式输出到8255的A通道端口上,最后显示在显示器上。
2、硬件连线图见坐标纸
七、调试步骤:
(1)建立汇编语言的工作环境(我采用MASMFORWINDOWS集成实验环境)。
(2)用汇编程序建立源程序文件(.ASM)。
(3)用汇编程序(MASM)把源程序(.ASM)汇编成目标文件(.OBJ)。
(4)用连接程序(LINK)把目标文件(.OBJ)转换成可执行文件(.EXE)。
(5)在DOS命令状态下通过直接键入文件名执行该汇编语言或利用DEBUG程序对用户程序进行调试。
八、心得体会:
通过这一周的课程设计,我们不但明白了一些在课堂上不懂的问题,而且通过实践的方法深刻的记到了脑海里。
通过其中编程序以及调试程序,提高了我们对汇编的认识和理解,切实的提高了我们的编程能力,巩固所了学过的知识。
现在我们能较熟练地运用汇编语言的顺序、选择、循环三大结构,进一步掌握了各个指令的功能。
在和同组人的合作中,互相学习,加深了理解同时拓宽了我们的思维。
同时我们也了解到要写好汇编语言的程序,必须认真对待每一个细节,必须熟练的掌握DEBUG命令。
通过这次实际动手能力的培养,我们进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平,不过要想更深一步的学习好一门语言,还要我们下多多练习,思考,写程序并用它来实践,应用到实际当中!
总的来说,经过这次课程设计,让我们知道合作的力量,增强了我们团队意识。
组内两个人共同工作,共同检查错误,各司其职,各负其责,使工作量大大减少,错误率也相对降低。
数字时钟的课程设计有利于培养我们对8086的兴趣,虽然只有短短的几天,使我们对8086汇编语言又有了更高一层的认识,对使用到的汇编指令有了更深刻的的了解。
在设计的过程中存在许多不足,但经过不断的努力,检查并修改错误,使得数字时钟得到了不断的完善;在这过程中,我们一起思考,一起分析,一起修改,这次课程设计是一次很好的理论与实际的结合,希望能有更多这样学习和实践的机会。
遗憾的是由于我们所学知识不足,所以我们还不能把硬件和软件结合起来,希望有一天可以把它们结合到一起,做出更好更完善的数字时钟。
九、参考文献
1.《微型计算机原理与接口技术》陈家林主编科学出版社2004
2.《微机原理与接口技术》朱定华编著北方交通大学出版社2002
3.《微型计算机原理与接口技术》姚燕南,薛钧义主编高等教育出版社2004
4.《微型计算机原理》张荣祥主编水利电力出版社1992.6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 数字 时钟 课程设计 报告