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

📄 fi.asm

📁 程序中利用改中断的方法
💻 ASM
字号:
CODE    SEGMENT
        ASSUME 	CS:CODE,DS:CODE
        ORG     100H
START:
	JMP 	ACTION
MAIN:	
	CLI
	PUSH 	DS
        PUSH    AX
        PUSH    BX
        PUSH    CX
        PUSH    DX
        PUSH    SI
        STI
	XOR BH,BH		;读光标位置
        MOV     AH,3
        INT     10H
        PUSH    DX
        MOV     AH,2CH
        INT     21H
	PUSH	DX
 	PUSH 	CX
	LEA	SI,TIME		
	XCHG	AL,CH
 	CALL 	DO
	POP	AX
	CALL	DO
	POP	AX
	XCHG 	AL,AH
	CALL	DO
	PUSH	CS
	POP	ES
   	MOV 	BX,0EH
	LEA 	AX,TT		;打印提示语句和时间
	MOV	BP,AX
     	MOV 	AX,1300H
	MOV	CX,21H
    	MOV 	DX,002FH
	INT 	10H
	POP 	DX
	XOR 	BH,BH		;恢复光标位置
	MOV 	AH,2
	INT 	10H
 	CLI
        POP     SI
        POP     DX
        POP     CX
        POP     BX
	POP     AX
        POP     DS
 	STI
	PUSHF
	CALL	CS:[INT1C]
        IRET
DO:			;处理时间子程序
	XOR 	AH,AH
	MOV 	BL,10
	DIV 	BL
	ADD 	AX,3030H
	MOV	CS:[SI],AL
	INC	SI
	MOV 	CS:[SI],AH
	INC	SI
	INC	SI
	RET
EXIT:
	pushf
	push	ax
	push	ds
	MOV 	DI,20H             ;恢复系统时钟的中断向量表
	MOV 	AX,WORD PTR [INT1C]
	MOV 	CS:[1CH*4],AX
	MOV 	AX,WORD PTR [INT1C+2]
	MOV 	CS:[1CH*4+2],AX
	MOV 	DI,20H             ;恢复CTRL+Break控制中断
	MOV 	AX,WORD PTR [INT1B]
	MOV 	CS:[1BH*4],AX
	MOV 	AX,WORD PTR [INT1B+2]
	MOV 	CS:[1BH*4+2],AX
 	pop	ds
	pop	ax
	popf

INT1C 	DD	?		;定义两个字节,存放INT1CH的入口
INT1B	DD	?		;定义两个字节,存放INT1BH的入口
TT	DB	'PRESS CTRL+BREAK TO EXIT.'	;提示语句
TIME	DB	'00:00:00'		;存放时间


ACTION:	PUSH	ES
	XOR	AX,AX
	MOV 	ES,AX
	MOV	AX,ES:[1BH*4]		;保存中断入口
	MOV 	WORD PTR CS:[INT1B],AX
	MOV 	AX,ES:[1BH*4+2]
	MOV 	WORD PTR CS:[INT1B+2],AX
	MOV	AX,ES:[1CH*4]
	MOV 	WORD PTR CS:[INT1C],AX
	MOV 	AX,ES:[1CH*4+2]
	MOV 	WORD PTR CS:[INT1C+2],AX
	POP 	ES
	push	CS
	pop	DS
	MOV 	DX,OFFSET main		;改INT1C的入口
	MOV 	AX,251CH
	INT 	21H
	MOV 	DX,OFFSET EXIT		;改INT1B的入口
	MOV 	AX,251BH
	INT 	21H
	mov	DX,OFFSET	ACTION
	INT 	27H
CODE	ENDS
        END    START

⌨️ 快捷键说明

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