임시

어셈블리2017. 11. 8. 08:57

http://codeup.kr/JudgeOnline/problem.php?id=1052

# include <stdio.h>

# include <Windows.h>


int main(void) {

__int32 v1 = 0;

__int32 v2 = 0; 

__int32 flag = 0;

char* prompt = "%d %d";


__asm {

// scanf("%d %d", &v1, &v2)


LEA edi, dword ptr[v2]; // 

PUSH edi; // (&v2);


LEA edi, dword ptr[v1];

PUSH edi; // ( , &v1, &v2);


PUSH prompt; // ("%d %d", &v1, &v2);


CALL dword ptr[scanf]; // scanf("%d %d", &v1, &v2);


POP ebx;

pop ebx;

pop ebx; 


MOV eax, v1; // eax = v1

MOV ebx, v2; // ebx = v2

XOR eax, ebx;

CMP eax, 0x0; 

JZ jumpZero; // zf = 0 [1] 

JNZ jumpNotZero; // zf = [0]

jumpZero:

MOV eax, 0x1;

MOV flag, eax;

jmp _End; 

jumpNotZero:

MOV eax, 0x0;

MOV flag, eax; 

_End:

}

return 0;

}

http://codeup.kr/JudgeOnline/problem.php?id=1051



http://codeup.kr/JudgeOnline/problem.php?id=1359



http://codeup.kr/JudgeOnline/problem.php?id=1360




http://codeup.kr/JudgeOnline/problem.php?id=1064

# include <stdio.h>

# include <Windows.h>

int main(void) {

__int32 height = 0;

char* prompt = "%d";

char* LF = "\n";

//char* s = "%d";

__asm {

// scanf("%d", &height)

LEA edi, dword ptr[height];

PUSH edi;

PUSH prompt;

CALL dword ptr[scanf];

POP ebx;

POP ebx;

MOV ecx, height;


L1:

PUSH ecx;

MOV EAX, ECX;

L2:

PUSH eax;

PUSH ecx;

// 55555

// 4444

PUSH EAX;

PUSH prompt;

CALL dword ptr[printf];

POP EBX;

POP EBX;

POP ecx;

POP eax;

Loop L2;

PUSH LF;

CALL dword ptr[printf];

POP ebx;

POP ecx;

Loop L1;

}


return 0;

}


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

포인터 접근 방식  (0) 2017.11.14
stack 구조 엑셀  (0) 2017.11.14
별찍기 어셈블리  (0) 2017.10.30
별찍기 어셈블 코드  (0) 2017.10.30
소수 판별 코드 인라인 어셈블리  (0) 2017.10.26