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 |