1
저는 C++과 nasm 어셈블리 atm의 간단한 조합을 쓰고 있는데 왜 결과가 "cout"의 내부와 외부와 다른지 이해하지 못합니다. 어쩌면 이것은 예외 일 수도 있지만 차이점을 알고 싶습니다. 도움이 필요합니다.C++에서 어셈블리로 인수를 전달합니다.
C++ PART
#include <iostream>
#include <cstring>
using namespace std;
extern "C" unsigned int quot (unsigned int, unsigned int);
extern "C" unsigned int remainder (unsigned int, unsigned int);
int main()
{
unsigned int i=0, j=0, k=0;
cout << "Numbers 'x y'" << endl;
cin >> i >> j;
k = quot(i,j);
cout<< "Result: " <<k;
k = remainder(i,j);
cout <<" r. "<< k <<endl;
cout << "Result: "<<quot(i,j)<<" r. "<<remainder(i,j)<<endl;
return 0;
}
NASM quot 알림 기능과 거의 동일하다. 2 R : 유일한 차이점은
section .data
section .text
global quot
quot:
; intro
push ebp
mov ebp,esp
xor edx, edx
mov eax, [ebp+8]
mov ebx,[ebp+12]
div ebx
; DIFFERENCE: in remainder we have additionaly
; mov eax, edx
mov esp,ebp
pop ebp
ret
우리가 결과 기대 (12) (5) 입력의 결과 코드에 주석. 2 그러나 우리는 얻는다.
Result: 2 r. 2
Result: 2 r. 5