Когда вы покидаете «ret», компьютер выполняет последний «move eax, ebx», а затем выполняет все, что будет дальше в памяти компьютера.
Я удивлен, что вы не получить незаконную инструкцию / доступ; это будет самый общий ответ. Как-то инструкция мусора действует как возврат, после разгрома регистров.
Его также немного непонятно, что вы подразумеваете под «возвращает 60». Вы имеете в виду значение командной строки? Понятно, что ваша программа не защищает от незаконных ловушек. Что делает Windows, когда вы получаете такую ловушку без защиты, мне непонятно; Я знаю по опыту, когда я делаю, что Windows имеет тенденцию просто прекратить мой процесс, и я получаю некоторый случайный статус выхода. «0» может быть таким статусом.
Попробуйте добавить:
mov byte ptr[eax], 0
перед командой «ret»; это приведет к нелегальной памяти. Вы сообщаете, какой статус вы получаете. Это не удивило бы меня, если бы вы получили нулевой результат в этом случае.