Recapitulação: Desafio MOV
Parte da seção Fundamentos do Journey de Assembly da Coddy. Lição 22 de 45.
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:
- Carregue o valor de
num1emal - Carregue o valor de
num2embl - Copie o valor de
blparacl - Armazene o valor de
alemresult
Após seu código:
aldeverá conter 8bldeverá conter 3cldeverá conter 3- A memória em
resultdeverá 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
syscallTodas as lições de Fundamentos
1A Máquina
O que é CPUMemóriaRegistradores vs MemóriaComo as instruções funcionamPadrão de Dois ArquivosA Arquitetura x86-643Primeira instrução - MOV
O que é MOV?MOV ImediatoMOV Registrador para RegistradorMOV Memória para RegistradorMOV Registrador para MemóriaLEA - Carregar EndereçoMOV com Tamanhos DiferentesPrática: Trocar RegistradoresRecapitulação: Desafio MOVPratique por conta própria: Playground de Assembly