ВУЗ:
Составители:
124
mov bx,80h
mov cx,[bx] ; Кол. символов командной строки
inc bx ; Начало командной строки
cmd: mov al,[bx] ; Первый символ командной строки
Здесь производится анализ командной строки
inc bx
loop cmd
Во втором примере резидентной программы выполняется анализ
командной строки для распознавания ключа выгрузки /u.
4.7 Примеры резидентных программ
Написать резидентную программу, которая перехватывает
прерывание int 5 (Print Screen) и вместо распечатки экрана на каждое
нажатие клавиши PrtSc изменяет цвет рамки экрана. Рамка должна
принимать циклически один из 16 цветов. Программа не должна позволять
загрузить себя повторно. При
попытке повторной загрузки программа
должна выводить предупреждающее сообщение.
УКАЗАНИЯ:
• Передавать управление старому обработчику прерывания не надо.
• Для окрашивания рамки экрана следует использовать подфункцию 01h
функции 10h прерывания 10h (ax = 1001h, bx = цвет).
• В начале программы следует не забыть записать в DS значение CS.
• Для проверки наличия резидентной программы в памяти использовать
функцию FFh прерывания 2Fh.
Assume CS: Code, DS: Code
Code SEGMENT
org 100h
resprog proc far
mov ax,cs
mov ds,ax
jmp init
color db 0
old_int2Fh_off dw ?
old_int2Fh_seg dw ?
msg db 'Драйвер уже установлен$'
; Новый обработчик прерывания 2Fh
new_int2Fh proc far
cmp ax,0ff00h
jz installed
jmp dword ptr cs:old_int2Fh_off
installed: mov ax,0ffh
iret
new_int2Fh endp
; Новый обработчик прерывания 5
new_int5 proc far
mov bh,color
124
mov bx,80h
mov cx,[bx] ; Кол. символов командной строки
inc bx ; Начало командной строки
cmd: mov al,[bx] ; Первый символ командной строки
Здесь производится анализ командной строки
inc bx
loop cmd
Во втором примере резидентной программы выполняется анализ
командной строки для распознавания ключа выгрузки /u.
4.7 Примеры резидентных программ
Написать резидентную программу, которая перехватывает
прерывание int 5 (Print Screen) и вместо распечатки экрана на каждое
нажатие клавиши PrtSc изменяет цвет рамки экрана. Рамка должна
принимать циклически один из 16 цветов. Программа не должна позволять
загрузить себя повторно. При попытке повторной загрузки программа
должна выводить предупреждающее сообщение.
УКАЗАНИЯ:
• Передавать управление старому обработчику прерывания не надо.
• Для окрашивания рамки экрана следует использовать подфункцию 01h
функции 10h прерывания 10h (ax = 1001h, bx = цвет).
• В начале программы следует не забыть записать в DS значение CS.
• Для проверки наличия резидентной программы в памяти использовать
функцию FFh прерывания 2Fh.
Assume CS: Code, DS: Code
Code SEGMENT
org 100h
resprog proc far
mov ax,cs
mov ds,ax
jmp init
color db 0
old_int2Fh_off dw ?
old_int2Fh_seg dw ?
msg db 'Драйвер уже установлен$'
; Новый обработчик прерывания 2Fh
new_int2Fh proc far
cmp ax,0ff00h
jz installed
jmp dword ptr cs:old_int2Fh_off
installed: mov ax,0ffh
iret
new_int2Fh endp
; Новый обработчик прерывания 5
new_int5 proc far
mov bh,color
Страницы
- « первая
- ‹ предыдущая
- …
- 122
- 123
- 124
- 125
- 126
- …
- следующая ›
- последняя »
