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

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

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

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

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

textual
Листинг программы
; fasm code...
; Резидент. Перехватывает F1
;----------------------------
       org   100h
       push  setup
       ret                  ;настройки..
 
new_9: db    60h
       in    al,60h         ;читаем клаву
       cmp   al,3Bh         ;F1 ?
       jne   @ToHell        ;нет!
 
;cut ----------------8<-----------------------
;....
;cut ----------------8<-----------------------
 
@ToHell:  db   61h,0EAh       ;на старый вектор
old_9:  dw   0,0
msg     db   'Damned Help!!!'
len     =    $-msg
 
;======= Перехват вектора(9) ==========================
setup:
       mov   ax,3509h       ;запомним оригинал
       int   21h            ;
       mov   [old_9],bx     ;
       mov   [old_9+2],es   ;
 
       mov   ax,2509h       ;ставим свой обработчик
       mov   dx,new_9       ;
       int   21h            ;
 
       mov   dx,setup       ;всё-что выше, останется в памяти
       int   27h            ;

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

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