Итоги: сборка data.asm
Часть раздела Основы путешествия по Assembly на Coddy — урок 30 из 45.
Задание
Вы изучили несколько способов определения данных в секции .data:
| Урок | Что вы узнали |
|---|---|
| 3.1 | Секция .data — где хранятся данные |
| 3.2 | db — Define Byte (1 байт) |
| 3.3 | dw — Define Word (2 байта) |
| 3.4 | dd — Define Double Word (4 байта) |
| 3.5 | dq — Define Quad Word (8 байт) |
| 3.6 | Строки с db — создание текста |
| 3.7 | Символ $ — автоматическое вычисление длины строки |
Теперь пришло время собрать все вместе и создать полноценный файл data.asm.
Что вы создадите в этом испытании:
Файл data.asm, который содержит:
- Строку с автоматическим вычислением длины
- Значение типа byte
- Значение типа word
- Значение типа double word
- Значение типа quad word
Все это должно быть правильно организовано в секции .data.
Пример готового файла <strong>data.asm</strong>:
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