У меня есть 2 программы: один из них выполняет вход-вывод (C++), а другой вычисляет формулу (сборку). Они работают друг с другом.Ввод-вывод сборки
Эта программа делает вход-выход:
#include <iostream>
using namespace std;
extern "C" int calc(int a, int b, int c, int d);
int main()
{
int a;
cout<<"a:"<<endl;
cin>>a;
cout<<"b:"<<endl;
int b;
cin>>b;
cout<<"c:"<<endl;
int c;
cin>>c;
cout<<"d:"<<endl;
int d;
cin>>d;
int calculation = calc(a,b,c,d);
cout << "5*a-c*d+7*b-2=" <<calculation<< endl;
return 0;
}
И эта программа вычисляет результат:
format ELF
public calc
calc:
push ebp
mov ebp, esp
label a dword at ebp+8
label b dword at ebp+12
label c dword at ebp+16
label d dword at ebp+20
mov eax, [a]
mov ebx, 5
mul ebx
mov ecx, eax
mov eax, [c]
mov ebx, [d]
mul ebx
sub ecx, eax
mov eax, [b]
mov ebx, 7
mul ebx
add eax, ecx
sub eax, 2
mov esp, ebp
pop ebp
ret
Можете ли вы помочь мне делать ввод-вывод также в Ассамблее (без C++ программы)? Я не уверен, как это сделать в этом примере. Оцените любую помощь.
Какой ассемблер (FASM?) Вы хотите использовать? Как вы собрали, скомпилировали и связали две программы? – rkhb
@rkhb Я использую fasm, чтобы скомпилировать обе программы, я использую 'g ++ -m32 calc.cpp calcul.o -o a.out' – uliana291