Не могу собрать свой первый проект с ассемблером - Assembler

Узнай цену своей работы

Формулировка задачи:

В общем почитал хабр о том как запускать ассемблер в VS 2013, но постоянно вылазит ошибка - гугление не помогло Помогите собрать, а то как же изучать то дальше ((( source.cpp ( просто для теста)
#include <iostream>
using namespace std;

int main()
{
 
    int a, b = 0;
 
    cin >> a;
 
    cout << b;
 
    system("pause");
    return 0;

}
source.asm ( пример взят из сети, просто что бы запустить)
.686P
.MODEL FLAT, STDCALL
.STACK 4096
.DATA
MB_OK    EQU 0
STR1     DB "Моя первая программа",0
STR2     DB "Привет всем!",0
HW       DD ?
EXTERN MessageBoxA@16:NEAR
.CODE
START:
PUSH     MB_OK
PUSH     OFFSET STR1
PUSH     OFFSET STR2
PUSH     HW
CALL     MessageBoxA@16
RET
END START
Ошибка постоянно 1, хоть асм файл будет пустьой...
1>MASM : fatal error A1000: cannot open file : source.asm
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\masm.targets(50,5): error MSB3721: выход из команды "ml.exe /c /nologo /Zi /Fo"Debug\source.obj" /Fl"Test1.lst" /W3 /errorReport : prompt  /Tasource.asm" с кодом "1".
========== Перестроение всех: успешно: 0, с ошибками: 1, пропущено: 0 ==========

Решение задачи: «Не могу собрать свой первый проект с ассемблером»

textual
Листинг программы
Addition proc
    mov eax,[esp + 4] ; eax = a
;     mov ebx,[esp + 8] ; ebx = b
    add eax,[esp + 8] ; eax = a + b
    retn
Addition endp

Объяснение кода листинга программы

  1. Addition proc - это метка процедуры в ассемблере, которая описывает начало блока кода
  2. mov eax,[esp + 4] - это команда, которая перемещает значение переменной a в регистр eax. Здесь [esp + 4] - это адрес переменной a в стеке вызовов.
  3. mov ebx,[esp + 8] - это команда, которая перемещает значение переменной b в регистр ebx. Здесь [esp + 8] - это адрес переменной b в стеке вызовов.
  4. add eax,[esp + 8] - это команда, которая выполняет сложение значений в регистре eax и переменной b. Здесь [esp + 8] - это адрес переменной b в стеке вызовов.
  5. retn - это команда, которая завершает выполнение процедуры и возвращает управление туда, откуда была вызвана процедура.
  6. Addition endp - это метка конца процедуры в ассемблере, которая описывает конец блока кода

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы