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

section данных и syscall выхода уже предоставлены. Вам нужно написать только два syscall 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Проверьте себя

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

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

Потренируйтесь самостоятельно: Песочница Assembly