⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8254.asm

📁 本程序是一个8254,8259的中断调用程序组,可以实现时钟的调用,中断时可以进行外部的处理.
💻 ASM
字号:
;实时时钟实验
DATA SEGMENT
DISPLAY DB 'INPUT AS HH:MM:SS',0DH,0AH,'$'
STARTIME DB 11,11 DUP(?),'$'
X EQU 30
Y EQU 30
CURSOR DW ?
S1PERCENT DB 0
KEEP21H DB ?
PORT3 EQU  230H                        ;???
PORT0 EQU  233H                        ;???
ININUM EQU 00H
DATA ENDS
STACK SEGMENT
STACK ENDS
CODE SEGMENT
      ASSUME CS:CODE,DS:DATA,ES:STACK
START: MOV AX,DATA
       MOV DS,AX
       MOV DX,OFFSET DISPLAY
       MOV AH,09H
       INT 21H
       MOV DX,OFFSET STARTIME          ;接收时钟初始值
       MOV AH,0AH
       INT 21H
       CLI
       MOV AH,35H
       MOV AL,0BH                      ;IRQ3
       INT 21H
       PUSH BX
       PUSH ES
       PUSH DS
       MOV AX,SEG INTPROC
       MOV DS,AX
       MOV DX,OFFSET INTPROC
       MOV AH,25H
       MOV AL,0BH
       INT 21H
       POP DS
       IN AL,21H
       MOV KEEP21H,AL
       AND AL,11110111B                ;IMRIRQ3
       OUT 21H,AL
       STI
       MOV DX,PORT3
       MOV AL,00010111B                ;初始化8254,BCD式,方式3
       OUT DX,AL
       MOV DX,PORT0
       MOV AL,ININUM                   ;计数初值
       OUT DX,AL
       MOV AH,03H                      ;保存光标位置
       INT 10H
       MOV CURSOR,DX
A00:   MOV DH,Y                        ;置光标位置
       MOV DL,X
       MOV AH,02H
       INT 10H
       MOV DX,OFFSET STARTIME[2]       ;显示时间
       MOV AH,09H
       INT 21H
       MOV BL,STARTIME[9]              ;移个位值到BL中
A11:   CMP BL,STARTIME[9]
       JNE A00
       MOV AH,01H
       INT 21H
       JZ A11
       MOV AH,00H
       INT 21H
       CMP AL,1AH                      ;ESC
       JNZ A00
EXIT:  MOV AL,KEEP21H
       OUT 21H,AL
       MOV DX,CURSOR                   ;恢复原光标位置
       MOV AH,02H
       INT 10H
       POP ES
       POP BX
       MOV AH,25H
       MOV AL,0BH
       INT 21H
       MOV AH,4CH
       INT 21H
       ;用户中断服务程序
INTPROC PROC FAR
       STI
       PUSH AX
       PUSH BX
       PUSH DS
       MOV AX,DATA
       MOV DS,AX
       INC S1PERCENT
       CMP S1PERCENT,100
       JNZ B00
       MOV S1PERCENT,0
       INC STARTIME[9]                 ;秒
       CMP STARTIME[9],'9'
       JBE B00
       MOV STARTIME[9],30H
       INC STARTIME[8]
       CMP STARTIME[8],'6'
       JB B00
       MOV STARTIME[8],30H             ;分
       INC STARTIME[6]
       CMP STARTIME[6],'9'
       JBE B00
       MOV STARTIME[6],30H
       INC STARTIME[5]
       CMP STARTIME[5],'6'
       JB B00
       MOV STARTIME[5],30H
       INC STARTIME[3]                 ;时
       CMP STARTIME[3],'9'
       JA B11
       CMP STARTIME[3],'3'
       JNE B00
       CMP STARTIME[2],'1'
       JNE B00
       MOV STARTIME[2],30H
       MOV STARTIME[3],'1'
       JMP B00
       MOV STARTIME[2],30H
       MOV STARTIME[3],31H
B11:   MOV STARTIME[3],30H
       INC STARTIME[2]
B00:   MOV AL,20H
       OUT 20H,AL
       POP DS
       POP BX
       POP AX
       IRET
INTPROC ENDP
CODE ENDS
       END START


       
       
       
       
       
       
                                       
       
       
       
       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -