微机原理.docx
《微机原理.docx》由会员分享,可在线阅读,更多相关《微机原理.docx(12页珍藏版)》请在冰点文库上搜索。
![微机原理.docx](https://file1.bingdoc.com/fileroot1/2023-4/28/0fbc97ef-dcfc-4414-a566-9d7ac6e7090f/0fbc97ef-dcfc-4414-a566-9d7ac6e7090f1.gif)
微机原理
重庆三峡学院
微机原理与接口技术课程设计
课题名称系统日期和时间显示
专业电子信息工程
班级08级电信3班
学号200801074144
姓名邓书华
2011年6月26日
微机综合实验课程设计报告书
姓名:
邓书华班级:
08级电信3班学号:
200801074144成绩:
设计题目分析:
通过课程设计使学生更进一步了解掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学的知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法
用汇编语言设计一数字时钟程序,基于8086微型计算机,利用汇编设计系统时间显示,该设计为软件设计,旨在锻炼同学们编程能力和加深对汇编程序的理解。
要求:
(1)实现年月日时分秒的计时,并显示于屏幕中央
(2)软件设计
1.功能简介
2.流程图
3.程序
(3)显示界面
设计步骤详细介绍:
本课程设计任务要求在运行时,屏幕分时显示“年、月、日”的形式来显示本机的系统的日期,在按大写字母D时。
由此可知,首先定义光标显示界面,然后调用BIOS中断,读取系统日期,并将调用的二进制表示的日期转换成ASCLL码,并将日期数存入显存区,最后将存在系统内存区的时间用字符串的形式显示出来。
在按下T之后,屏幕将以“时:
分:
秒”的形式显示本机的系统的时间,首先定义光标显示界面,然后调用BIOS中断,读取系统时间,然后将调用的二进制转换成ASCLL码,最后在系统的内存区以字符串的形式显示,由于获取了的系统时间不会自动的刷新,所以我们要设计成循环的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。
程序一旦进入运行,就将不间断的在显示屏显示时间,要想程序停止运行,按esc即可退出。
关键技术分析:
设计中遇到的问题和解决的步骤、方法:
设计结果:
可以显示日期和时间
附录1:
程序运行截图(2张)
日期显示:
时间显示:
附录2:
源程序列表(带注释)
STACKSEGMENTSTACK
DW200DUP(?
)
STACKENDS
DATASEGMENT
SPACEDB1000DUP('')
PATTERNDB6DUP(''),0C9H,26DUP(0CDH),0BBH,6DUP('')
DB6DUP(''),0BAH,26DUP(20H),0BAH,6DUP('')
DB6DUP(''),0C8H,26DUP(0CDH),0BCH,6DUP('')
DBUFFERDB8DUP(':
'),12DUP('')
DBUFFER1DB20DUP('')
STRDB0DH,0AH,'PLEASEINPUTDATE(D)ORTIME(T)ORQUIT(Q):
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,0001H;设置显示方式为40*25彩色文本方式
INT10H
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVBP,OFFSETSPACE
MOVDX,0B00H
MOVCX,1000
MOVBX,0040H
MOVAX,1300H
INT10H
MOVBP,OFFSETPATTERN;显示矩形条
MOVDX,0B00H
MOVCX,120
MOVBX,004EH
MOVAX,1301H
INT10H
LEADX,STR;显示提示信息
MOVAH,9
INT21H
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,44H;AL='D'?
JNEA
CALLDATE;显示系统日期
A:
CMPAL,54H;AL='T'?
JNEB
CALLTIME;显示系统时间
B:
CMPAL,51H;AL='Q'?
JNESTART
MOVAH,4CH;返回dos状态
INT21H
DATEPROCNEAR;显示日期子程序
DISPLAY:
MOVAH,2AH;取日期
INT21H
MOVSI,0
MOVAX,CX
MOVBX,100
DIVBL
MOVBL,AH
CALLBCDASC1;日期数值转换成相应的ASCII码字符
MOVAL,BL
CALLBCDASC1
INCSI
MOVAL,DH
CALLBCDASC1
INCSI
MOVAL,DL
CALLBCDASC1
MOVBP,OFFSETDBUFFER1
MOVDX,0C0DH
MOVCX,20
MOVBX,004EH
MOVAX,1301H
INT10H
MOVAH,02H;设置光标位置
MOVDX,0300H
MOVBH,0
INT10H
MOVBX,0018H
REPEA:
MOVCX,0FFFFH;延时
REPEAT:
LOOPREPEAT
DECBX
JNZREPEA
MOVAH,01H;读键盘缓冲区字符到AL寄存器
INT16H
JEDISPLAY
JMPSTART
MOVAX,4C00H
INT21H
RET
DATEENDP
TIMEPROCNEAR;显示时间子程序
DISPLAY1:
MOVSI,0
MOVBX,100
DIVBL
MOVAH,2CH;取时间
INT21H
MOVAL,CH
CALLBCDASC;将时间数值转换成ASCII码字符
INCSI
MOVAL,CL
CALLBCDASC
INCSI
MOVAL,DH
CALLBCDASC
MOVBP,OFFSETDBUFFER
MOVDX,0C0DH
MOVCX,20
MOVBX,004EH
MOVAX,1301H
INT10H
MOVAH,02H
MOVDX,0300H
MOVBH,0
INT10H
MOVBX,0018H
RE:
MOVCX,0FFFFH
REA:
LOOPREA
DECBX
JNZRE
MOVAH,01H
INT16H
JEDISPLAY1
JMPSTART
MOVAX,4C00H
INT21H
RET
TIMEENDP
BCDASCPROCNEAR;时间数值转换成ASCII码字符子程序
PUSHBX
CBW
MOVBL,10
DIVBL
ADDAL,'0'
MOVDBUFFER[SI],AL
INCSI
ADDAH,'0'
MOVDBUFFER[SI],AH
INCSI
POPBX
RET
BCDASCENDP
BCDASC1PROCNEAR;日期数值转换成ASCII码字符子程序
PUSHBX
CBW
MOVBL,10
DIVBL
ADDAL,'0'
MOVDBUFFER1[SI],AL
INCSI
ADDAH,'0'
MOVDBUFFER1[SI],AH
INCSI
POPBX
RET
BCDASC1ENDP
CODEENDS
ENDSTART