Итоги: сборка data.asm
Часть раздела Основы путешествия по Assembly на Coddy. Урок 30 из 45.
Задание
Вы изучили несколько способов определения данных в секции .data:
| Урок | Что вы изучили |
|---|---|
| 3.1 | Секция .data, где размещаются данные |
| 3.2 | db: определение байта (1 байт) |
| 3.3 | dw: определение слова (2 байта) |
| 3.4 | dd: определение двойного слова (4 байта) |
| 3.5 | dq: определение четверного слова (8 байт) |
| 3.6 | Строки с помощью db: создание текста |
| 3.7 | Символ $: автоматическое вычисление длины строк |
Теперь пришло время объединить всё вместе и создать полный файл data.asm.
Что вы создадите в этом задании:
Файл data.asm, который содержит:
- Строку с автоматическим вычислением длины
- Значение байта
- Значение слова
- Значение двойного слова
- Значение четверного слова
Всё правильно организовано в секции .data.
Пример полного файла data.asm:
section .data
; String with automatic length
msg db 'Hello', 0x0a
msgLen equ $ - msg
; Numbers of different sizes
smallNum db 100
mediumNum dw 5000
largeNum dd 100000
veryLarge dq 5000000000Почему это важно:
В следующих главах вы будете использовать такие файлы data.asm для хранения данных, необходимых вашим программам. Файл main.asm подключит ваш data.asm и будет использовать определённые вами метки и длины.
Задание
Создайте полный файл data.asm со следующим содержимым:
- Строка с именем
welcomeи значением 'Welcome!', за которым следует символ новой строки (0x0a) - Константа с именем
welcomeLen, которая автоматически вычисляет длину с помощью$ - welcome - Байт с именем
scoreи значением 99 - Слово с именем
yearи значением 2025 - Двойное слово с именем
populationи значением 8500000 - Четверное слово с именем
starsи значением 100000000000
Всё это должно находиться в секции .data.
Попробуйте сами
%include "data.asm"
section .text
global _start
_start:
; Вывести строку приветствия
mov rax, 1
mov rdi, 1
mov rsi, welcome
mov rdx, welcomeLen
syscall
; Выход
mov rax, 60
mov rdi, 0
syscallВсе уроки раздела Основы
1Машина
Что такое CPUПамятьРегистры против памятиКак работают инструкцииПаттерн двух файловАрхитектура x86-644Определение данных
Секция .datadb — определение байтаdw — определение словаdd — определение двойного словаdq — определение учетверенного словаСтроки с использованием dbСимвол $Итоги: сборка data.asmПотренируйтесь самостоятельно: Песочница Assembly