END START
не является «концом» метки start
. Сами ярлыки не имеют ни концов, ни длин, ни границ. (Для этого используйте proc foo
/ endproc
, если только это не MASM, а не TASM).
END START
- это конец всего файла asm (после этого синтаксический анализ прекращается). END label
также устанавливает точку входа = указанную метку . Это странное имя для директивы с этой целью, но TASM очень старый.
(Ассемблер может поместить метаданные в файл .obj
, чтобы сообщить компоновщику имя символа точки входа, если ассемблер не ' .exe
.
Думайте о метках как о тегах нулевой ширины, на которые вы можете ссылаться откуда угодно, не более.
Если у вас есть блок кода для функцию, которую вы хотите вызвать, вы прикрепляете метку прямо перед ней, чтобы вы могли call
до этой точки. Машинный код для этой функции имеет некоторый размер, но метка - нет; это просто маркировка начала блока. (Таким образом, метка всегда имеет ровно 1 адрес.)