Menu
CoddyTech

Znak nowej linii ma znaczenie

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

Dodajesz 0x0a (znak nowej linii) na końcu swoich ciągów znaków. Ale co się stanie, jeśli o tym zapomnisz?

Bez znaku nowej linii:

Tekst zostaje wyświetlony, ale kursor pozostaje w tym samym wierszu. Każdy kolejny wynik pojawi się tuż obok.

Przykład bez znaku nowej linii:

section .data
    first db 'Hello'
    firstLen equ $ - first
    second db 'World'
    secondLen equ $ - second

section .text
    mov rax, 1
    mov rdi, 1
    mov rsi, first
    mov rdx, firstLen
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, second
    mov rdx, secondLen
    syscall

Wynik:

HelloWorld

Bez spacji. Bez znaku nowej linii. Wszystko jest sklejone.

Z nową linią:

section .data
    first db 'Hello', 0x0a
    firstLen equ $ - first
    second db 'World', 0x0a
    secondLen equ $ - second

Wynik:

Hello
World

Każdy ciąg znaków jest wyświetlany w osobnym wierszu.

Co robi znak nowej linii:

ZnakASCIIDziałanie
0x0a10Przenosi kursor na początek następnej linii

Częste błędy związane ze znakami nowej linii:

BłądWynik
Brak znaku nowej liniiTekst zlewa się w jeden wiersz
Znak nowej linii tylko na końcu ostatniego ciąguWszystkie ciągi zlewają się w jeden wiersz, a następnie kursor przechodzi do następnego wiersza
Znak nowej linii w środku ciąguPodziały wiersza pojawiają się w nieoczekiwanych miejscach

Bezpieczna zasada:

Zawsze dodawaj 0x0a na końcu każdego ciągu znaków, który ma znaleźć się w osobnym wierszu.

challenge icon

Wyzwanie

Otrzymujesz trzy ciągi znaków bez znaków nowej linii. Twoim zadaniem jest je wypisać tak, aby pojawiły się w trzech osobnych wierszach.

Ciągi znaków to:

Ciąg znakówWartość
word1'Apple'
word2'Banana'
word3'Cherry'

Wymagania:

  • Zdefiniuj każdy ciąg znaków ze znakiem nowej linii (0x0a) na końcu
  • Automatycznie oblicz długość każdego ciągu znaków
  • Wypisz wszystkie trzy ciągi znaków za pomocą wywołania systemowego write
  • Zakończ program poprawnie kodem 0

Spróbuj swoich sił

section .data
    ; TODO: Zdefiniuj word1, używając 1. tekstu podanego w instrukcji i znaku nowej linii
    ; TODO: Zdefiniuj word2, używając 2. tekstu podanego w instrukcji i znaku nowej linii
    ; TODO: Zdefiniuj word3, używając 3. tekstu podanego w instrukcji i znaku nowej linii
    ; TODO: Oblicz długość każdego ciągu znaków

section .text
    global _start

_start:
    ; TODO: Wypisz word1
    ; TODO: Wypisz word2
    ; TODO: Wypisz word3

    ; TODO: Zakończ program poprawnie
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