Ассемблер и программирование для IBM PC



       

ГЛАВА 3. Требования языка ассемблер - часть 5


имя SEGMENT PARA STACK

Когда отдельно ассемблированные программы должны объеди няться компановщиком, то можно использовать типы: PUBLIC, COMMON и MEMORY. В случае, если программа не должна об'единяться с другими программами, то данная опция может быть опущена. 3. Класс. Данный элемент, заключенный в апострофы, исполь зуется для группирования относительных сегментов при компановке:

имя SEGMENT PARA STACK 'Stack'

Фрагмент программы на рис. 3.1. в следующем разделе иллюстрирует директиву SEGMENT и ее различные опции.

Директива PROC

Сегмент кода содержит выполняемые команды программы. Кроме того этот сегмент также включает в себя одну или несколько процедур, определенных директивой PROC. Сегмент, содержащий только одну процедуру имеет следующий вид:

имя-сегмента SEGMENT PARA имя-процедуры PROC FAR Сегмент . кода . с . одной RET процедурой

Ассемблер для IBM PC. Глава 3 65

имя-процедуры ENDP имя-сегмента ENDS

Имя процедуры должно обязательно присутствовать, быть уникальным и удовлетворять соглашениям по именам в ассембле ре. Операнд FAR указывает загрузчику DOS, что начало данной процедуры является точкой входа для выполнения программы. Директива ENDP определяет конец процедуры и имеет имя, аналогичное имени в директиве PROC. Команда RET завершает выполнение программы и в данном случае возвращает управление в DOS. Сегмент может содержать несколько процедур (см. гл.7).

Директива ASSUME

Процессор использует регистр SS для адресации стека, ркгистр DS для адресации сегмента данных и регистр CS для адресации cегмента кода. Ассемблеру необходимо сообщить назначение каждого сегмента. Для этой цели служит директива ASSUME, кодируемая в сегменте кода следующим образом:

Директива Операнд ASSUME SS:имя_стека,DS:имя_с_данных,CS:имя_с_кода

Например, SS:имя_стека указывает, что ассемблер должен ассоциировать имя сегмента стека с регистром SS. Операнды могут записываться в любой последовательности. Регистр ES также может присутствовать в числе операндов. Если программа не использует регистр ES, то его можно опустить или указать ES:NOTHING.




Содержание  Назад  Вперед