Консультация № 67556
18.12.2006, 17:42
0.00 руб.
0 1 1
Здравствуйте.
Я пишу резидент, который должен записывать в файл, то что вводится на клавиатуре. Я пишу например в буфер, как мне потом его в файл писать???
Тоесть, при использовании прерываний в резиденте, получаем несколько строк закарлюк(как мне уже отвечали, нежелательно использовать прерывания в резидентной части). Как мне тогда быть?
Код прилогается.
Спасибо.

Приложение:
title a23resid (com);resident programcodeseg segment para assume cs:codeseg org 100h begin: jmp b10init ;perehod k inicializaciisaveint9 dd ?duration dw 100hmes db ‘Initialization: ‘,‘$‘,10,13errmes db ‘file create with error‘,‘$‘,10,13sucsses db ‘File was create succesfuly‘,‘$‘,10,13path db ‘C:\keys.log‘,00hdeskr dw ?buffer db ?a10test: push ax ;sohranenie registrov push cx in al, 60h ;priem koda ot porta mov buffer, al ;scan 01(Ecs)? ;cmp al, 01 ;jne a50exit a50exit: pop cx ;vosstanovleniye registrov pop ax jmp cs:saveint9 ;k staromu INT 09H ;inicializaciya:b10init: ;--------------- mov ah, 09h lea dx, mes int 21h cli ;zapret prerivaniy mov ah, 35h ;polucheniye adressa INT 09H mov al, 09h ; v ES:BX int 21h mov word ptr saveint9, bx ; i sohraneniye ego mov word ptr saveint9+2, es mov ah, 25h mov al, 09h ;ustanovka novogo adresa dlya mov dx, offset a10test ;INT 09H= a10test int 21h mov ah, 3ch mov cx, 00 lea dx, path int 21h jc error mov ah, 09h lea dx, sucsses int 21h mov ah, 31h ;ostavit residentnoy mov dx, offset b10init ;ustanovka razmera sti ;razreshenie prerivaniy int 21h jmp finisherror: mov ah, 09h lea dx, errmes int 21hfinish:codeseg ends end begin

Обсуждение

давно
Советник
419
1011
18.12.2006, 17:59
общий
это ответ
Здравствуйте, Lestat!

Используй таймер, и проверку на доступность реентабельность ДОСа. Флаг такой есть.

удачи
Форма ответа