Иллюстрированный самоучитель по Assembler


Организация приложений MS-DOS - часть 29


mov AH,0Eh            ; Функция вывода на экран символа

mov AL,BH              ; Выведем старшую половину

                                  ; сегментного адреса

int 10h                      ; Вызов BIOS

pop BX                    ; Восстановим

pop AX                    ; регистры

iret                            ; Завершение обработчика

main endp

init proc                    ; Секция инициализации

mov AX,2505h        ; Функция установки вектора

mov DX,offset new_05  ;Смещение обработчика

int 21h                                 ; Вызов DOS

mov DX,(init-main+10Fh)/16  ; Размер в параграфах

mov AX3100h              ;Функция " завершить и

int 21h                            ; оставить в памяти"

init endp

code ends

end main

Структура программы соответствует описанной ранее. В секции инициализации выполняется установка обработчика прерывания 05h, при этом исходное содержимое вектора 5 не сохраняется. Это, разумеется, очень плохо, так как лишает нас возможности этот вектор восстановить. С другой стороны, восстанавливать перехваченные векторы надлежит при завершении программы, а применительно к резидентной программе - при ее выгрузке из памяти. Однако в нашей простой программе не предусмотрено средств выгрузки (процедура выгрузки довольно сложна), и программе придется находиться в памяти до перезагрузки машины.




Начало  Назад  Вперед



Книжный магазин