|
Ассемблер в примерах - Оператор END
- Вопрос:
- В каких случаях нужен оператор END, закрывающий последний сегмент и обозначающий конец исходного текста программы. Он то стоит в самом конце программ, то его нет. В разных программах по-разному.
- Ответ:
-
Давайте разберемся с END
Этот оператор нужен для указания ассемблеру конца модуля,
поэтому он обязателен.
Кроме этого, у одного (или единственного) модуля должна быть
указана точка входа, что и делается (как правильно замечено)
при помощи метки точки входа возле оператора END
Но это все тот же оператор END!
Теперь о упрощённых директивах типа .data, .code
Как раз эти директивы не влияют на оператор END
Но есть директива, которая влияет на END, это - .strartup,
которая, в зависимости от модели памяти, настраивает сегментные регистры (для моделей, отличных от tiny),
для модели tiny устанавливает при помощи org 100h начальное смещение программы
(необходимое для COM-программы) и, что для нас очень важно, строит начальную метку @Startup.
И тогда в конце можно писать просто END. Ассемблер автоматически заменит его на END @Startup
Рекомендую посмотреть листинг программы, созданный при помощи tasm /la prog.asm.
| |