您好,欢迎来到刀刀网。
搜索
您的当前位置:首页微机接口课程设计倒计时牌

微机接口课程设计倒计时牌

来源:刀刀网
 《微机原理与接口技术》

题目名称:学生姓名:学 号:专业年级:指导教师:时 间:课程设计

倒 计 时 牌

====Word行业资料分享--可编辑版本--双击可删====

目 录

1、题目及要求: ................................................................................................................................ 1

1.1题目:倒计时牌 ................................................................................................................... 1 1.2要求: ................................................................................................................................... 1 2、总体设计: .................................................................................................................................... 1

2.1.设计思路: ........................................................................................................................ 21 2.2.功能设计: .......................................................................................................................... 1 2.3.总体结构图……………………………………………………….........................................1 3、详细设计: .................................................................................................................................... 2 3.1 显示功能模块……………………………………………………………………………...2.

3.1.1日期显示功能 ................................................................................................................. 2 3.1.2时间显示 ........................................................................................................................... 3 3.1.3倒计时显示 ....................................................................................................................... 4 3.1.4 主要功能子函数………………………………………………………………………...4 3.2 控制功能模块…………………………………………………………………………….4 3.2.1 日期和时间的获取和格式化…………………………………………………………..4 3.2.2 警报提示功能模块……………………………………………………………………..5 3.2.3 倒计时时间日期的设定………………………………………………………………..6 4、系统评价 ........................................................................................................................................ 7 5、心得体会 ........................................................................................................................................ 7 6、参考文献: .................................................................................................................................... 7

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

1.题目及要求:

1.1题目:倒计时牌 1.2要求: 实现日历功能;

显示距倒计时时刻还有多长时间(显示天、时、分、秒) 扩展功能:实现倒计时的时间人为设定

2.总体设计:

2.1 设计思路:

根据题目要求,本程序的实现途径是通过获取系统时间,将其以存放到定义的时间变量中,然后按照设计好的规则将其映射到相应的图形显示,利用系统中断将其输出到屏幕上,同时定时对其进行刷新,已达到时间变化的目的。

对于倒计时功能,首先获取用户设定的倒计时时间,然后以此时间为基础,通过本程序中设计的倒计时算法,实现时间日期的倒计时显示。

当计时时间变为零时,调用闹铃程序,输出响铃,给与用户提示信息。 2.2 功能设计:

本倒计时牌课程设计以汇编语言知识为基础,使用到部分接口芯片。主要实现日期、时间、倒计时的图形显示。最长可倒计时100天,可精确显示倒计时的天数、小时、分钟、秒数。同时可以实现人为倒计时的时间设定。当达到目标时间,给出警告信息。

主要功能模块如下:

(1)日期显示模块:实现系统时间的获取和存储,并将时间以图形方式刷新输出到显示器,设计过程中主要任务是将系统日期格式化存储显示。

(2)时间显示模块:功能类似日期显示模块,通过系统调用获取系统时间,同时输出显示。

(3)倒计时模块:用户自定义计时时间,程序根据设定的倒计时初始时间,定期刷新显示剩余时间,并在到达指定时间时给出警报提示。

(4)警报模块:当系统设定的倒计时时间变为零的时候,产生警报信号。 2.3总体结构图

本程序的总计结构主要包含一下几个功能模块,其总体结构图如图2-1所示,功能比

较简单,并且个模块之间的关联性小,程序的耦合读性较低。

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

倒计时程显示模块 控制模块 倒计时显示模块 日期显示模块 时间显示模块 倒计时时间设定 警报功能模块 时间获取和格式化 日期获取和格式化

2-1系统总体结构图

3.详细设计

本程序主要分为两大模块,显示模块和控制模块。这样就实现了显示和控制的分离和

。可以方便的通过控制更改显示的方式。

显示模块主要完成从已经获取的时间和日期变量中提取的数字,并自动查找其在

图形数字数组中的位置,将其打印输出。

控制模块的主要任务之一是调用系统的BIOS中断获取系统时间和日期,并将数字信息

