Menu
Coddy logo textTech

El símbolo $

Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 29 de 45.

Cuando imprimes una cadena usando la llamada al sistema write (capítulo 5), debes indicarle a la CPU cuántos bytes imprimir.

Podrías contar los caracteres manualmente:

message db 'Hello', 0x0a    ; 6 bytes (H e l l o nueva línea)
mov rdx, 6                  ; Conteo manual

Pero contar manualmente es lento y propenso a errores. Si cambias la cadena, debes volver a contar y actualizar el número.

La solución: cálculo automático de la longitud mediante $

$ es el contador de ubicación. Representa la dirección de memoria actual donde se colocará el siguiente byte.

Ejemplo 1: Cadena simple

section .data
    message db 'Hello', 0x0a
    msgLen equ $ - message

Cómo funciona:

  • message es la dirección inicial (ejemplo: 1000)
  • Después de almacenar 6 bytes, $ se convierte en 1006
  • $ - message = 1006 − 1000 = 6 (la longitud)

Nota: equ significa igualar. Crea una constante: un nombre que representa un valor.

Ejemplo 2: varias cadenas

section .data
    first db 'Hi', 0x0a
    len1 equ $ - first      ; len1 = 3 ('H','i', nueva línea)
    second db 'Hello', 0x0a
    len2 equ $ - second     ; len2 = 6 ('H','e','l','l','o', nueva línea)

Cada cadena tiene su propia longitud, calculada automáticamente. $ se restablece para cada cálculo porque siempre hace referencia a la posición actual justo después de cada cadena.

challenge icon

Desafío

Fácil

Crea una cadena llamada city con el valor 'Paris' seguida de un salto de línea (0x0a). Después, crea una constante llamada cityLen que calcule automáticamente la longitud usando $ - city.

Pruébalo tú mismo

%include "data.asm"

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, city
    mov rdx, cityLen
    syscall
    
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Assembly