Menu
CoddyTech

Wyświetlanie dwóch ciągów

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

Wiesz już, jak wyświetlić jeden ciąg znaków. Ale co, jeśli chcesz wyświetlić dwa oddzielne ciągi znaków? Na przykład „Hello ”, a potem „World!”?

Po prostu wywołaj wywołanie systemowe write dwa razy, raz dla każdego ciągu znaków.

Jak to działa:

; Pierwsze wypisanie
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; Drugie wypisanie
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

Przykład:

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

    second db 'World!', 0x0a
    secondLen equ $-second

section .text
    global _start

_start:
    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

    mov rax, 60
    mov rdi, 0
    syscall

Wynik:

Hello

World!

Każdy ciąg znaków kończy się znakiem 0x0a (znakiem nowej linii), dlatego oba ciągi są wyświetlane w osobnych wierszach.

Dlaczego wyświetlać dwa ciągi znaków zamiast jednego?

PowódPrzykład
Ponowne użycieWyświetlanie tego samego powitania z różnymi imionami
ElastycznośćWyświetlanie różnych komunikatów w zależności od warunków
OrganizacjaPrzechowywanie różnych komunikatów osobno w pamięci

Możesz wypisać tyle ciągów znaków, ile chcesz:

Po prostu powtórz wywołanie systemowe write dla każdego ciągu znaków.

challenge icon

Wyzwanie

Otrzymujesz dwa ciągi znaków: partOne o wartości 'Good' i partTwo o wartości 'bye'. Oba mają już znak nowej linii na końcu.

Napisz kod, który wypisze partOne, a następnie partTwo, tak aby wynik wyglądał następująco:

Good

bye

Sekcja danych i wywołanie systemowe kończące działanie programu są już podane. Musisz napisać tylko dwa wywołania systemowe zapisu.

Spróbuj swoich sił

section .data
    partOne db 'Good', 0x0a
    partOneLen equ $-partOne
    partTwo db 'bye', 0x0a
    partTwoLen equ $-partTwo

section .text
    global _start

_start:
    ; TODO: Wypisz partOne za pomocą wywołania systemowego write
    ; TODO: Wypisz partTwo za pomocą wywołania systemowego write

    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