并通过除十(年份格式化时使用了1000和100)取余格式化到存储时间的变量中。同时该模块接受用户录入的倒计时初始时间,并将其保存,以此作为基数进行借位自减,直到变为零,然后警报模块输出警报信号响应。 3.1显示功能模块

显示模块可分为日期显示功能和时间显示功能以及倒计时显示功能,其中日期显示功

能和时间显示功能设计方法类似,倒计时设计难点是实现借位倒数方式的显示控制。其中模块的详细设计如下所述。 3.1.1 日期显示功能

日期显示模块的目的是将已经格式化的数据从变量中取出,并打印输出。在程序中DISP

中描述定义,其详细说明如下。

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

首先使用从DISPTIME中取出其中年月日的各位,用其值乘以图形数字表中每个数字定

义的长度,从而确定该数字在数字表中的位置,按此流程顺序输出显示,同时在日期间隔处输出。

模块详细流程图如图3-1所示。

进入日期显示模块 从DISPTIME顺序取日期位 除以图形数字长度 显示 否 DISPTIME ? NULL 退出显示 图3-1 日期显示

时间显示

时间显示的任务是将已经格式化的数据从时间变量中取出,并打印输出。在程序中DISP_TIME中描述定义,其详细说明如下。

首先使用从DISPDATE中取出其中时分秒的各位,用其值乘以图形数字表中每个数字定

义的长度,从而确定该数字在数字表中的位置,按此流程顺序输出显示,同时在时间间隔处输出。

模块详细流程图如图3-2所示

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

进入时间显示模块 从DISPDATE顺序取日期位 除以图形数字长度 显示 否 DISPDATE ? NULL 退出显示 图3-2 时间显示

倒计时显示模块

倒计时显示模块主要涉及的内容是倒计时算法,在倒计时过程中,从最低位开始,判

断倒计是否为零,若为零需向高位借位;反之,正常进行自建任务。一旦向高位借位,有需要判断高位是否为零,若高位为零则无法借位,需要进一步向高位递归;否则当高位借位以后,借位对象要被赋予适当的初值。 主要功能子函数

(1)DISP_COUNT子函数 功能:显示倒计时时间 (2)DISP子函数

功能:显示日历,包括时间和日期。 3.2 控制功能模块

控制模块包含日期获取和格式化、时间获取和格式化、警报功能、倒计时时间设定、

日期和时间设定。

时间和日期的获取和格式化的设计方法也是相近的,在设计过程中主要的模块详细设

计如下所述。

日期和时间的获取和格式化

日期和时间的获取和格式化可用以下流程图来描述,此处使用时间来做解释说明。该

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

模块的流程图如图3-4所示。

时间模块 调用INT21/2A 2C CH小时 C L小时 DH秒 DIV 除10取余 商AL放入时间表小时高位 商AL放入时间表分钟高位 商AL放入时间表秒高位 余数AH放入时间表小时低位 余数AH放入时间表分钟低位 余数AH放入时间表秒低位

图3-4 日期获取和格式化

3.2.2 警报提示功能模块

本功能模块主要是使用PC机提供的BEEP子程序,通过8253/54定时器,产生指定频

率的声音来实现的。警报过程用可输出一段音乐,主要过成如下描述。

(1)频率: BEEP子程序只能产生6Hz的声音。

(2)时间:BEEP产生的声音的持续时间只能是0.5S的倍数,如果想让持续的时间更易于调整,可以通过8253/54来达到降频的目的。

该模块的详细流程图如图3-5所示.

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

警报模块 查询倒计时剩余时间 否 If(count_time=0) 是 调用music程序 指定时间内用户结束警报? 是 结束警报 自动结束结束警报 提示用户设定时间

3-5 警报模块功能流程

3.2.3 倒计时时间、日期设定

本程序可以实现倒计时功能的认为设定,以及显示的系统时间的人为设定。灵活的改变时间和日期。

功能流程图如图3-6所示

倒计时时间设定 否 等待用户选择 时间设定区 录入时间 设置成功

3-6 倒计时时间设定

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

4、系统评价

