Не исключено, что примеры программирования в книгах могут быть ошибочными.
Обратите внимание, что ошибка, которую вы получаете, связана с компоновщиком , а не с ассемблер .Тот факт, что вы зашли так далеко, уже показывает, что ассемблер доволен вашим файлом, и действительно, ваш файл сборки определяет main
только один раз.
Я не знаком со средствами разработки MS, особенноза последние полтора десятилетия, но я представляю, что либо вы добавили в свой проект модуль C или C ++, который определяет main()
как функцию на этом языке, либо IDE «услужливо» предоставляет определение по умолчанию.Именно это второе определение main
вызывает недовольство компоновщика.
(Символ подчеркивания в сообщении об ошибке компоновщика является просто артефактом того, как вы работаете на этой платформе - все символы HLL получают префиксПодчеркивая, у вас есть .model flat, <strong>c</strong>
- это может указывать MASM на префикс символов, несмотря на то, что ассемблер не является языком высокого уровня.)
Вы можете попробовать найти определение main()
вC-Land часть вашего проекта и просто удалить его или исключить из проекта, если вы можете найти его.В противном случае переименуйте вашу ассемблерную функцию, скажем, в asm_main
, а затем вызовите , что из C-land:
int main() {
return asm_main();
}
(Это просто для того, чтобы вы пошли; если выхотите овладеть argc
и др., вам нужно стать более креативным.)