《微机原理与通信接口》课程设计说明书文档格式.docx
《《微机原理与通信接口》课程设计说明书文档格式.docx》由会员分享,可在线阅读,更多相关《《微机原理与通信接口》课程设计说明书文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
系统功能调用是指“INT21H”中断。
它是可供系统程序和应用程序调用的一个极其重要的中断,内含近百个系统子功能。
操作系统的内核主要由它构成。
系统功能调用的近百个系统子功能已经标准化,调用它们时完全不依赖于任何硬件设备,因此,用这些子功能编写研制成的所有系统软件或应用程序可在任何支持DOS的机器上运行。
1.2时间日期系统功能调用
“INT21H”是一个使用方便的系统服务程序,它的功能丰富,共有84个子功能,此次课程设计中,主要用到时间日期系统的功能调用,如表1.1所示:
表1.1时间日期系统功能调用
功能号
功能
入口参数
出口参数
DOS版本
2AH
取日期
CX:
DX=日期
1,2,3,6
2BH
置日期
AL=00,成功
AL=FF,失败
2CH
取时间
DX=时间
2DH
置时间
2.程序流程图
若为“Q”
在屏幕上实时显示日期或时间
调用时间数值转换子程序
调用日期数值转换子程序
利用BIOS中时间参数的调用方法取时间
利用BIOS中时间参数的调用方法取日期
若为“T”
调用显示时间子程序
若为“D”
调用显示日期子程序
设置显示方式和显示提示信息
图2.1程序流程图
3.程序设计
STACKSEGMENTSTACK
DW200DUP(?
)
STACKENDS
DATASEGMENT
TIME_STYLEDB8DUP('
:
'
),12DUP('
'
DATE_STYLEDB18DUP('
STRDB'
PLEASESELECTDATE(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
MOVCX,0
MOVAX,1300H
MOVDX,OFFSETSTR;
显示提示信息
MOVAH,9
INT21H
MOVAH,1;
从键盘输入单个字符
CMPAL,44H;
AL='
D'
?
JNEA
CALLDATE;
显示系统日期
A:
CMPAL,54H;
T'
JNEB
CALLTIME;
显示系统时间
B:
CMPAL,51H;
Q'
JNESTART
MOVAH,4CH;
返回dos状态
DATEPROCNEAR;
显示日期子程序
DISPLAY:
MOVAH,2AH;
MOVSI,0
MOVAX,CX
MOVBX,100
DIVBL
MOVBL,AH
CALLBCDASC1;
日期数值转换成相应的ASCII码字符
MOVAL,BL
CALLBCDASC1
INCSI
MOVAL,DH
MOVAL,DL
MOVBP,OFFSETDATE_STYLE
MOVDX,0C0DH
MOVCX,18
MOVBX,0007H
MOVAX,1301H
MOVAH,02H;
设置光标位置
MOVDX,0300H
MOVBH,0
MOVBX,0018H
REP:
DECBX
JNZREP
MOVAH,01H;
读键盘缓冲区字符到AL寄存器
INT16H
JEDISPLAY
JMPSTART
MOVAX,4C00H
RET
DATEENDP
TIMEPROCNEAR;
显示时间子程序
DISPLAY1:
MOVAH,2CH;
MOVAL,CH
CALLBCDASC;
将时间数值转换成ASCII码字符
MOVAL,CL
CALLBCDASC
MOVBP,OFFSETTIME_STYLE
MOVBX,007H
MOVAH,02H
RE:
MOVCX,0FFFFH
REA:
LOOPREA
JNZRE
MOVAH,01H
JEDISPLAY1
TIMEENDP
BCDASCPROCNEAR;
时间数值转换成ASCII码字符子程序
PUSHBX
CBW
MOVBL,10
ADDAL,'
0'
MOVTIME_STYLE[SI],AL
ADDAH,'
MOVTIME_STYLE[SI],AH
POPBX
BCDASCENDP
BCDASC1PROCNEAR;
日期数值转换成ASCII码字符子程序
MOVDATE_STYLE[SI],AL
MOVDATE_STYLE[SI],AH
BCDASC1ENDP
CODEENDS
ENDSTART
4.运行结果和分析
将程序编译成功后运行,从键盘输入字母“D”,运行结果如图4.1所示:
图4.1显示系统日期
从键盘输入字母“T”,运行结果如图4.2所示:
图4.2显示系统时间
该程序由主程序分别调用显示日期和显示时间的子程序,利用BIOS中对时间参数的调用方法,实现取时间和取日期。
由于取到的值与显示在屏幕上的字符有类型的差别,于是通过时间和日期的子程序,进行数值转换,得到需要的字符类型对应的ASCII码,从而显示在屏幕上。
5.心得体会
这次微机原理的课程设计,我们的题目是系统时间显示程序设计,经过翻阅《微型计算机原理与接口技术》的课本,以及相关资料,还有在网上搜集的类似设计,最终我们确定了设计思路和电路原理图。
根据要求,程序设计中分为两个功能模块,一个是显示日期:
年、月、日,一个是显示时间:
时、分、秒。
这里可以将两个功能分别编写为一个子程序,分别实现相对应的功能,然后通过判断功能的选择来实现对应子程序的调用。
首先跟据设计思路,画出程序流程图,再用汇编语言实现单个流程,通过再次的翻阅课本及相关功能的实现程序,写出对应的汇编程序,然后通过条件控制语句将各个模块连接在一起,从而得到整个程序,完成程序设计。
接下来就是运行以及修改调试。
程序的主要问题在于如何利用BIOS中时间参数的调用方法实现功能,以及相关参数在作为字符显示时的数值转换,解决了这两个问题,程序的主要功能已达到要求,再加以完善和补充即可。
在程序编译过程中也出现了些小问题,如漏掉“,”,指令键入错误等,但经过检查和修改,终于编译成功了!
通过这次微机原理的课程设计,我从中不仅学到了系统时间显示程序的设计原理和基本思路,深入了解了汇编语言中BIOS时间参数的调用,而且也加深了对理论的认识,进一步理解了汇编语言的指令功能和用法,了解了如何通过程序去实现功能,通过功能测试如何发现问题并通过修改程序而解决问题,更学会了如何通过各种途径收集资料,从中获取需要的信息,并为我所用,成为自己的能力,这对于今后的学习还是工作都有着积极的影响。
参考文献
[1]姚燕南,薛钧义.微型计算机原理与接口技术.北京:
高等教育出版,2004.11.
[2]艾德才.微型计算机原理与接口技术.北京:
清华大学出版社,2005.9.
[3]沈美明.IBM-PC汇编语言程序设计.北京:
清华大学出版社,2008.7.
致谢
在本次课程设计中,我从中学到了不少东西,不仅加强了动手能力,也加深了对理论的认识,其中离不开同组同学的帮助和支持,在此表示感谢。
课程设计不仅能检验我们对理论知识的掌握,也了解了设计的思路,在此我要感谢学校开设的这门课程,以及对我们的培养。
在课程设计过程中,当我们遇到困难时,指导老师的认真指导指引我们成功完成设计,在此表示万分的感谢!