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



       

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


Директива END

Как уже показано, директива ENDS завершает сегмент, а директива ENDP завершает процедуру. Директива END в свою очередь полностью завершает всю программу:

Директива Операнд END [имя_процедуры]

Операнд может быть опущен, если программа не предназначе на для выполнения, например, если ассемблируются только опре деления данных, или эта программа должна быть скомпанована с другим (главным) модулем. Для обычной программы с одним модулем oперанд содержит имя, указанное в директиве PROC, которое было oбозначено как FAR.

ПАМЯТЬ И РЕГИСТРЫ ------------------------------------------------------------

Рассмотрим особенности использования в командах имен, имен в квадратных скобках и чисел. В следующих примерах положим, что WORDA определяет слово в памяти:

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

MOV AX,BX ;Переслать содержимое BX в регистр AX MOV AX,WORDA ;Переслать содержимое WORDA в регистр AX MOV AX,[BX] ;Переслать содержимое памяти по адресу ; в регистре BX в регистр AX MOV AX,25 ;Переслать значение 25 в регистр AX MOV AX,[25] ;Переслать содержимое по смещению 25

Новым здесь является использование квадратных скобок, что потребуется в следующих главах.

ИНИЦИАЛИЗАЦИЯ ПРОГРАММЫ ------------------------------------------------------------

Существует два основных типа загрузочных программ: EXE и COM. Рассмотрим требования к EXE-программам, а COM-программы будут представлены в главе 6. DOS имеет четыре требования для инициализации ассемблерной EXE-программы: 1) указать ассемблеру, какие cегментные регистры должны соответствовать сегментам, 2) сохранить в стеке адрес, находящийся в регист ре DS, когда программа начнет выполнение, 3) записать в стек нелевой адрес и 4) загрузить в регистр DS адрес сегмента данных. Выход из программы и возврат в DOS сводится к использова нию команды RET. Рис.3.1 иллюстрирует требования к инициали зации и выходу из программы:

1. ASSUME - это ассемблерная директива, которая устанавли вает для ассемблера соответствие между конкретными сегментами и сегментными регистрами; в данном случае, CODESG - CS, DATASG - DS и STACKSG - SS. DATASG и STACKSG не определены в этом примере, но они будут представлены следующим образом:




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