本系统基本完成了设计要求,能够准确的显示系统时间和日期,以及倒计时时间,同时可以人为设定系统时间、日期和倒计时日期,功能相对比较简单,容易实现,而且数字显示采用的是文本模式下的图形显示,具有良好的可视性。

但是本系统仍有很多不确定,功能没有自己想象中的完善,而且界面设计不够友好。

5、 心得体会

在做此课程设计时,开始我没有理解好出题意图,使用了不是很了解的单片机进行的仿真实验。后来通过查阅大量资料和自己的努力,用所学知识实现。在课程设计的过程中,我把汇编学到的知识回顾了一遍,常用的命令格式,常用的中断调用,如何创建宏,如何创建子程序等等,很多内容都在不知不觉中记了下来。这几学期开了很多们专业课程,我一直在努力把所学的知识应用到实践中,能让自己在实践中体会“拥有”的快感。在此次课程设计中,相对以往来说,我学习到了一些好的思想,比如程序模块化,让程序的流程更加清晰,低耦合,可以在模块的修改下更方便,还有比如迭代开发的思想,在设计中,我先从最基本的操作做起,等到测试成功以后,再对模块进行功能扩展。总体而言,此次课程设计给了我很大的启发,尤其是思想,但是也存在缺陷的地方,今后,我会更加努力完善。

6、参考文献:

[1] 《IBM-PC汇编语言程序设计》 沈美明 温冬婵 清华大学出版社 [2] 《微型计算机技术及应用(第4版)》 戴梅萼 史嘉权 清华大学出版社

源程序

DATA SEGMENT

DISPDATE DB 00,00,00,00,\"/\

DISPCOUNT DB 00,00,\"-\DISPTIME DB 00,00,\":\COUNT_FLAG DB 00

DISP_WELCOME DB \"DAOJISHIPAI\DISP_CHOOSE DB \"SETCOUNTTIME:S EXIT:Q\SHOW_RESET DB \"THE RESET TIME IS:\ MUS_FREQ DW 330,294,262,294,3 DUP (330) DW 3 DUP (294),330,393,392 DW 330,294,262,294,4 DUP (330) DW 294,294,330,294,262,-1

MUS_TIME DW 6 DUP (25),50

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

DW 2 DUP (25,25,50) DW 12 DUP (25),100

DIGIT DB \" _ \

DB \"| |\ DB \"|_|\DB \" \DB \" |\DB \" |\DB \" _ \DB \" _|\DB \"|_ \DB \" _ \DB \" _|\DB \" _|\DB \" \DB \"|_|\DB \" |\DB \" _ \DB \"|_ \DB \" _|\DB \" _ \DB \"|_ \DB \"|_|\DB \" _ \DB \" |\DB \" |\DB \" _ \DB \"|_|\DB \"|_|\DB \" _ \DB \"|_|\DB \" _|\DATA ENDS

SETF MACRO DH1,DL1 PUSH AX PUSH BX PUSH DX MOV AH,2H MOV BH,0H MOV DH,DH1 MOV DL,DL1 INT 10H POP DX

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

POP BX POP AX ENDM

CLEARSCREEN MACRO CH1,CL1,DH1,DL1,BH1 MOV AH,6 MOV AL,0 MOV CH,CH1 MOV CL,CL1 MOV DH,DH1 MOV DL,DL1 MOV BH,BH1 INT 10H ENDM

;1.倒计时程序主程序

CODE SEGMENT PARA 'CODE'

ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR

PUSH DS XOR AX,AX PUSH AX

MOV AX,DATA MOV DS,AX

SETF 0BH,1BH

CLEARSCREEN 08H,15H,10H,3AH,0FH MOV DX,OFFSET DISP_WELCOME CALL PRINT

SETF 0EH,19H

MOV DX,OFFSET DISP_CHOOSE CALL PRINT

CALL GETDATE CALL GETTIME CIRCLE: MOV AH,01H INT 21H CMP AL,'E' JZ BEGIN CMP AL,'S' JZ SETTIME CMP AL,'Q' JZ QUIT SETTIME:

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

