南邮微机实验(设计定时器)
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
.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
相关文章推荐
- 南邮微机接口实验——8254定时器/计数器实验
- (单片机原理与应用)定时器/计数器设计实验
- 南邮算法分析与设计实验2 动态规划法
- 实验7 利用51单片机的定时器设计一个时钟
- 南邮算法分析与设计实验3 回溯法
- 南邮微机实验(基于中断的动态显示)
- 定时器/计数器设计实验
- 南邮算法分析与设计实验2 动态规划法
- 南邮算法分析与设计实验1 分治策略
- 南邮JAVA程序设计实验2 小应用程序Applet设计
- 南邮微机实验 串行口的测试(查询发送,中断接收)
- 南邮算法分析与设计实验4 密码算法
- 南邮算法分析与设计实验3 回溯法
- 定时器/计数器设计实验
- 南邮算法分析和实验设计1 分而治之
- 南邮微机接口实验——测试微机系统串行口,串口通信外环自发自收
- 南邮微机接口实验——基于中断的屏幕字符串屏幕动态显示
- 南邮微机实验 串行口的测试
- 设计一个具有健壮性,灵活性,可重用性的Web应用架构(二)--->实验总结
- 实验3、11.数字抢答器设计