1、了解屏幕I/O中断 ;3:了解定时/计数器和中断的使用;4:在本实中使用了DOS中断的键盘功能调用解了微机的原理与应用技术,特别是在对中断技术的理解与应用方面,更好地理解了微机的工作情况与运行方式,让我们对其有更深刻的认识。指导教师签名: 年 月 日 二、指导教师评语:三、成绩验收盖章 年 月 日 一 课程设计目的:了解定时/计数器和中断的使用。二课程设计的主要内容和要求:第一部分:定义显示界面。第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入内存区。第三部分:将存在系统内存区的时间数用显示字符串的形式显示出来。 第四部分:获取键盘的按键值,判断键值并退
2、出系统。三 设计思路:首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用DOS字符串显示功能将时间显示出来。并调用屏幕I/O中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。其次在二进制转化成ASCII码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的BCD码,再将高四位低四位分别相
3、加30H,从而转化为ASCII码,了解电脑cup如何将ASCII码的信息转换成显示字符。最后,了解了如何对其他经典程序的灵活应用。我们的程序是不断对显示屏进行刷新的,所以我们调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后我们用了jmp display指令,刷新显示屏,从而达到时间的每秒显示。四流程图:Y五程序原代码:;NAME: ELECTRONIC CLOCK ;DESIGN BY ZENGQINGYU CLASS1 AND MOXIAOLEI CLASS3DATA SEGMENTMESS1 DB 我们的电子时钟 ,0AH,0DH DB * * * * * * * ELE
4、CTRONIC CLOCK * * 制作:孙振 彭强 * * VERSION:1.0 * * MADE IN CHINA * *-OOOO-* ,$MESS2 DB 现在时刻:,0AH,0DH,T_BUFF DB 20 ;在数据段开辟一时间显示缓冲区DATA ENDSSTACK SEGMENT DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATAMAIN: CALL CLEAR ;调用清屏子程序DISPLAY:-时间显示部分- MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET T_B
5、UFF ;送T_BUFF的偏移地址到BX MOV AH,2CH ;调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,CL,DH中 INT 21H MOV AL,CH ;小时数设定 MOV AH,0 CALL BCTD ;调用进制转换子程序 PUSH AX AND AL,0F0H ;选取AL高四位 MOV CL,4 ;设置右循环的次数 ROL AL,CL ;右循环 OR AL,30H ;加30H得到ACSII码 MOV BX,AL ;将得到的结果送到T_BUFF缓冲区 INC BX ;BX自加1,指针指向下一个缓冲区的下一个地址 POP AX AND AL,0FH ;选取低
6、四位,道理同上 OR AL,30H将转换后的低四位值送入缓冲区的第二个地址 INC BX- MOV AL,: ;显示分号 MOV BX, AL- MOV AH,2CH MOV AL,CL ;分钟数设定 CALL BCTD AND AL,0F0H MOV CL,4 ROL AL,CL MOV BX,AL AND AL,0FH- ;秒设定 MOV AL,DH- ;将字符串的结束位送至显示缓冲区的最后一位- PUSH BX ;置光标位置 ,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2 MOV BH,0 MOV DH,17 MOV DL,41 INT 10H POP
7、 BX LEA DX,T_BUFF ;送T_BUFF偏移地址到DX,并调用DOS显示功能,功能号为9 MOV AH,9 PUSH BX ;置光标位置 MOV DH,0 MOV DL,0 LEA DX,MESS1 PUSH BX ; MOV DL,21 LEA DX,MESS2- CALL DELAY1 MOV AH,1 ;按任意键结束,调用键盘I/O中断功能号1,获取键值到AL INT 16H CMP AL,1BH JZ QUIT ;是ESC键的话就跳转 JMP DISPLAYQUIT: MOV AH,4CH RET-BCTD PROC NEAR ;二进制转BCD码子程序AX输入参数AX输出参
8、数,存放调整过的BCD码 MOV DX,AX MOV AX,0 MOV CX,16 ;设循环次数BCTD1: CLC ;清进位标志C RCL DX,1 ;通过进位的循环右移 ADC AL,AL ;带进位加法 DAA ;加法的十进制调整 XCHG AL,AH ;交换高,低八位 ADC AL,AL DAA XCHG AL,AH LOOP BCTD1 ;循环,次数保存在CX里BCTD ENDP-CLEAR PROC NEAR PUSH AX ;入栈保护现场 PUSH BX PUSH CX PUSH DX MOV AX,0600H;AH=06(滚动)AL=00(全屏空白) MOV BH,6AH ;背景
9、颜色,白色前景 SUB CX,CX MOV DX,5F5FH POP DX ;出栈恢复现场 POP CXCLEAR ENDP-DELAY1 PROC ;精确延迟时间子程序 MOV DX,04FFH ;循环次数UP: XOR CX,CXA: NOP LOOP A DEC DX JNZ UPDELAY1 ENDP-CODE ENDSEND MAIN程序截图:七参考文献:周明德.微型计算机原理及应用.第四版 . 北京. 清华大学出版社岳克宁主编.微机原理及接口技术实验指导书 彭楚武.微机原理及接口技术.湖南长沙. 湖南大学出版社.2004. 马瑞芳主编.汇编语言程序设计.西北工业大学出版社 2002年3月
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1