我试图用C ++编写基本计算器&部件。当我尝试添加两个整数时,应用程序在没有断点时命中断点。
这是我的代码。
#include <iostream>
#include <conio.h>
using namespace std;
extern "C" {int Add(int a, int b);}
extern "C" {int Subtract(int a, int b); }
extern "C" {int Multiply(int a, int b); }
extern "C" {int Divide(int a, int b); }
int main()
{
cout << "Choose one: "<< endl;
cout << "1. Add" << endl;
cout << "2. Subtract" << endl;
cout << "3. Multiply" << endl;
cout << "4. Divide" << endl;
char answer = _getch();
switch (answer)
{
case '1':
int x, y;
cout << "x: ";
cin >> x;
cout << "y:";
cin >> y;
cout << x << "+" << y << "=" << Add(x, y) << endl; //Breakpoint hits in this line
break;
case '2':
break;
case '3':
break;
case '4':
break;
}
_getch();
return 0;
}
这是装配部分
.code
Add PROC
add ecx, edx
mov eax, ecx
Add ENDP
Subtract PROC
neg edx
add ecx, edx
mov eax, ecx
Subtract ENDPROC
Multiply ENDP
imul ecx, edx
mov eax, ecx
ret
Multiply ENDP
Divide PROC
mov r8d, edx
mov eax, ecx
cdq
idiv r8d
ret
Divide ENDPROC
End
我的错误是什么?并且,与主题无关但是,我的装配部分是否正确?我正在试图添加其他功能,但这对我来说非常复杂。花时间学习。
答案 0 :(得分:0)
嗯,这有点奇怪,但答案是:
感谢Ped7g,我意识到我在汇编代码中错误地输入了ENDP作为ENDPROC。另外,我忘了键入&#34; ret&#34;在一些必要的地方,这解决了我的问题。
但遗憾的是,如果你遇到这个麻烦,这不是一个明确的答案。很抱歉这篇文章是noob。这不具有建设性。