MOV Inmediato
Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 15 de 45.
La forma más sencilla de MOV es MOV immediate. «Immediate» significa que el valor se escribe directamente en la propia instrucción.
Sintaxis:
mov register, valueEl valor se copia en el register.
Ejemplos:
| Instrucción | Qué hace |
|---|---|
mov rax, 5 | Copia el number 5 into rax |
mov rbx, 100 | Copia el number 100 into rbx |
mov rcx, 0 | Copia el number 0 into rcx |
Este código no hace nada visible (todavía no hay salida), pero coloca correctamente números en los registros.
Nota: Verás el efecto de estas instrucciones MOV en lecciones posteriores, cuando aprendas a imprimir o depurar. Por ahora, solo debes saber que los números están almacenados en los registros.
Reglas importantes:
| Regla | Explicación |
|---|---|
| El valor debe caber en el register | rax puede contener números muy grandes (hasta 2⁶⁴-1) |
| El valor se copia, no se mueve | El número original todavía existe (es solo un number) |
| Los register están a la izquierda | mov rax, 5 es correcto. mov 5, rax es incorrecto |
Desafío
Escribe una línea de código Assembly para cada tarea:
- Introduce el número 5 en el registro
rax. - Introduce el número 7 en el registro
rbx. - Introduce el número 3 en el registro
rcx.
Pruébalo tú mismo
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"
; Guardar 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
; Salir
mov rax, 60
mov rdi, 0
syscallEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1La máquina
¿Qué es la CPU?MemoriaRegistros vs. MemoriaCómo funcionan las instruccionesPatrón de dos archivosLa arquitectura x86-64Practica por tu cuenta: Playground de Assembly