сообщений, который перехватывает прерывание 21h функцию 09h (Прога под MS DOS) и записывает то что выводиться в файл printed.log. И почему-то , не понимаю почему она работает некоректно. Во-первых, не записывает выведенное в лог файл ( он находится в папке с логгером ). Во-вторых, выводиться перехваченное сообщение некоректно, т.е. с лишними символами и останавливает работу всей системы. Исходники ниже.
CSEG segment
org 100h
Start:
jmp Init
Int_21h_proc proc
cmp ah, 09h
je Ok_09
jmp dword ptr cs:[Int_21h_vect]
Ok_09:
push ax
push bx
push cx
push dx
push ds
push dx
mov ah, 4Eh
xor cx, cx
lea dx, logfile
int 21h
mov ax, 3D02h
mov dx, 9Eh
int 21h
xchg bx, ax
mov ah, 40h
pop dx
mov cx, 0Fh
int 21h
mov ah, 3Eh
int 21h
mov ah, 09h
int 21h
pop ds
pop dx
pop cx
pop bx
pop ax
pushf
call dword ptr cs:[Int_21h_vect]
iret
Int_21h_vect dd ?
logfile db "PRINTED.LOG",0
Int_21h_proc endp
Init:
mov ax, 3521h
int 21h
mov word ptr Int_21h_vect, bx
mov word ptr Int_21h_vect+2, es
mov ax, 2521h
mov dx, offset Int_21h_proc
int 21h
mov dx, offset Init
int 27h
CSEG ends
end Start
Так мне никто не поможет с моей проблемой?
Обсуждают сегодня