Ассемблер

Как запустить ассемблер в Visual Studio

Чтобы запустить ассемблер в Visual Studio, создайте C++ проект, включите MASM Build Customization, добавьте .asm-файл, напишите ассемблерную процедуру и вызовите ее из C++. В Visual Studio ассемблер обычно не запускают как отдельную кнопку «Run asm», а собирают вместе с проектом

Быстрый порядок действий

  1. Откройте Visual Studio Installer и проверьте C++ workload.
  2. Создайте C++ Console App.
  3. В проекте включите Build Customizations -> masm.
  4. Добавьте файл math.asm.
  5. Напишите процедуру.
  6. Объявите ее в main.cpp.
  7. Нажмите Build или Start Debugging.

Минимальный asm-файл

math.asm:

.code
AddTwo PROC
    mov eax, ecx
    add eax, edx
    ret
AddTwo ENDP
END

main.cpp:

#include <iostream>

extern "C" int AddTwo(int a, int b);

int main() {
    std::cout << AddTwo(2, 5) << std::endl;
}

Если все настроено правильно, программа выведет:

7

Как понять, что .asm собрался

Если Visual Studio ругается на unresolved external symbol AddTwo, значит C++ видит объявление, но linker не нашел реализацию. Частые причины:

  • .asm-файл не участвует в сборке;
  • MASM Build Customization не включен;
  • имя процедуры не совпадает;
  • забыли extern "C" в C++;
  • проект собирается не под ту платформу.

Как отладить

Поставьте breakpoint в C++ перед вызовом AddTwo, затем используйте Step Into. Также откройте окна регистров и дизассемблирования. Для x64 Windows первые аргументы будут в rcx и rdx, поэтому в примере используются ecx и edx для int

Если Step Into не заходит в asm-файл, проверьте настройки отладки и участие файла в сборке

Запуск через командную строку

Если вы хотите запускать MASM руками, используйте Developer Command Prompt, где доступны ml и ml64. Но для новичка проще начать с проекта Visual Studio, потому что IDE сама связывает объектные файлы

Что делать, если пример не запускается

Проверьте платформу проекта: x64 или x86. Для x64 используйте ml64 и x64-соглашение вызова. Для x86 примеры могут использовать другие регистры и другой способ передачи аргументов. Затем откройте свойства .asm-файла и убедитесь, что это не просто текстовый файл, а элемент, который обрабатывается MASM

Если Visual Studio собирает проект, но окно сразу исчезает, добавьте вывод в C++ или запустите проект из терминала. Это уже не ошибка ассемблера, а обычное поведение консольного приложения

Частые ошибки

Нажимают Run на .asm-файле

Запускается проект, а не отдельный исходник. .asm нужно собрать

Не совпадают имена

AddTwo PROC и extern "C" int AddTwo(...) должны совпадать по имени

Копируют 32-битный пример в x64

Проверьте платформу проекта: x86 или x64

Не включили masm customization

Без этого .asm может быть обычным текстовым файлом внутри проекта

Что почитать дальше по ассемблеру

Если нужен общий маршрут по теме, откройте рубрику ассемблеру. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x