Menu
CoddyTech

Ciągi znaków z db

Część sekcji Podstawy ścieżki Assembly w Coddy. Lekcja 28 z 45.

Wiesz już, że db definiuje pojedynczy bajt. Ale db może również definiować ciąg znaków: wiele bajtów po kolei.

Składnia:

label db 'text here'

Przykład:

section .data
    message db 'Hello'

Tworzy to 5 bajtów w pamięci: 'H', 'e', 'l', 'l', 'o'

Co dzieje się w pamięci:

AdresBajtWartość ASCII
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

Dodawanie znaku nowej linii:

Aby wyświetlić ciąg znaków i przejść do następnej linii, dodaj 0x0a (znak nowej linii):

section .data
    message db 'Hello', 0x0a

Teraz ciąg ma 6 bajtów: 'H','e','l','l','o', znak nowej linii

Wiele ciągów znaków:

section .data
    hello db 'Hello', 0x0a
    goodbye db 'Goodbye', 0x0a

Dlaczego to ważne:

Ciągi znaków to najczęściej używane przez Ciebie dane w asemblerze. Wywołanie systemowe write (którego nauczysz się w rozdziale 5) wyświetla ciągi znaków, odczytując bajty z pamięci aż do osiągnięcia podanej przez Ciebie długości.

Ważna uwaga:

Ciągi to po prostu bajty. Procesor nie wie ani nie obchodzi go, że „H” jest literą. To po prostu liczba 72. Wywołanie systemowe write interpretuje te liczby jako znaki podczas drukowania.

challenge icon

Wyzwanie

Łatwy

Utwórz ciąg znaków o nazwie greeting o wartości 'Hi', po której następuje znak nowej linii (0x0a), w sekcji .data.

Spróbuj swoich sił

%include "data.asm"

section .text
    global _start

_start:
    ; Wyświetl ciąg znaków za pomocą wywołania systemowego write
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', znak nowej linii = 3 bajty
    syscall
    
    ; Zakończ program
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Assembly

Sprawdź kod dowolnego znaku: Konwerter ASCII