Menu
Coddy logo textTech

Печать двух строк

Часть раздела Основы путешествия по Assembly на Coddy — урок 40 из 45.

Вы уже знаете, как вывести одну строку. Но что, если вы хотите вывести две отдельные строки? Например, "Hello " и затем "World!"?

Вы просто вызываете системный вызов write дважды — по одному разу для каждой строки.

Как это работает:

; Первый вывод
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; Второй вывод
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

Пример:

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

Результат:

Hello World!

Зачем выводить две строки вместо одной?

ПричинаПример
Повторное использованиеВывод одного и того же приветствия с разными именами
ГибкостьВывод различных сообщений в зависимости от условий
ОрганизацияХранение различных сообщений в памяти раздельно

Вы можете выводить столько строк, сколько захотите:

Просто повторите системный вызов write для каждой строки.

challenge icon

Задание

Вам даны две строки: partOne со значением 'Good' и partTwo со значением 'bye'. Обе уже содержат символ новой строки в конце.

Напишите код для вывода partOne, а затем partTwo, чтобы результат выглядел так:

Good

bye

Секция данных и системный вызов exit уже предоставлены. Вам нужно только написать два системных вызова write.

Попробуйте сами

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

section .text
    global _start

_start:
    ; TODO: Вывести partOne, используя системный вызов write
    ; TODO: Вывести partTwo, используя системный вызов write

    mov rax, 60
    mov rdi, 0
    syscall
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы