Директива END на ассемблере

Я новичок в языке ассемблера и написал этот код:

main PROC

    mov eax,10000h          ; Eax=10000h
    add eax,40000h          ; Eax=50000h
    sub eax,20000h          ; Eax=30000h
    call DumpRegs

    exit
    main ENDP
END main

Я хотел знать, почему вам действительно нужно дважды указывать «main ENDP» и «end main»? Я использую только одну процедуру, но, кажется, заканчиваю эту процедуру дважды.

Есть ли лучший способ написать это, если вы используете только одну процедуру?


person user3307068    schedule 18.03.2014    source источник
comment
Как и в Windows, вы нажимаете «Пуск», чтобы остановить компьютер. Директива END сообщает компоновщику, где начинается программа :)   -  person Hans Passant    schedule 18.03.2014


Ответы (2)


END main отмечает конец файла, указывая точку входа для вашей программы (это необязательно). main ENDP обозначает конец вашей процедуры.

Я не знаю, как их объединить.

person Jester    schedule 18.03.2014

Ассемблер нуждается

КОНЕЦ ____

директива для команды END OF FILE. Это КОНЕЦ ФАЙЛА. Здесь, когда вы используете «основной», вы должны закончить его с помощью

КОНЕЦ ГЛАВНОЙ

Просто знайте, что ассемблеру нужна директива END для завершения файла. END может быть записан без Main. просто завершите файл с помощью END.

Теперь ENDP означает КОНЕЦ ПРОЦЕДУРЫ. здесь идентификатор процедуры «основной». Итак, прежде чем закрыть файл, завершите «основную» процедуру. Вы должны закончить процедуру!

Чтобы ответить на последнюю часть ответа, вам кажется, что вы делаете одно и то же дважды, Потому что вы заканчиваете файл и процедуру с помощью «main». MAIN — имя процедуры и

Main ENDP
  End
is totally fine.

person Bhartendu Kumar    schedule 21.12.2018