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 nim zapomnisz?

Bez znaku nowej linii:

Tekst zostaje wyświetlony, ale kursor pozostaje w tym samym wierszu. Każdy przyszły 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 zlepione.

Z nowym wierszem:

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ągu znakówPoprzednie ciągi znaków zlewają się ze sobą, a ostatni przechodzi do następnego wiersza
Znak nowej linii w środku ciągu znakówPodziały wierszy pojawiają się w nieoczekiwanych miejscach

Bezpieczna zasada:

Zawsze dodawaj 0x0a na końcu każdego ciągu znaków, który chcesz umieścić w osobnym wierszu.

challenge icon

Wyzwanie

Dane są trzy ciągi znaków bez znaków nowej linii. Twoim zadaniem jest je wypisać tak, aby każdy znalazł się w osobnym wierszu.

Ciągi znaków:

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 działanie poprawnie kodem 0

Spróbuj swoich sił

section .data
    ; TODO: Zdefiniuj word1, zawierający pierwszy tekst podany w instrukcji oraz znak nowego wiersza
    ; TODO: Zdefiniuj word2, zawierający drugi tekst podany w instrukcji oraz znak nowego wiersza
    ; TODO: Zdefiniuj word3, zawierający trzeci tekst podany w instrukcji oraz znak nowego wiersza
    ; 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