http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=286482105
# include <stdio.h>
__declspec(naked) void main(void)
{
int sData;
int sumValue;
char* result;
char* s;
__asm
{ // stack prolog +++++++++++++++++++++++++++++++++++++
push ebp;
mov ebp, esp;
sub esp, 40h;
}
sData = 0; // esp += 4
result = "sum result : %d\n";
s = "%d";
sumValue = 0;
__asm
{ // stack body +++++++++++++++++++++++++++++++++++++++
lea edi, sData; //
push edi; // ( ,&sData);
push s; // ("%d", &sData);
call dword ptr[scanf]; // scanf("%d", &sData);
pop ebx;
pop ebx;
mov eax, sData;
mov ecx, eax;
L:// Label ++++++++++++++++++++++++++++++++++++++++++++
mov eax, ecx;
xor edx, edx; /* real import */
mov ebx, 2;
div ebx;
cmp edx, 0;
JZ jmpZero;
JNZ jmpNotZero;
jmpZero:
mov eax, ecx;
add sumValue, eax;
jmp EndPoint;
jmpNotZero:
jmp EndPoint;
EndPoint:
loop L;
push sumValue; // ( ,sumValue);
push result; // ("sum result : ",sumValue);
call dword ptr[printf]; // printf("sum result : ",sumValue);
}
__asm
{ // stack epilog +++++++++++++++++++++++++++++++++++++
mov esp, ebp;
pop ebp;
retn;
}
}
'어셈블리' 카테고리의 다른 글
이중 포인터 어셈블리 접근 방식 (0) | 2017.10.22 |
---|---|
인라이 어셈블리 (0) | 2017.10.15 |
제곱 어셈블리 (0) | 2017.10.13 |
어셈블리 함수 공부 중 (0) | 2017.09.28 |
배열 어셈블리 (0) | 2017.09.28 |