CLEARSCREEN 00H,00H,18H,4FH,0FH SETF 09H,14H

MOV DX,OFFSET SHOW_RESET CALL PRINT

;CALL SET_TIME CALL SET_COUNT JMP BEGIN

QUIT: JMP NEXT BEGIN: JMP BEGIN_1

BEGIN_1:CLEARSCREEN 00H,00H,18H,4FH,62H CLEARSCREEN 02H,09H,12H,48H,48H CLEARSCREEN 03H,0BH,11H,46H,03H DIS_SCREEN: SETF 07H,13H CALL DISP CALL DISP_COUNT CALL DELAY CALL DEC_TIME CALL INC_1S MOV AH,0BH INT 21H INC AL JNZ DIS_SCREEN JMP CIRCLE NEXT:RET MAIN ENDP

;2.设置倒计时子程序 SET_COUNT PROC NEAR

PUSH AX

MOV AH,01H INT 21H

AND AL,0FH

MOV [DISPCOUNT],AL

INT 21H

AND AL,0FH

MOV [DISPCOUNT+1],AL

INT 21H

INT 21H

AND AL,0FH

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

MOV [DISPCOUNT+3],AL

INT 21H

AND AL,0FH

MOV [DISPCOUNT+4],AL

INT 21H

INT 21H

AND AL,0FH

MOV [DISPCOUNT+6],AL

INT 21H

AND AL,0FH

MOV [DISPCOUNT+7],AL

INT 21H

INT 21H

AND AL,0FH

MOV [DISPCOUNT+9],AL

INT 21H

AND AL,0FH

MOV [DISPCOUNT+10],AL POP AX RET

SET_COUNT ENDP

;3.设置时间

SET_TIME PROC NEAR

PUSH AX

MOV AH,01H INT 21H

AND AL,0FH

MOV [DISPTIME],AL

INT 21H

AND AL,0FH

MOV [DISPTIME+1],AL

INT 21H

INT 21H

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

AND AL,0FH

MOV [DISPTIME+3],AL

INT 21H

AND AL,0FH

MOV [DISPTIME+4],AL

INT 21H

INT 21H

AND AL,0FH

MOV [DISPTIME+6],AL

INT 21H

AND AL,0FH

MOV [DISPTIME+7],AL

POP AX RET

SET_TIME ENDP ;4.打印子程序 PRINT PROC NEAR

PUSH AX MOV AH,09H INT 21H POP AX RET

PRINT ENDP

;5.延时子程序

DELAY PROC NEAR

PUSH BX PUSH AX PUSH CX MOV BL,75D WAITF2: MOV CX,6632D WAITF1:

IN AL,61H AND AL,10H CMP AL,AH JE WAITF1 MOV AH,AL LOOP WAITF1 DEC BL CMP BL,0

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

JNZ WAITF2 POP CX POP AX POP BX RET DELAY ENDP

;6.日期获取子程序 GETDATE PROC NEAR

PUSH BX PUSH AX PUSH DX

MOV AH,2AH INT 21H

PUSH DX MOV BX,1000D MOV DX,0 MOV AX,CX DIV BX

AND AX,0FFH

MOV [DISPDATE],AL

XOR BX,BX MOV BL,100D MOV AX,DX DIV BL

MOV [DISPDATE+1],AL

XOR BL,BL XOR AL,AL MOV BL,10D MOV AL,AH AND AX,0FFH DIV BL

MOV [DISPDATE+2],AL MOV [DISPDATE+3],AH

POP DX MOV AX,0 MOV AL,DH DIV BL

MOV [DISPDATE+5],AL MOV [DISPDATE+6],AH

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

MOV AX,0 MOV AL,DL DIV BL

MOV [DISPDATE+8],AL MOV [DISPDATE+9],AH

POP DX POP AX POP BX

;7.时间获取子程序 GETTIME PROC NEAR

PUSH BX PUSH AX MOV BL,0AH MOV AH,2CH INT 21H MOV AX,0 MOV AL,CH DIV BL

MOV [DISPTIME],AL MOV [DISPTIME+1],AH MOV AX,0 MOV AL,CL DIV BL

MOV [DISPTIME+3],AL MOV [DISPTIME+4],AH MOV AX,0 MOV AL,DH DIV BL

MOV [DISPTIME+6],AL MOV [DISPTIME+7],AH POP AX POP BX RET

GETTIME ENDP

;8.倒计时显示子程序

DISP_COUNT PROC NEAR

PUSH AX PUSH BX PUSH DX

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

MOV AL,[DISPCOUNT] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,13H CALL PRINT SETF 0EH,13H ADD DX,06H CALL PRINT SETF 0FH,13H ADD DX,06H CALL PRINT

MOV AL,[DISPCOUNT+1] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,16H CALL PRINT SETF 0EH,16H ADD DX,06H CALL PRINT SETF 0FH,16H ADD DX,06H CALL PRINT

SETF 0EH,1AH MOV DL,16H MOV AH,02H INT 21H INT 21H

MOV AL,[DISPCOUNT+3] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,1DH CALL PRINT SETF 0EH,1DH ADD DX,06H CALL PRINT SETF 0FH,1DH

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

ADD DX,06H CALL PRINT

MOV AL,[DISPCOUNT+4] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,20H CALL PRINT SETF 0EH,20H ADD DX,06H CALL PRINT SETF 0FH,20H ADD DX,06H CALL PRINT

SETF 0EH,24H MOV DL,1EH MOV AH,02H INT 21H

SETF 0FH,24H MOV DL,1FH INT 21H

MOV AL,[DISPCOUNT+6] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,27H CALL PRINT SETF 0EH,27H ADD DX,06H CALL PRINT SETF 0FH,27H ADD DX,06H CALL PRINT

MOV AL,[DISPCOUNT+7] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,2AH

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

CALL PRINT SETF 0EH,2AH ADD DX,06H CALL PRINT SETF 0FH,2AH ADD DX,06H CALL PRINT

SETF 0EH,2EH MOV DL,1EH MOV AH,02H INT 21H

SETF 0FH,2EH MOV DL,1FH INT 21H

;计时秒数

MOV AL,[DISPCOUNT+9] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,32H CALL PRINT SETF 0EH,32H ADD DX,06H CALL PRINT SETF 0FH,32H ADD DX,06H CALL PRINT

MOV AL,[DISPCOUNT+10] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX SETF 0DH,35H CALL PRINT SETF 0EH,35H ADD DX,06H CALL PRINT SETF 0FH,35H ADD DX,06H CALL PRINT

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

POP AX POP BX POP DX RET

DISP_COUNT ENDP

;9.显示子程序

DISP PROC NEAR

PUSH AX PUSH BX PUSH DX

MOV AL,[DISPTIME] MOV BL,12H MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 08H,13H ADD DX,06H CALL PRINT SETF 09H,13H ADD DX,06H CALL PRINT SETF 07H,16H

MOV AL,[DISPTIME+1] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 08H,16H ADD DX,06H CALL PRINT SETF 09H,16H ADD DX,06H CALL PRINT SETF 08H,1AH MOV DL,1EH MOV AH,02H INT 21H

SETF 09H,1AH MOV DL,1FH

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

INT 21H

SETF 07H,1CH

MOV AL,[DISPTIME+3] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 08H,1CH ADD DX,06H CALL PRINT SETF 09H,1CH ADD DX,06H CALL PRINT SETF 07H,1FH

MOV AL,[DISPTIME+4] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 08H,1FH ADD DX,06H CALL PRINT SETF 09H,1FH ADD DX,06H CALL PRINT SETF 08H,23H MOV DL,1EH MOV AH,02H INT 21H

SETF 09H,23H MOV DL,1FH INT 21H

SETF 07H,25H

MOV AL,[DISPTIME+6] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 08H,25H ADD DX,06H CALL PRINT

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

SETF 09H,25H ADD DX,06H CALL PRINT SETF 07H,28H

MOV AL,[DISPTIME+7] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 08H,28H ADD DX,06H CALL PRINT SETF 09H,28H ADD DX,06H CALL PRINT

