Не могу собрать свой первый проект с ассемблером - Assembler
Формулировка задачи:
В общем почитал хабр о том как запускать ассемблер в VS 2013, но постоянно вылазит ошибка - гугление не помогло
Помогите собрать, а то как же изучать то дальше (((
source.cpp ( просто для теста)
source.asm ( пример взят из сети, просто что бы запустить)
Ошибка постоянно 1, хоть асм файл будет пустьой...
#include <iostream> using namespace std; int main() { int a, b = 0; cin >> a; cout << b; system("pause"); return 0; }
.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>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
Объяснение кода листинга программы
- Addition proc - это метка процедуры в ассемблере, которая описывает начало блока кода
- mov eax,[esp + 4] - это команда, которая перемещает значение переменной
a
в регистрeax
. Здесь[esp + 4]
- это адрес переменнойa
в стеке вызовов. - mov ebx,[esp + 8] - это команда, которая перемещает значение переменной
b
в регистрebx
. Здесь[esp + 8]
- это адрес переменнойb
в стеке вызовов. - add eax,[esp + 8] - это команда, которая выполняет сложение значений в регистре
eax
и переменнойb
. Здесь[esp + 8]
- это адрес переменнойb
в стеке вызовов. - retn - это команда, которая завершает выполнение процедуры и возвращает управление туда, откуда была вызвана процедура.
- Addition endp - это метка конца процедуры в ассемблере, которая описывает конец блока кода
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д