MOV 즉시값
Coddy Assembly 여정의 기초 섹션에 포함된 레슨. 45개 중 15번째.
MOV의 가장 간단한 형태는 MOV immediate입니다. "Immediate"는 값이 명령어 자체에 직접 작성된다는 의미입니다.
구문:
mov register, value값이 레지스터로 복사됩니다.
예시:
| 명령어 | 수행하는 작업 |
|---|---|
mov rax, 5 | number 5를 rax로 복사합니다 |
mov rbx, 100 | number 100을 rbx로 복사합니다 |
mov rcx, 0 | number 0을 rcx로 복사합니다 |
이 코드는 눈에 보이는 작업을 하지 않지만(아직 출력은 없음), 레지스터에 숫자를 성공적으로 넣습니다.
참고: 나중에 출력하거나 디버깅하는 방법을 배우면 이러한 MOV 명령어의 효과를 확인할 수 있습니다. 지금은 숫자가 레지스터에 저장된다는 것만 알아 두세요.
중요한 규칙:
| 규칙 | 설명 |
|---|---|
| 값이 register에 맞아야 함 | rax는 매우 큰 수(최대 2⁶⁴-1)를 저장할 수 있습니다 |
| 값은 이동되는 것이 아니라 복사됨 | 원래 숫자는 여전히 존재합니다(그저 숫자일 뿐입니다) |
| 왼쪽에 있는 Registers | mov rax, 5는 올바릅니다. mov 5, rax는 잘못되었습니다 |
챌린지
각 작업에 대해 assembly 코드 한 줄을 작성하세요:
- number 5를
raxregister에 넣으세요. - number 7을
rbxregister에 넣으세요. - number 3을
rcxregister에 넣으세요.
직접 해보기
section .data
msg_rax db 'rax = '
msg_rax_len equ $ - msg_rax
msg_rbx db 'rbx = '
msg_rbx_len equ $ - msg_rbx
msg_rcx db 'rcx = '
msg_rcx_len equ $ - msg_rcx
section .bss
digit resb 1
section .text
global _start
_start:
%include "solution.asm"
; 값 저장
mov r12, rax
mov r13, rbx
mov r14, rcx
; "rax = " 출력
mov rax, 1
mov rdi, 1
mov rsi, msg_rax
mov rdx, msg_rax_len
syscall
; rax 값 출력
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; "rbx = " 출력
mov rax, 1
mov rdi, 1
mov rsi, msg_rbx
mov rdx, msg_rbx_len
syscall
; rbx 값 출력
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; "rcx = " 출력
mov rax, 1
mov rdi, 1
mov rsi, msg_rcx
mov rdx, msg_rcx_len
syscall
; rcx 값 출력
mov rax, r14
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; 종료
mov rax, 60
mov rdi, 0
syscall이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Assembly 플레이그라운드