Строки с использованием db
Часть раздела Основы путешествия по Assembly на Coddy. Урок 28 из 45.
Вы уже знаете, что db определяет один байт. Но db также может определять строку: несколько байтов подряд.
Синтаксис:
label db 'text here'Пример:
section .data
message db 'Hello'Это создаёт 5 bytes в памяти: 'H', 'e', 'l', 'l', 'o'
Что происходит в памяти:
| Адрес | Байт | Значение ASCII |
|---|---|---|
| message | 'H' | 72 |
| message+1 | 'e' | 101 |
| message+2 | 'l' | 108 |
| message+3 | 'l' | 108 |
| message+4 | 'o' | 111 |
Добавление новой строки:
Чтобы вывести строку и перейти на следующую строку, добавьте 0x0a (символ newline):
section .data
message db 'Hello', 0x0aТеперь string содержит 6 bytes: 'H','e','l','l','o', newline
Несколько строк:
section .data
hello db 'Hello', 0x0a
goodbye db 'Goodbye', 0x0aПочему это важно:
Строки — это наиболее распространённые данные, которые вы будете использовать в ассемблере. Системный вызов write (который вы изучите в главе 5) выводит строки, считывая bytes из памяти, пока не достигнет указанной вами длины.
Важное примечание:
Строки — это просто bytes. CPU не знает и не заботится о том, что 'H' — это буква. Это просто число 72. Системный вызов write интерпретирует эти числа как символы при выводе.
Задание
ЛегкоCreate string called greeting со значением 'Hi', followed by newline (0x0a) в секции .data.
Попробуйте сами
%include "data.asm"
section .text
global _start
_start:
; Вывести строку с помощью системного вызова write
mov rax, 1
mov rdi, 1
mov rsi, greeting
mov rdx, 3 ; 'H', 'i', перевод строки = 3 байта
syscall
; Выход
mov rax, 60
mov rdi, 0
syscallВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Машина
Что такое CPUПамятьРегистры против памятиКак работают инструкцииПаттерн двух файловАрхитектура x86-644Определение данных
Секция .datadb — определение байтаdw — определение словаdd — определение двойного словаdq — определение учетверенного словаСтроки с использованием dbСимвол $Итоги: сборка data.asmПотренируйтесь самостоятельно: Песочница Assembly