Резидентные программы - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите осилить лабу "При нажатии клавиши F1 программа очищает экран и безостановочно выводит на экран сообщение "Не хочу вам помогать!", прокручивая при этом экран вверх. Секунд через 10-20 этот процесс прекращается, восстанавливается экран, и работа ПЭВМ продолжается обычным образом."

Решение задачи: «Резидентные программы»

textual
Листинг программы
  1. ; fasm code...
  2. ; Резидент. Перехватывает F1
  3. ;----------------------------
  4.        org   100h
  5.        push  setup
  6.        ret                  ;настройки..
  7.  
  8. new_9: db    60h
  9.        in    al,60h         ;читаем клаву
  10.        cmp   al,3Bh         ;F1 ?
  11.        jne   @ToHell        ;нет!
  12.  
  13. ;cut ----------------8<-----------------------
  14. ;....
  15. ;cut ----------------8<-----------------------
  16.  
  17. @ToHell:  db   61h,0EAh       ;на старый вектор
  18. old_9:  dw   0,0
  19. msg     db   'Damned Help!!!'
  20. len     =    $-msg
  21.  
  22. ;======= Перехват вектора(9) ==========================
  23. setup:
  24.        mov   ax,3509h       ;запомним оригинал
  25.        int   21h            ;
  26.        mov   [old_9],bx     ;
  27.        mov   [old_9+2],es   ;
  28.  
  29.        mov   ax,2509h       ;ставим свой обработчик
  30.        mov   dx,new_9       ;
  31.        int   21h            ;
  32.  
  33.        mov   dx,setup       ;всё-что выше, останется в памяти
  34.        int   27h            ;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут