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

📄 time.asm

📁 汇编语言中断TSR时间程序(int 1ch)
💻 ASM
字号:
CODE     	SEGMENT  PARA
         	ASSUME CS:CODE,DS:CODE

NEW_INT1C       PROC    FAR
                PUSH    AX
                PUSH    BX
                PUSH    CX
                PUSH    DX
                PUSH    SI
                PUSH    DI
                PUSH    BP
                PUSH    DS
                PUSH    ES
                STI

                JMP     START
COUNT           DB      ?
CURSOR1		DB	0,50
CURSOR2		DB	0,60
OLD_INT1C       DD      ?
DATE			DB		'1980-01-01'
D_LEN			EQU		$-DATE
TIME			DB		'00:00:00'
T_LEN			EQU		$-TIME

START:          PUSH    CS
                POP     DS

                INC     COUNT
                CMP     COUNT,18
                JB      RETURN
                MOV     COUNT,0

                

                CALL    GET_DATE
                MOV		BP,OFFSET DATE
                MOV		CX,D_LEN
                MOV		BL,70H
                MOV		DH,CURSOR1
                MOV		DL,CURSOR1+1
                CALL	DISP_STR
                
                
               
                CALL	GET_TIME
                MOV		BP,OFFSET TIME
                MOV		CX,T_LEN
                MOV		BL,73H
                MOV		DH,CURSOR2
                MOV		DL,CURSOR2+1
                CALL	DISP_STR
                
                
                	

RETURN:         CLI
                POP     ES
                POP     DS
                POP     BP
                POP     DI
                POP     SI
                POP     DX
                POP     CX
                POP     BX
                POP     AX
                IRET
NEW_INT1C       ENDP

GET_DATE	PROC	
		MOV	AH,4
		INT	1AH
		MOV	AX,CX
		LEA		SI,DATE		
		MOV	CX,4
				
LP1:	PUSH	CX	
		MOV	CL,4
		ROL	AX,CL
		MOV	BL,AL
		AND	BL,0FH
		OR	BL,30H
		MOV	[SI],BL
		INC	SI	
		POP	CX	
		LOOP	 	LP1
		
		MOV	AX,DX
		MOV	CX,4
		LEA	SI,DATE+5
LP2:	PUSH	CX
		MOV		CL,4
		ROL		AX,CL
		MOV		BL,AL
		AND		BL,0FH
		OR		BL,30H
		MOV		[SI],BL
		INC		SI
		POP		CX
		CMP		CX,3
		JNZ		LP2_1
		INC		SI
LP2_1:	LOOP	LP2
		RET
GET_DATE	ENDP
		
		
GET_TIME	PROC
			
		MOV		AH,2
		INT		1AH
		MOV		AX,CX
		
		MOV		CX,4
		LEA		SI,TIME
LP3:	PUSH	CX
		MOV		CL,4
		ROL		AX,CL
		MOV		BL,AL
		AND		BL,0FH
		OR		BL,30H
		MOV		[SI],BL
		INC		SI
		POP		CX
		CMP		CX,3
		JNZ		LP3_1
		INC		SI
LP3_1:	LOOP	LP3		

		PUSH	DX
		MOV		CL,4
		SHR		DH,CL
		OR		DH,30H
		MOV		TIME+6,DH
		POP		DX
		AND		DH,0FH
		OR		DH,30H
		MOV		TIME+7,DH
		RET
GET_TIME	ENDP

DISP_STR	PROC
		PUSH	DS
		POP		ES
		MOV		BH,0
		MOV		AL,0
		MOV		AH,13H
		INT		10H
		RET
DISP_STR	ENDP
				
				
			
H_LEN           EQU     $-NEW_INT1C

MAIN            PROC    FAR
                MOV     AX,CS
                MOV     DS,AX

                MOV     COUNT,0

                MOV     AH,35H
                MOV     AL,1CH            ;GET  INT 1Ch ADDR
                INT     21H

                MOV     WORD PTR OLD_INT1C,BX
                MOV     WORD PTR OLD_INT1C+2,ES

                MOV     AH,25H
                MOV     AL,1CH
                MOV     DX,OFFSET NEW_INT1C      ;DS=CS
                INT     21H

                MOV     DX,(H_LEN+15)/16+10H
                MOV     AX,3100H
                INT     21H
MAIN            ENDP
CODE            ENDS
                END     MAIN



⌨️ 快捷键说明

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