Menu
Coddy logo textTech

Le symbole $

Fait partie de la section Fondamentaux du Journey Assembly de Coddy — leçon 29 sur 45.

Lorsque vous affichez une chaîne de caractères en utilisant l'appel système write (Chapitre 5), vous devez indiquer au processeur le nombre d'octets à afficher.

Vous pourriez compter les caractères manuellement :

message db 'Hello', 0x0a    ; 6 octets (H e l l o saut de ligne)
mov rdx, 6                  ; Comptage manuel

Mais le comptage manuel est lent et sujet aux erreurs. Si vous modifiez la chaîne, vous devez recompter et mettre à jour le nombre.

La solution : calcul automatique de la longueur à l'aide de <strong>$lt;/strong>

$ est le compteur d'emplacement — il représente l'adresse mémoire actuelle où le prochain octet sera placé.

Exemple 1 : Chaîne simple

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

Comment ça fonctionne :

  • message est l'adresse de départ (exemple : 1000)
  • Après avoir stocké 6 octets, $ devient 1006
  • $ - message = 1006 − 1000 = 6 (la longueur)

Remarque : equ signifie equate. Elle crée une constante — un nom qui représente une valeur.

Exemple 2 : Plusieurs chaînes

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

Chaque chaîne a sa propre longueur calculée automatiquement. Le $ se réinitialise pour chaque calcul car il se réfère toujours à la position actuelle juste après chaque chaîne.

challenge icon

Défi

Facile

Créez une chaîne de caractères appelée city avec la valeur 'Paris' suivie d'un saut de ligne (0x0a). Ensuite, créez une constante appelée cityLen qui calcule automatiquement la longueur en utilisant $ - city.

Essayez vous-même

%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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux