# include <stdio.h>
int __pow__(int nParam)
{
__asm
{
mov eax, dword ptr ss : [ebp + 0x8];
mul eax; // eax *= eax
leave;
retn;
}
} // end of __pow__ function
__declspec(naked) void main(void)
{
int num;
int resultValue;
char* prompt_1;
char* prompt_2;
char* prompt_3;
__asm
{
// [stack prolog ...]
push ebp;
mov ebp, esp; // ebp = esp
sub esp, 38h; // esp -= 38h
}
prompt_2 = "%d"; // esp 이동
prompt_1 = "Integer Input : "; // esp 이동
prompt_3 = "pow(%d) result =>(%d) \n";
resultValue = 0;
__asm
{
// [stack body ...]
push prompt_1; // ("Integer Input : ");
call dword ptr[printf]; // printf("Integer Input : ");
pop ebx;
lea edi, num;
push edi; // ( ,&num)
push prompt_2; // ("%d", &num);
call dword ptr[scanf]; // scanf("%d", &num);
pop ebx;
pop ebx;
push num; //
call dword ptr[__pow__];
mov resultValue, eax;
pop ebx;
push resultValue; // ( , , resultValue);
push num; // ( , num , resultValue);
push prompt_3; // ( "pow(%d) result =>(%d) \n" , num , resultValue);
call dword ptr[printf];
pop ebx;
pop ebx;
pop ebx;
}
__asm
{
// [stack epilog ...]
mov esp, ebp;
pop ebp;
ret;
}
}
'어셈블리' 카테고리의 다른 글
인라이 어셈블리 (0) | 2017.10.15 |
---|---|
인라인 어셈블리 (0) | 2017.10.15 |
어셈블리 함수 공부 중 (0) | 2017.09.28 |
배열 어셈블리 (0) | 2017.09.28 |
인라인 어셈 함수 인자 전달 (0) | 2017.09.27 |