백준 - 어셈블리(4)
-
백준 - A x B
백준의 A x B 문제입니다. 문제 해결 코드는 다음과 같습니다. extern scanf extern printf section .data input : db "%d %d", 0 output : db "%d", 10, 0 a : dd 0 b : dd 0 section .bss section .text global main main: push rbp mov rdi, input mov rsi, a mov rdx, b mov rax, 0 call scanf mov eax, [a] mov edx, [b] mul edx mov edi, output mov esi, eax mov eax, 0 call printf pop rbp mov rax, 0 ret mul(곱하기) 부호 없는 al, ax, eax의 값과 피연산..
2022.10.30 -
백준 - A - B
백준의 A - B 문제입니다. 문제 해결 코드는 다음과 같습니다. section .data a dd 0 b dd 0 input : db "%d %d", 10, 0 output : db "%d", 0 section .text global main extern scanf extern printf main: push rbp mov rdi, input mov rsi, a mov rdx, b mov rax, 0 call scanf mov rax, [a] mov rbx, [b] sub rax, rbx mov rdi, output mov rsi, rax mov rax, 0 call printf pop rbp mov rax, 0 ret
2022.10.30 -
백준 - A + B
백준의 A + B 문제입니다. 문제 해결 코드는 다음과 같습니다. section .bss a : resd 1; resd 1 -> 4 byte b : resd 1 section .data input : db "%d %d", 0 output : db "%d", 10, 0 section .text global main extern printf extern scanf main: push rbp mov rdi, input; scanf lea rsi, a lea rdx, b mov rax, 0 call scanf mov rax, [a] mov rbx, [b] add rax, rbx; a + b mov rdi, output; printf mov rsi, rax mov rax, 0 call printf pop rbp ..
2022.10.28 -
백준 - Hello World
백준의 Hello World 문제입니다. 문제 해결 코드는 다음과 같습니다. section .data msg : db "Hello World!", 0xa, 0 ; 0xa = \n section .text global main main: mov rax, 1; 1 = sys_write mov rdi, 1; 1 = stdout mov rsi, msg; rsi = msg_address mov rdx, 12; rdx = msg_length syscall mov rax, 0; return 0 ret
2022.10.28