Резидентные программы - 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 ;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д