. . .
. . . ;Код программы
. . .
RET N ;Выход из программы
ENDP start ;Конец процедуры
CODE ENDS ;Конец описания сегмента кода
END START ;Конец программы, точка входа программы
Нужно отметить следующее: даже если сама программа не использует стек, описать сегмент стека в программе все равно надо, т.к. ОС использует стек при обработке прерываний и при вызове процедур и возврате из них.
Директива END является признаком конца текста программы, и в ней указывается точка входа программы – метка, с которой должно начаться выполнение программы (не обязательно первая команда программы).
Существует два варианта инициализации exe-программы:
- тело описывается как дальняя (FAR) процедура, причем имя этой процедуры указывается в директиве END. Выход из программы осуществляется с помощью команды RETN или RET (этот вариант использован в примере раздела 4.1).
- тело программы начинается с метки в сегменте кода, причем имя этой метки указывается в директиве END. Выход из программы осуществляется с помощью функции 4Ch прерывания 21h (этот вариант использован в примере разделов 4.7) или с применением директивы EXITCODE (этот вариант использован в примере разделов 4.8).
ВНИМАНИЕ! При запуске exe-программы регистр DS указывает на ее заголовок, считанной в память. Поэтому если тело программы описывается как процедура, то первой командой программы должна быть PUSH DS, которая сохраняет в стеке начальное значение DS.
4.2. Программы на языке транслятора TASM.