您的位置:首页 > 其它

南邮微机实验(设计定时器)

2016-12-08 22:09 981 查看
利用系统定时源设计计时器,具体内容:利用日时钟附加1CH中断设计定时中断程序,每隔一秒刷新屏幕上显示的时、分、秒。

.486
DATA SEGMENT USE16
MESG DB '00:00:00',0DH,'$'
HOUR1 DB 0
HOUR2 DB 3
MIN1 DB 5
MIN2 DB 9
SECOND1 DB 5
SECOND2 DB 8
OLD0A DD ?
ICOUNT DB 18
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
CLI
CALL READ0A
CALL WRITE0A
STI

SERVICE PROC
PUSHA
PUSH DS
MOV AX,DATA
MOV DS,AX
DEC ICOUNT
JNZ EXIT
MOV ICOUNT,18

LEA BX,MESG

INC SECOND2
CMP SECOND2,10
JB T
MOV SECOND2,0
INC SECOND1
CMP SECOND1,6
JB T
MOV SECOND1,0
INC MIN2
CMP MIN2,10
JB T
MOV MIN2,0
INC MIN1
CMP MIN1,6
JB T
MOV MIN1,0
INC HOUR2
CMP HOUR1,2 ;以下几行代码用于判断是否是23:59:59加1s,若是,则跳转至00:00:00
JE t1
CMP HOUR2,10
JB T
MOV HOUR2,0
INC HOUR1
JMP T
t1: CMP HOUR2,4
JB T
MOV HOUR1,0
MOV HOUR2,0
MOV MIN1,0
MOV MIN2,0
MOV SECOND1,0
MOV SECOND2,0

T:
MOV AL,HOUR1
ADD AL,30H
MOV [BX],AL

MOV AL,HOUR2
ADD AL,30H
MOV [BX+1],AL

MOV AL,MIN1
ADD AL,30H
MOV [BX+3],AL

MOV AL,MIN2
ADD AL,30H
MOV [BX+4],AL

MOV AL,SECOND1
ADD AL,30H
MOV [BX+6],AL

MOV AL,SECOND2
ADD AL,30H
MOV [BX+7],AL

MOV AH,9
LEA DX,MESG
INT 21H

EXIT: POP DS ;恢复现场
POPA
IRET
SERVICE ENDP

BtoD PROC
RET
BtoD ENDP

READ0A PROC
MOV AX,351CH
INT 21H
MOV WORD PTR OLD0A,BX
MOV WORD PTR OLD0A+2,ES
RET
READ0A ENDP

WRITE0A PROC
PUSH DS
MOV AX,CODE
MOV DS,AX
MOV DX,OFFSET SERVICE
MOV AX,251CH
INT 21H
POP DS
RET
WRITE0A ENDP

RESET PROC
MOV DX,WORD PTR OLD0A
MOV DS,WORD PTR OLD0A+2
MOV AX,251CH
INT 21H
RET
RESET ENDP
CODE ENDS
END BEG
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息