Menu
Coddy logo textTech

MOV 레지스터에서 메모리로

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

이제 메모리에서 레지스터로 data를 Load하는 방법을 알았으므로, 그 반대인 레지스터의 data를 메모리에 Store하는 방법을 배우게 됩니다.

구문:

mov [address], register

brackets [ ]은 다음을 의미합니다. "register의 값을 이 memory address에 저장합니다."

이렇게 생각해 보세요:

메모리 주소 destination에 빈 상자가 하나 있다고 상상해 보세요. 레지스터에 값이 들어 있습니다(예를 들어, al에는 숫자 7이 들어 있습니다).

다음과 같이 작성하면:

mov [destination], al

CPU에 다음과 같이 지시하는 것입니다. "al 레지스터(7)의 값을 가져와 destination이라는 상자에 넣으세요."

이 명령이 실행된 후 메모리 주소 destination에는 이제 값 7이 들어 있습니다. al의 값은 그곳에 그대로 남아 있습니다. 제거되지 않습니다.

예:

mov al, 7            ; al 레지스터에 7을 넣습니다
mov [destination], al ; al의 값을 메모리 주소 "destination"에 저장합니다

참고: 이 연습에서는 메모리의 data가 1바이트(8비트)입니다. 그래서 al을 사용합니다. 이는 크기가 일치하는 8비트 register입니다. 나중에 register 크기에 대해 더 자세히 배우게 됩니다.

중요한 규칙:

규칙설명
brackets는 필수입니다mov destination, al은 잘못되었습니다
destination은 memory address여야 합니다[destination]과 같은 레이블을 사용하세요
크기가 일치해야 합니다이 연습에서는 al(8비트)을 사용하세요

흔한 실수:

; 잘못됨: 괄호 누락
mov destination, al

; 올바름: 값을 메모리에 저장함
mov [destination], al

아래 챌린지에서는 메모리 주소 destination이 이미 생성되어 있습니다. 자신만의 data를 만드는 방법은 3장에서 배우게 됩니다. 지금은 MOV 명령어에만 집중하세요.

challenge icon

챌린지

다음 작업을 수행하는 어셈블리 코드 두 줄을 작성하세요:

  1. 숫자 9를 al 레지스터에 넣기
  2. al의 값을 메모리 주소 destination에 저장하기

(메모리 주소 destination은 이미 생성되어 있습니다.)

직접 해보기

section .data
    msg db 'destination = '
    msg_len equ $ - msg

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; solution.asm이 여기에 포함됩니다
    ; destination과 학생의 MOV 명령어를 정의합니다
    
    %include "solution.asm"
    
    ; 출력을 위해 메모리에 저장된 값을 al에 로드합니다
    mov al, [destination]
    
    ; 저장합니다
    mov r12, rax
    
    ; "destination = "을 출력합니다
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; 값을 출력합니다
    mov rax, r12
    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실력 점검

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

기초의 모든 레슨

직접 연습해 보세요: Assembly 플레이그라운드