home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
QBasic & Borland Pascal & C
/
Delphi5.iso
/
C
/
Samples
/
C-ASM_VI.ARJ
/
PROGASM.ZIP
/
PROG090.ASM
< prev
next >
Wrap
Assembly Source File
|
1988-04-10
|
3KB
|
86 lines
;************************************************************************
; Terminate and stay resident program to intercept INT 5, caused by *
; <Shift>+<PrtSc>, and to save graphics screen into a file. *
;************************************************************************
;_TEXT SEGMENT BYTE PUBLIC 'CODE'
; ASSUME CS:_TEXT,DS:_TEXT
; ASSUME ES:_TEXT,SS:_TEXT
; ORG 100H
JMP Init_Dump
;*****************************************************
; This is where we get when the <Shift>+<PrtSc> is detected
;*****************************************************
Print_Int PROC FAR
STI
PUSH AX ;Save registers
PUSH BX
PUSH CX
PUSH DX
CALL _Screen_Dump ;Call routine to save video buffer
POP DX ;Restore registers
POP CX
POP BX
POP AX
IRET
Print_Int ENDP
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;INSERT THE SCREEN_DUMP ROUTINE HERE
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Last_Byte:
;***************************************************************
; THIS IS THE INITIALIZATION DONE ONLY WHEN LOADED INTO MEMORY
;***************************************************************
Message DB "Screen Dump Utility Loaded",0Ah,0Dh,0
Init_Dump:
;--- Print a message telling user that we are installed
PUSH CS ;Fetch pointer to sign on message
POP DS
LEA SI,Message
MOV BH,0 ;Use BIOS to print the message
MOV BL,7
LODSB ;Fetch first character of message
Write: MOV AH,0EH ;Output the next character
INT 10H ;using BIOS function E
LODSB ;Fetch next character of the message
CMP AL,0 ;Is it the terminating zero?
JNZ WRITE ;...No, go output next one
;--- Use DOS services to revector Interrupt 5
MOV BX,CS ;Use service 25 to set vector 5
MOV DS,BX
MOV DX,OFFSET Print_Int
MOV AL,05H
MOV AH,25H
INT 21H
;Terminate but stay resident
MOV BX,CS ;Use DOS service 31 to leave us residen
MOV DS,BX
MOV DX,OFFSET Last_Byte
SHR DX,1
SHR DX,1
SHR DX,1
SHR DX,1
INC DX
MOV AX,3100H
INT 21H
RET
;_TEXT ENDS
; END