Menu
Coddy logo textTech

Recapitulação: Desafio MOV

Parte da seção Fundamentos do Journey de Assembly da Coddy. Lição 22 de 45.

challenge icon

Desafio

Este desafio testará sua compreensão de:

  • Carregamento de valores da memória
  • Armazenamento de valores na memória
  • Cópia entre registradores
  • Uso do tamanho correto do registrador

Os endereços de data já foram criados para você. Você só precisa escrever as instruções MOV.

Desafio

Conclua as tarefas a seguir na ordem. Escreva uma linha de assembly para cada tarefa.

Data já fornecidos:

  • num1: contém o valor 8 (1 byte)
  • num2: contém o valor 3 (1 byte)
  • result: espaço vazio (1 byte)

Tarefas:

  1. Carregue o valor de num1 em al
  2. Carregue o valor de num2 em bl
  3. Copie o valor de bl para cl
  4. Armazene o valor de al em result

Após seu código:

  • al deverá conter 8
  • bl deverá conter 3
  • cl deverá conter 3
  • A memória em result deverá conter 8

Experimente você mesmo

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:
    ; O código do aluno é executado primeiro
    
    %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

Todas as lições de Fundamentos

Pratique por conta própria: Playground de Assembly