MOV AL,[DISPDATE] MUL BL

SETF 0AH,13H

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,13H ADD DX,06H CALL PRINT SETF 0CH,13H ADD DX,06H CALL PRINT

SETF 0AH,16H

MOV AL,[DISPDATE+1] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,16H ADD DX,06H CALL PRINT SETF 0CH,16H ADD DX,06H CALL PRINT SETF 0AH,19H

MOV AL,[DISPDATE+2]

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,19H ADD DX,06H CALL PRINT SETF 0CH,19H ADD DX,06H CALL PRINT

SETF 0AH,1CH

MOV AL,[DISPDATE+3] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,1CH ADD DX,06H CALL PRINT SETF 0CH,1CH ADD DX,06H CALL PRINT

SETF 0BH,20H MOV DL,16H MOV AH,02H INT 21H INT 21H

SETF 0AH,23H

MOV AL,[DISPDATE+5] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,23H ADD DX,06H CALL PRINT SETF 0CH,23H ADD DX,06H CALL PRINT

SETF 0AH,26H

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

MOV AL,[DISPDATE+6] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,26H ADD DX,06H CALL PRINT SETF 0CH,26H ADD DX,06H CALL PRINT

SETF 0BH,2AH MOV DL,16H MOV AH,02H INT 21H INT 21H

SETF 0AH,2DH

MOV AL,[DISPDATE+8] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,2DH ADD DX,06H CALL PRINT SETF 0CH,2DH ADD DX,06H CALL PRINT

SETF 0AH,30H

MOV AL,[DISPDATE+9] MUL BL

MOV DX,OFFSET DIGIT ADD DX,AX CALL PRINT SETF 0BH,30H ADD DX,06H CALL PRINT SETF 0CH,30H ADD DX,06H CALL PRINT

POP DX

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

POP BX POP AX RET

DISP ENDP

;10.时间减1子程序 DEC_TIME PROC NEAR

PUSH AX

MOV AL,[DISPCOUNT+10] CMP AL,00H JNE MID_POINT

CMP [DISPCOUNT+9],00H JNE MID_POINT_ONE CMP [DISPCOUNT+7],00H JNE MID_POINT_TWO CMP [DISPCOUNT+6],00H JNE MID_POINT_THREE CMP [DISPCOUNT+4],00H JNE MID_POINT_FOUR CMP [DISPCOUNT+3],00H JNE HOUR_TWO_HOUR_ONE CMP [DISPCOUNT+1],00H JNE DAY_ONE_HOUR_TWO CMP [DISPCOUNT],00

JNE DAY_TWO_DAY_ONE CALL MUSIC

JMP RETURN_ONE

MID_POINT:JMP GOING_SC_ONE

MID_POINT_ONE:JMP SC_TWO_SC_ONE MID_POINT_TWO:JMP MIN_ONE_SC_ONE MID_POINT_THREE:JMP MIN_TWO_MIN_ONE MID_POINT_FOUR:JMP HOUR_ONE_MIN_TWO DAY_TWO_DAY_ONE: MOV [DISPCOUNT+1],09H MOV [DISPCOUNT+3],2H MOV [DISPCOUNT+4],3H MOV [DISPCOUNT+6],05H MOV [DISPCOUNT+7],09H MOV [DISPCOUNT+9],05H MOV [DISPCOUNT+10],09H DEC [DISPCOUNT] JMP RETURN_ONE DAY_ONE_HOUR_TWO:

MOV [DISPCOUNT+3],2H MOV [DISPCOUNT+4],3H

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

MOV [DISPCOUNT+6],05H MOV [DISPCOUNT+7],09H MOV [DISPCOUNT+9],05H MOV [DISPCOUNT+10],09H DEC [DISPCOUNT+1] JMP RETURN_ONE

HOUR_TWO_HOUR_ONE: MOV [DISPCOUNT+4],09H MOV [DISPCOUNT+6],05H MOV [DISPCOUNT+7],09H MOV [DISPCOUNT+9],05H MOV [DISPCOUNT+10],09H DEC [DISPCOUNT+3] JMP RETURN_ONE

