Итоги: сборка data.asm
Часть раздела Основы путешествия по Assembly на Coddy. Урок 30 из 45.
Задание
Вы изучили несколько способов определения data в секции .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 | Символ $: automatic вычисление длины строки |
Теперь пришло время объединить всё и создать полный файл data.asm.
Что вы создадите в этом испытании:
Файл data.asm, содержащий:
- Строку с automatic вычислением длины
- Значение byte
- Значение слова
- Значение двойного слова
- Значение четверного слова
Всё правильно организованное в секции .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 для хранения data, необходимых вашим программам. Файл main.asm подключит ваш data.asm и будет использовать определённые вами метки и length.
Испытание
Создайте полный файл data.asm со следующим содержимым:
- Строка с именем
welcomeи значением 'Welcome!', за которым следует символ новой строки (0x0a) - Константа с именем
welcomeLen, которая automatic вычисляет length с помощью$ - welcome - byte с именем
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