Menu
Coddy logo textTech

MOV 레지스터에서 레지스터로

Coddy Assembly 여정의 기초 섹션에 포함된 레슨 — 45개 중 16번째.

이제 레지스터에 숫자를 직접 넣는 방법(MOV immediate)을 알게 되었으므로, 레지스터 간에 값을 복사할 수도 있습니다.

구문:

mov destination_register, source_register

source 레지스터의 값이 destination 레지스터로 복사됩니다. source 레지스터는 변경되지 않은 상태로 유지됩니다.

예제:

mov rax, 5      ; rax = 5
mov rbx, rax    ; rbx = 5 (rax에서 복사됨)

이 두 명령어가 실행된 후, raxrbx는 모두 5를 포함합니다.

중요: 소스 레지스터(rax)는 여전히 그 값을 가지고 있습니다. MOV는 복사합니다 — 잘라내거나 이동하는 것이 아닙니다.

또 다른 예시:

mov rax, 7      ; rax = 7
mov rcx, 3      ; rcx = 3
mov rdx, rcx    ; rdx = 3 (rcx에서 복사됨)
mov rbx, rax    ; rbx = 7 (rax에서 복사됨)

이 명령어들 이후에:

레지스터
rax7
rcx3
rdx3
rbx7

이것이 중요한 이유:

  • 원본을 변경하기 전에 다른 레지스터로 복사하여 값을 저장할 수 있습니다
  • 메모리에서 다시 로드하지 않고 값을 재사용할 수 있습니다
  • 이것은 대부분의 어셈블리 연산의 기초입니다
challenge icon

챌린지

다음 작업들을 위한 어셈블리 코드를 작성하세요:

  1. 숫자 4를 rax에 넣으세요
  2. rax의 값을 rbx로 복사하세요
  3. rbx의 값을 rcx로 복사하세요

코드를 실행한 후, 세 레지스터 모두 4를 포함해야 합니다.

직접 해보기

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
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