HOUR_ONE_MIN_TWO: MOV [DISPCOUNT+6],05H MOV [DISPCOUNT+7],09H MOV [DISPCOUNT+9],05H MOV [DISPCOUNT+10],09H DEC [DISPCOUNT+4] JMP RETURN_ONE MIN_TWO_MIN_ONE: MOV [DISPCOUNT+7],09H MOV [DISPCOUNT+9],05H MOV [DISPCOUNT+10],09H DEC [DISPCOUNT+6] JMP RETURN_ONE MIN_ONE_SC_ONE:

MOV [DISPCOUNT+9],05H MOV [DISPCOUNT+10],09H DEC [DISPCOUNT+7] JMP RETURN_ONE SC_TWO_SC_ONE:

MOV [DISPCOUNT+10],09H DEC [DISPCOUNT+9] JMP RETURN_ONE GOING_SC_ONE: DEC AL

MOV [DISPCOUNT+10],AL RETURN_ONE: POP AX RET

DEC_TIME ENDP

;11.时间加1子程序

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

INC_1S PROC NEAR

PUSH AX

MOV AL,[DISPTIME+7] INC AL

MOV [DISPTIME+7],AL CMP AL,0AH JNZ BB

MOV [DISPTIME+7],00H MOV AL,[DISPTIME+6] INC AL

MOV [DISPTIME+6],AL CMP AL,06H BB: JNZ RETURN

MOV [DISPTIME+6],00H

MOV AL,[DISPTIME+4] INC AL

MOV [DISPTIME+4],AL CMP AL,0AH JNZ RETURN

MOV [DISPTIME+4],00H MOV AL,[DISPTIME+3] INC AL

MOV [DISPTIME+3],AL CMP AL,06H JNZ RETURN

MOV [DISPTIME+3],00H

MOV AL,[DISPTIME] CMP AL,02H JZ B_4

MOV AL,[DISPTIME+1] INC AL

MOV [DISPTIME+1],AL CMP AL,0AH JNZ RETURN

MOV [DISPTIME+1],0H MOV AL,[DISPTIME] INC AL

MOV [DISPTIME],AL JMP RETURN B_4: MOV AL,[DISPTIME+1] INC AL

MOV [DISPTIME+1],AL

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

CMP AL,04H JNZ RETURN

MOV [DISPTIME],0H MOV [DISPTIME+1],00H RETURN: POP AX RET INC_1S ENDP

;12.音乐子程序 MUSIC PROC NEAR

PUSH SI PUSH BP PUSH BX PUSH DI

LEA SI,MUS_FREQ LEA BP,MUS_TIME

FREQ:MOV DI,[SI] CMP DI,-1H JE END_MUS

CMP DI,393

JE INCREASE_1 BACK: MOV BX,DS:[BP] CALL GENSOUNDF ADD SI,2 ADD BP,2 JMP FREQ

INCREASE_1:CALL INC_1S CALL DISP JMP BACK

END_MUS:CALL INC_1S CALL DISP POP DI POP BX POP BP POP SI RET

MUSIC ENDP

;13.音乐调用子程序

GENSOUNDF PROC NEAR

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI

MOV AL,0B6H OUT 43H,AL MOV DX,12H MOV AX,348CH DIV DI

OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H MOV AH,AL OR AL,03H OUT 61H,AL

WAIT1: MOV CX,3314D CALL WAITF DEC BX JNZ WAIT1 MOV AL,AH OUT 61H,AL POP DI POP DX POP CX POP BX POP AX RET

GENSOUNDF ENDP

;14.音阶延时子程序 WAITF PROC NEAR

PUSH AX WAITF_1: IN AL,61H AND AL,10H CMP AL,AH JE WAITF_1 MOV AH,AL LOOP WAITF_1 POP AX RET

WAITF ENDP CODE ENDS

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

END MAIN

运行结果:

源-于-网-络-收-集

====Word行业资料分享--可编辑版本--双击可删====

源-于-网-络-收-集

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务