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 inmediato. "Inmediato" significa que el valor se escribe directamente en la propia instrucción.
Sintaxis:
mov register, valueEl valor se copia en el registro.
Ejemplos:
| Instrucción | Qué hace |
|---|---|
mov rax, 5 | Copia el número 5 en rax |
mov rbx, 100 | Copia el número 100 en rbx |
mov rcx, 0 | Copia el número 0 en rcx |
Este código no hace nada visible (aún no hay salida), pero coloca con éxito 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 ten en cuenta que los números se almacenan en los registros.
Reglas importantes:
| Regla | Explicación |
|---|---|
| El valor debe caber en el registro | rax puede contener números muy grandes (hasta 2⁶⁴-1) |
| El valor se copia, no se mueve | El número original sigue existiendo (es solo un número) |
| Registros a la izquierda | mov rax, 5 es correcto. mov 5, rax es incorrecto |
Desafío
Escribe una línea de código ensamblador para cada tarea:
- Pon el número 5 en el registro
rax. - Pon el número 7 en el registro
rbx. - Pon 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 el 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 el 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 el 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-64