Assembler - язык неограниченных возможностей


Загрузка и выполнение программ - часть 2


+3Ch: байт — флаг, указывающий, что консоль находится в состоянии ввода 2-байтного символа.

+3Dh: байт — флаг, устанавливаемый функцией В711h прерывания 2Fh (при следующем вызове INT 21h для работы с файлом имя файла будет замечено на полное).

+3Eh: слово — не используется в DOS.

+40h: слово — версия DOS, которую вернет функция DOS 30h (DOS 5.0+).

+42h: 12 байт — не используется в DOS.

+50h: 2 байта — CDh 21h — команда INT 21h.

+54h: 7 байт — область для расширения первого FCB.

+5Ch: 16 байт — первый FCB, заполняемый из первого аргумента командной строки.

+6Ch: 16 байт — второй FCB, заполняемый из второго аргумента командной строки.

+7Ch: 4 байта — не используется в DOS.

+80h: 128 байт — командная строка и область DTA по умолчанию.

и записывает программу в память, начиная с адреса PSP:0100h. Если загружается ЕХЕ-программа, использующая дальние процедуры или сегменты данных, DOS модифицирует эти команды так, чтобы используемые в них сегментные адреса соответствовали сегментным адресам, которые получили эти процедуры и сегменты данных при загрузке программы в память. При запуске СОМ-программы регистры устанавливаются следующим образом:

    AL = FFh, если первый параметр командной строки содержит неправильное имя диска (например, z:/something), иначе — 00h.

    АН = FFh, если второй параметр содержит неправильное имя диска, иначе 00h.

    CS = DS = ES = SS = сегментный адрес PSP.

    SP = адрес последнего слова в сегменте (обычно FFFEh; меньше, если не хватает памяти).

При запуске ЕХЕ-программы регистры SS:SP устанавливаются в соответствии с сегментом стека, определенным в программе, затем в любом случае в стек помещается слово 0000h и выполняется переход на начало программы (PSP:0100h для СОМ, собственная точка входа для ЕХЕ).

Все эти действия выполняет одна функция DOS — загрузить и выполнить программу.




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