1、系统功能调用是指“INT 21H”中断。它是可供系统程序和应用程序调用的一个极其重要的中断,内含近百个系统子功能。操作系统的内核主要由它构成。系统功能调用的近百个系统子功能已经标准化,调用它们时完全不依赖于任何硬件设备,因此,用这些子功能编写研制成的所有系统软件或应用程序可在任何支持DOS的机器上运行。1.2 时间日期系统功能调用“INT 21H”是一个使用方便的系统服务程序,它的功能丰富,共有84个子功能,此次课程设计中,主要用到时间日期系统的功能调用,如表1.1所示:表1.1 时间日期系统功能调用功能号功能入口参数出口参数DOS版本2AH取日期CX:DX=日期1,2,3,62BH置日期AL
2、=00,成功AL=FF,失败2CH取时间DX=时间2DH置时间2. 程序流程图若为“Q”在屏幕上实时显示日期或时间调用时间数值转换子程序调用日期数值转换子程序利用BIOS中时间参数的调用方法取时间利用BIOS中时间参数的调用方法取日期若为“T”调用显示时间子程序若为“D”调用显示日期子程序设置显示方式和显示提示信息 图2.1 程序流程图3. 程序设计STACK SEGMENT STACK DW 200 DUP (?)STACK ENDSDATA SEGMENT TIME_STYLE DB 8 DUP (:),12 DUP ( DATE_STYLE DB 18 DUP ( STR DB PLEA
3、SE SELECT DATE(D) OR TIME(T) OR QUIT(Q): $DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,0001H ;设置显示方式为40*25彩色文本方式 INT 10H MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,0 MOV AX,1300H MOV DX,OFFSET STR ;显示提示信息 MOV AH,9 INT 21H MOV AH,1 ;从键盘输入单个字符 CMP AL,44H ;AL=D? JNE A CALL DAT
4、E ;显示系统日期A: CMP AL,54H ;T JNE B CALL TIME ;显示系统时间 B: CMP AL,51H ;Q JNE START MOV AH,4CH ;返回dos状态DATE PROC NEAR ;显示日期子程序DISPLAY: MOV AH,2AH ; MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1 ;日期数值转换成相应的ASCII码字符 MOV AL,BL CALL BCDASC1 INC SI MOV AL,DH MOV AL,DL MOV BP,OFFSET DATE_STYLE MOV
5、DX,0C0DH MOV CX,18 MOV BX,0007H MOV AX,1301H MOV AH,02H ;设置光标位置 MOV DX,0300H MOV BH,0 MOV BX,0018H REP: DEC BX JNZ REP MOV AH,01H ;读键盘缓冲区字符到AL寄存器 INT 16H JE DISPLAY JMP START MOV AX,4C00H RETDATE ENDPTIME PROC NEAR ;显示时间子程序DISPLAY1: MOV AH,2CH ; MOV AL,CH CALL BCDASC ;将时间数值转换成ASCII码字符 MOV AL,CL CALL
6、 BCDASC MOV BP,OFFSET TIME_STYLE MOV BX,007H MOV AH,02HRE: MOV CX,0FFFFHREA: LOOP REA JNZ RE MOV AH,01H JE DISPLAY1TIME ENDPBCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序 PUSH BX CBW MOV BL,10 ADD AL,0 MOV TIME_STYLESI,AL ADD AH, MOV TIME_STYLESI,AH POP BXBCDASC ENDPBCDASC1 PROC NEAR ;日期数值转换成ASCII码字符子程序 MOV D
7、ATE_STYLESI,AL MOV DATE_STYLESI,AHBCDASC1 ENDPCODE ENDS END START4. 运行结果和分析将程序编译成功后运行,从键盘输入字母“D”,运行结果如图4.1所示:图4.1 显示系统日期从键盘输入字母“T”,运行结果如图4.2所示:图4.2 显示系统时间该程序由主程序分别调用显示日期和显示时间的子程序,利用BIOS中对时间参数的调用方法,实现取时间和取日期。由于取到的值与显示在屏幕上的字符有类型的差别,于是通过时间和日期的子程序,进行数值转换,得到需要的字符类型对应的ASCII码,从而显示在屏幕上。5. 心得体会这次微机原理的课程设计,我们
8、的题目是系统时间显示程序设计,经过翻阅微型计算机原理与接口技术的课本,以及相关资料,还有在网上搜集的类似设计,最终我们确定了设计思路和电路原理图。根据要求,程序设计中分为两个功能模块,一个是显示日期:年、月、日,一个是显示时间:时、分、秒。这里可以将两个功能分别编写为一个子程序,分别实现相对应的功能,然后通过判断功能的选择来实现对应子程序的调用。首先跟据设计思路,画出程序流程图,再用汇编语言实现单个流程,通过再次的翻阅课本及相关功能的实现程序,写出对应的汇编程序,然后通过条件控制语句将各个模块连接在一起,从而得到整个程序,完成程序设计。接下来就是运行以及修改调试。程序的主要问题在于如何利用BI
9、OS中时间参数的调用方法实现功能,以及相关参数在作为字符显示时的数值转换,解决了这两个问题,程序的主要功能已达到要求,再加以完善和补充即可。在程序编译过程中也出现了些小问题,如漏掉“,” ,指令键入错误等,但经过检查和修改,终于编译成功了!通过这次微机原理的课程设计,我从中不仅学到了系统时间显示程序的设计原理和基本思路,深入了解了汇编语言中BIOS时间参数的调用,而且也加深了对理论的认识,进一步理解了汇编语言的指令功能和用法,了解了如何通过程序去实现功能,通过功能测试如何发现问题并通过修改程序而解决问题,更学会了如何通过各种途径收集资料,从中获取需要的信息,并为我所用,成为自己的能力,这对于今
10、后的学习还是工作都有着积极的影响。参考文献1 姚燕南,薛钧义.微型计算机原理与接口技术.北京:高等教育出版,2004.11.2 艾德才.微型计算机原理与接口技术.北京:清华大学出版社,2005.9.3 沈美明.IBM-PC汇编语言程序设计.北京:清华大学出版社,2008.7.致谢在本次课程设计中,我从中学到了不少东西,不仅加强了动手能力,也加深了对理论的认识,其中离不开同组同学的帮助和支持,在此表示感谢。课程设计不仅能检验我们对理论知识的掌握,也了解了设计的思路,在此我要感谢学校开设的这门课程,以及对我们的培养。在课程设计过程中,当我们遇到困难时,指导老师的认真指导指引我们成功完成设计,在此表示万分的感谢!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1