📄 intcaptr.asm
字号:
.MODEL SMALL C
public _oldInt10
public _Int10
public _bPointer
extrn _filename: byte
extrn _TimeStamp: near
.DATA
_oldInt10 DD ?
_bPointer DW ?
charBuffer DB 255 dup(?)
.CODE
_Int10:
sti
push ax
push bx
push cx
push dx
push si
push di
push es
push ds
push bp
mov bp, @DATA
mov ds, bp
mov bp, sp
cmp ah, 0Eh
je is0Eh
cmp ah, 09h
jne bypass
is0Eh:
mov bx, _bPointer
mov ds:[charBuffer+bx], al
inc _bPointer
cmp bx,255
je flushOut
cmp al, 0Dh
jne bypass
flushOut:
mov al, 00000001B; open file for write only
mov dx, offset _filename
mov ah, 3Dh
int 21h
jnc fileOpened
mov ah, 3Ch
mov cx, 0h
int 21h
jnc fileOpened
jmp bypass
fileOpened:
mov bx, ax
mov al, 2
mov ah, 42h
xor cx, cx
xor dx, dx
int 21h
jc closeFile
mov ah, 40h
mov cx, _bPointer
mov dx, offset charBuffer
int 21h
closeFile:
mov ah, 3Eh
int 21h
mov _bPointer, 0
call _TimeStamp
jmp bypass
bypass:
pushf
push cs
push offset returnAddr
cli
push _oldInt10
mov ax, [bp+10h]
mov bx, [bp+0Eh]
mov cx, [bp+0Ch]
mov dx, [bp+0Ah]
mov si, [bp+08h]
mov di, [bp+06h]
mov es, [bp+04h]
mov ds, [bp+02h]
mov bp, [bp]
retf
returnAddr:
add sp, 12h
iret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -