#include <stdio.h>


int main(void)

{

int v1 = 0;

int v2 = 0;

int v3 = 0;

int largeValue = 0;

char* strValue = "value input :  ";

char* WriteValue = "%d";

__asm

{

// [ v1 ]

push strValue; // ("value input :  ");

call dword ptr[printf]; // printf ("value input :  ");

pop ebx;

lea edi, v1; // edi = &v1

push edi; // ( ,%v1);

push WriteValue; // ("%d", %v1);

call dword ptr[scanf]; // scanf("%d", %v1);

pop ebx;

pop ebx;

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// [ v2 ]

push strValue; // ("value input :  ");

call dword ptr[printf]; // printf ("value input :  ");

pop ebx;


lea edi, v2; // edi = &v2

push edi; // ( ,%v1);

push WriteValue; // ("%d", %v2);

call dword ptr[scanf]; // scanf("%d", %v2);

pop ebx;

pop ebx;

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// [ v3 ]

push strValue; // ("value input :  ");

call dword ptr[printf]; // printf ("value input :  ");

pop ebx;


lea edi, v3; // edi = &v3

push edi; // ( ,%v1);

push WriteValue; // ("%d", %v3);

call dword ptr[scanf]; // scanf("%d", %v3);

pop ebx;

pop ebx;

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mov eax, v1; // eax = v1

cmp eax, v2; 

jl JumpEaxLess;

jge End;

JumpEaxLess:

mov eax, v2;

jmp End;

End:

cmp eax, v3;

jl JumpEaxLess1;

jge End1;

JumpEaxLess1:

mov eax, v3;

jmp End1;

End1:

mov largeValue, eax;

}

printf("large => %d\n", largeValue);

return 0;

}

'어셈블리' 카테고리의 다른 글

소수 판별 코드 인라인 어셈블리  (0) 2017.10.26
최대값 임시 수정해야될 코드  (0) 2017.10.24
이중 포인터 어셈블리 접근 방식  (0) 2017.10.22
인라이 어셈블리  (0) 2017.10.15
인라인 어셈블리  (0) 2017.10.15