Системное программное обеспечение. Рощин А.В. - 124 стр.

UptoLike

Составители: 

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