Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Резидентная программа, проблема рентабельности 
:(
    Опции темы
Guest_Vitek
  Дата 8.5.2003, 23:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Приветствую всех!
Вобщем задача такая : резидентная прога сидит в памяти и при нажатии F11 сохраняет содержимое видеопамяти в файл.
как делал : перехватываю int28 , в нём проверяю содержимое порта клавы на наличие кода F11 и если это так, то создаю файл...
Проблема : прога не пашет под виртуальной машиной (dos) wmware.
Может проблема и не в коде, но я не знаю что ещё может быть...
Вот код :
Код

.186
.MODEL tiny
.CODE
.STARTUP
               jmp begin  
old_int28h      dd 0    
old_int2Fh      dd 0  
fname           db 'qwerty.tmp',0  

new_int2Fh  proc  far
               cmp   ax,0FF00h
               jz    installed
               jmp   dword ptr cs:old_int2Fh
installed:
               mov   ax,00FFh
               iret
new_int2Fh  endp

new_int28h  proc  far
               pusha              ; сохранение регистров
               in    al,60h       ; читаем содержимое порта клавиатуры              
               cmp   al,57h       ; F11 ?
               jne   no                                                          
               xor   al,80h       ; Удаляем код F11 из порта
               out   60h,al
               push  cs
               pop   ds
               mov   dx,offset fname
               mov   ah,3ch
               xor   cx,cx
               int   21h          ; Создание файла

               mov   bx,ax        ; В bx описатель файла
               mov   ax,0B800h
               mov   ds,ax        ; в ds - адрес видепамяти
               mov   cx,0FA0h     ; Число записываемых байт (4000)
               mov   ah,40h
               xor   dx,dx  
               int   21h          ; Запись в файл
               mov   ah,3eh
               int   21h          ; Закрытие файла
     no:
               popa  
               jmp   dword ptr cs:old_int28h
               iret
new_int28h  endp
;==============================
begin proc  far

               mov   ax,0FF00h
               int   2Fh                   ; Проверка : программа в памяти ?
               cmp   ax,00FFh
               je    already_in_mem

               mov   ax,3528h
               int   21h
               mov   word ptr old_int28h,bx
               mov   word ptr old_int28h+2,es

               mov   ax,352Fh
               int   21h
               mov   word ptr old_int2Fh,bx
               mov   word ptr old_int2Fh+2,es
               push  cs
               pop   ds

               mov   dx,offset msg1
               mov   ah,9
               int   21h
               mov   dx,OFFSET new_int28h
               mov   ax,2528h
               int   21h
               mov   dx,OFFSET new_int2Fh
               mov   ax,252Fh
               int   21h
               mov   dx,OFFSET begin
               int   27h
already_in_mem:
               mov   dx,OFFSET msg2
               mov   ah,9
               push  cs
               pop   ds
               int   21h
.EXIT
begin endp

msg1          db 'Program installed.$'
msg2          db 'Already in memory!!!$'
               end

Зараннее благодарен...
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3141 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.