MOV Imediato
Parte da seção Fundamentos do Journey de Assembly da Coddy. Lição 15 de 45.
A forma mais simples de MOV é MOV immediate. “Imediato” significa que o valor é escrito diretamente na própria instrução.
Sintaxe:
mov register, valueO valor é copiado para o register.
Exemplos:
| Instrução | O que faz |
|---|---|
mov rax, 5 | Copia o number 5 para rax |
mov rbx, 100 | Copia o number 100 para rbx |
mov rcx, 0 | Copia o number 0 para rcx |
Este código não faz nada visível (nenhuma saída ainda), mas coloca números nos registradores com sucesso.
Observação: Você verá o efeito destas instruções MOV em lições posteriores, quando aprender a imprimir ou depurar. Por enquanto, basta saber que os números estão armazenados nos registradores.
Regras importantes:
| Regra | Explicação |
|---|---|
| O valor deve caber no register | rax pode armazenar números muito grandes (até 2⁶⁴-1) |
| O valor é copiado, não movido | O número original ainda existe (é apenas um número) |
| Registers à esquerda | mov rax, 5 está correto. mov 5, rax está errado |
Desafio
Escreva uma linha de código assembly para cada tarefa:
- Coloque o número 5 no
raxregister. - Coloque o número 7 no
rbxregister. - Coloque o número 3 no
rcxregister.
Experimente você mesmo
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"
; Salvar valores
mov r12, rax
mov r13, rbx
mov r14, rcx
; Imprimir "rax = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rax
mov rdx, msg_rax_len
syscall
; Imprimir valor de rax
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Imprimir "rbx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rbx
mov rdx, msg_rbx_len
syscall
; Imprimir valor de rbx
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Imprimir "rcx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rcx
mov rdx, msg_rcx_len
syscall
; Imprimir valor de rcx
mov rax, r14
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Sair
mov rax, 60
mov rdi, 0
syscallEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas 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-64Pratique por conta própria: Playground de Assembly