Menu
Coddy logo textTech

Znak nowej linii ma znaczenie

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

Dodawałeś 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 jest wyświetlany, 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 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 jedną linię
Znak nowej linii tylko na końcu ostatniego ciąguPoprzednie ciągi zlewają się ze sobą, a ostatni przechodzi do następnej linii
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 osobnej linii.

challenge icon

Wyzwanie

Otrzymujesz trzy ciągi znaków bez znaków nowej linii. Twoim zadaniem jest wypisać je 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 działanie poprawnie kodem 0

Spróbuj swoich sił

section .data
    ; TODO: Zdefiniuj word1 jako 1. tekst podany w instrukcji, zakończony znakiem nowej linii
    ; TODO: Zdefiniuj word2 jako 2. tekst podany w instrukcji, zakończony znakiem nowej linii
    ; TODO: Zdefiniuj word3 jako 3. tekst podany w instrukcji, zakończony znakiem 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