| Справочник программиста на персональном компьютере фирмы IBM | 68 |
Указатель стека инициализируется на вершину адресного пространст-
ва 64K, используемого программой (напоминаем, что стек растет
вниз в памяти). В программах COM он должен быть сделан меньше чем
64K, SS и SP могут быть изменены. Имейте ввиду, что при компонов-
ке программы компоновщик выдаст сообщение об ошибке, указывающее,
что сегмент стека отсутствует. Игнорируйте его.
7. Завершите программу либо инструкцией RET, либо прерыванием
20H. Прерывание 20H - это стандартная функция для завершения
программы и возврата управления в DOS. Даже когда программа за-
вершается инструкцией RET, на самом деле используется прерывание
20H. Это происходит потому, что вершина стека первоначально со-
держит 0. При выполнении завершающей инструкции программы RET, 0
выталкивается из стека, переназначая счетчик команд на начало
PSP. Находящаяся в этой ячейке функция 20H, выполняется как сле-
дующая инструкция программы, вызывая передачу управления в DOS.
Все это означает, что Вам не надо при старте программы помещать
на стек DS и 0 (PUSH DS / MOV AX,0 / PUSH AX), как это требуется
для EXE файлов.
После того как программа сконструирована таким образом, ас-
семблируйте и компонуйте ее как обычно. Затем преобразуйте ее в
форму COM c помощью утилиты EXE2BIN, имеющейся в MS DOS. Если имя
программы, построенной компоновщиком MYPROG.EXE, то просто введи-
те команду EXE2BIN MYPROG. В результате Вы получите программный
файл с именем MYPROG.BIN. Все что Вам останется после этого сде-
лать - переименовать этот файл в MYPROG.COM. Вы можете также
сразу использовать команду EXE2BIN MYPROG MYPROG.COM, для получе-
ния файла с расширением COM.
Предыдущая страница 68 Следующая страница
1693679890
|