Menu
Coddy logo textTech

요약: MOV 챌린지

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

challenge icon

챌린지

이 과제에서는 다음에 대한 이해도를 테스트합니다:

  • 메모리에서 값 불러오기
  • 메모리에 값 저장하기
  • 레지스터 간 값 복사하기
  • 올바른 레지스터 크기 사용하기

데이터 주소는 이미 생성되어 있습니다. MOV 명령어만 작성하면 됩니다.

과제

다음 작업을 순서대로 완료하세요. 각 작업에 대해 어셈블리 코드 한 줄을 작성하세요.

이미 제공된 데이터:

  • num1: 값 8 포함 (1바이트)
  • num2: 값 3 포함 (1바이트)
  • result: 비어 있는 공간 (1바이트)

작업:

  1. num1의 값을 al로 불러오기
  2. num2의 값을 bl로 불러오기
  3. bl의 값을 cl로 복사하기
  4. al의 값을 result에 저장하기

코드 실행 후:

  • al에는 8이 들어 있어야 합니다
  • bl에는 3이 들어 있어야 합니다
  • cl에는 3이 들어 있어야 합니다
  • result의 메모리에는 8이 들어 있어야 합니다

직접 해보기

section .data
    msg_al db 'al = '
    msg_al_len equ $ - msg_al
    msg_bl db 'bl = '
    msg_bl_len equ $ - msg_bl
    msg_cl db 'cl = '
    msg_cl_len equ $ - msg_cl
    msg_result db 'result = '
    msg_result_len equ $ - msg_result
    newline db 0xa

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; 학생의 코드가 먼저 실행됩니다
    
    %include "solution.asm"
    
    mov r12, rax
    mov r13, rbx
    mov r14, rcx
    mov r15, 0
    mov r15b, [result]

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_al
    mov rdx, msg_al_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, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_bl
    mov rdx, msg_bl_len
    syscall

    mov rax, r13
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_cl
    mov rdx, msg_cl_len
    syscall

    mov rax, r14
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, msg_result
    mov rdx, msg_result_len
    syscall

    mov rax, r15
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

기초의 모든 레슨

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