– указатель на PE-заголовок (если в ЕХЕ-заголовке в начале таблицы перемещаемых элементов – по смещению 18h – стоит 40h или больше, то слово, расположенное по смещению 3С^ содержит смещение начала PE-заголовка);
– DOS-программа (STUB).
В состав нового заголовка входят:
– PE-заголовок (Таблица A-9);
– таблица объектов (Таблица A-10);
– таблицы ресурсов, импортируемых и экспортируемых имен, настройки адресов.
Таблица A-8. Формат обычного EXE-заголовка в PE-executable EXE-файле
Таблица A-9. Формат PE-заголовка
Таблица A-10. Формат таблицы объектов
Приложение Б Функции DOS (INT 21h)
DOS, функция 00h
Завершить программу
Вход:
AH=00h
CS – сегмент PSP завершающегося процесса
Описание. Передает управление на вектор завершения в PSP (выходит в родительский процесс). Идентична функции INT 20h (Terminate). Регистр CS должен указывать на PSP. Восстанавливает векторы прерываний DOS 22h-24h (Завершение, Ctrl-Break и Критическая ошибка), устанавливая значения, сохраненные в родительском PSP. Выполняет сброс файловых буферов. Файлы должны быть предварительно закрыты, если их длина изменилась.
Примечание.
Данная функция не рекомендуется к использованию. Для выхода из программы лучше использовать функцию DOS 4Ch.
DOS, функция 01h Считать со стандартного устройства ввода
Вход:
AH=01h
Выход: AL – символ, полученный из стандартного ввода
Описание. Считывает (ожидает) символ со стандартного входного устройства. Отображает этот символ на стандартное выходное устройство (эхо). При обнаружении Ctrl-Break выполняется INT 23h.
Примечание.
Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и другие) требует двух обращений к этой функции. Первый вызов возвращает AL=0. Второй вызов возвращает в AL расширенный код ASCII.
DOS, функция 02h Записать в стандартное устройство вывода
Вход:
AH=02h
DL – символ, выводимый в стандартный вывод
Описание.
Посылает символ из DL в стандартное устройство вывода. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции. При обнаружении Ctrl-Break выполняется INT 23h.
DOS, функция 03h Считать символа со стандартного вспомогательного устройства
Вход:
AH=03h
Выход: AL – символ, введенный со стандартного вспомогательного устройства
Описание. Считывает (ожидает) символ со стандартного вспомогательного устройства, COM1 или AUX и возвращает этот символ в AL.
Примечание.
Ввод не буферизуется и должен опрашиваться (не управляется прерываниями). При запуске DOS порт AUX (COM1) инициализируется так: 2400 бод, без проверки на четность, 1 стоп-бит, 8-битные слова. Команда DOS MODE используется для установки иных характеристик.
DOS, функция 04h Записать символ в стандартное вспомогательное устройство
Вход:
AH=04h
DL – символ, выводимый в стандартное вспомогательное устройство
Описание.
Посылает символ, находящийся в регистре DL, на стандартное вспомогательное устройство, COM1 или AUX.
DOS, функция 05h Вывести на принтер
Вход:
AH=05h
DL – символ, записываемый на стандартный принтер
Описание.
Посылает символ в DL на стандартное устройство печати, обычно LPT1.
DOS, функция 06h Консольный ввод-вывод
Вход:
AH=06h
DL=00h-FEh – символ, посылаемый на стандартный вывод
DL=FFh – запрос ввода со стандартного ввода
Выход:
ZF=0, если осуществлялся ввод символа и символ готов при запросе ввода
AL – считанный символ
ZF=1, если осуществлялся ввод символа и символа в консоли нет
Описание.
При DL=0FFh выполняет ввод с консоли «Без ожидания», возвращая включенный флаг нуля ZF, если на консоли нет готового символа. Если символ готов, сбрасывает флаг ZF и возвращает считанный символ в AL. Если DL не равен 0FFh, то DL направляется на стандартный вывод.
DOS, функция 07h Нефильтрующий консольный ввод без эха
Вход:
AH=07h
Выход: AL – символ, полученный через стандартный ввод
Описание. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. Не проверяет на Ctrl-Break, BackSpace и другие.
Примечание.
Для ввода расширенного символа ASCII должна быть вызвана дважды. Для проверки статуса используется функция DOS 0Bh (чтобы не ожидать нажатия клавиши).
DOS, функция 08h Консольный ввод без эха
Вход:
AH=08h
Выход: AL – символ, полученный через стандартный ввод
Читать дальше
Конец ознакомительного отрывка
Купить книгу