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

UptoLike

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

125
inc color
mov ax,1001h
int 10h
iret
new_int5 endp
resprog endp
ressize equ $-resprog ; Размер в байтах резидентной части
init proc near
; Проверка раличия резидентной программы в памяти
mov ax,0ff00h
int 2fh
cmp ax,0ffh
jnz first_start ; Не установлена
lea dx,msg ; Вывод сообщения о том,
mov ah,9 ; что драйвер уже загружен
int 21h
ret
first_start: mov ax,2505h ; Функция 25h, вектор 5
lea dx,new_int5
int 21h ; Запись нового вектора 5
mov ax,352fh ; Сохранение старого вектора прерывания 2Fh
int 21h
mov cs:old_int2fh_off,bx
mov cs:old_int2fh_seg,es
lea dx,new_int2Fh ; Запись нового вектора прерывания 2Fh
mov ax,252fh
int 21h
; Завершение программы с оставлением резидентной части в памяти
mov dx,(ressize+10fh)/16
mov ax,3100h
int 21h
init endp
Code ENDS
END resprog
Написать резидентную программу, записывающую содержимое
экрана в символьном режиме в файл. Программа должна анализировать
флаг активности DOS и не должна допускать повторной загрузки в память.
По ключу /u программа должна выгружаться из памяти с освобождением
занимаемого ей места. Замечание: приведенная ниже программа нормально
работает лишь под DOS до версии 5.0, так как в более поздних
версиях
иначе происходит работа с клавиатурой.
Code SEGMENT
Assume CS: Code, DS: Code
org 100h
resprog proc far
mov ax,cs
mov ds,ax ; DS = CS
jmp init ; Переход на инициализирующую секцию
                                      125



             inc     color
             mov ax,1001h
             int     10h
             iret
new_int5     endp
resprog      endp
ressize      equ $-resprog        ; Размер в байтах резидентной части
init    proc near
; Проверка раличия резидентной программы в памяти
        mov ax,0ff00h
        int  2fh
        cmp ax,0ffh
        jnz  first_start   ; Не установлена
        lea  dx,msg        ; Вывод сообщения о том,
        mov ah,9           ; что драйвер уже загружен
        int  21h
        ret
first_start: mov ax,2505h         ; Функция 25h, вектор 5
             lea     dx,new_int5
             int     21h          ; Запись нового вектора 5
             mov ax,352fh         ; Сохранение старого вектора прерывания 2Fh
             int     21h
             mov cs:old_int2fh_off,bx
             mov cs:old_int2fh_seg,es
             lea     dx,new_int2Fh ; Запись нового вектора прерывания 2Fh
             mov ax,252fh
             int     21h
; Завершение программы с оставлением резидентной части в памяти
             mov dx,(ressize+10fh)/16
             mov ax,3100h
             int     21h
init    endp
Code ENDS
        END resprog
      Написать резидентную программу, записывающую содержимое
экрана в символьном режиме в файл. Программа должна анализировать
флаг активности DOS и не должна допускать повторной загрузки в память.
По ключу /u программа должна выгружаться из памяти с освобождением
занимаемого ей места. Замечание: приведенная ниже программа нормально
работает лишь под DOS до версии 5.0, так как в более поздних версиях
иначе происходит работа с клавиатурой.
Code SEGMENT
Assume CS: Code, DS: Code
      org    100h
resprog proc far
      mov ax,cs
      mov ds,ax ; DS = CS
      jmp init    ; Переход на инициализирующую секцию