Я не использовал nasm в Windows, но, судя по выводу nasm -hf
, я думаю, вам нужен формат win32
, а не coff
. Формат COFF является более старым форматом объектных файлов, формат которого PE-COFF (или просто «PE»), который теперь используется в Windows, является более новой версией.
Что касается того, почему вам нужно указать РАЗДЕЛ до того, как ваши директивы GLOBAL вступят в силу, я не вижу такого поведения. Возможно ли, что вы не объявляли свой GLOBAL до лейбла? Или, возможно, символ испускается, но не смог обеспечить правильную связь, например, если он был задуман как переменная данных, но в разделе .text было выделено место.