인라인 어셈블리 3개 값 받고 대소 비교
#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 |