Menu
Coddy logo textTech

Итоги: сборка data.asm

Часть раздела Основы путешествия по Assembly на Coddy — урок 30 из 45.

challenge icon

Задание

Вы изучили несколько способов определения данных в секции .data:

УрокЧто вы узнали
3.1Секция .data — где хранятся данные
3.2db — Define Byte (1 байт)
3.3dw — Define Word (2 байта)
3.4dd — Define Double Word (4 байта)
3.5dq — 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 со следующим содержимым:

  1. Строка с именем welcome со значением 'Welcome!', за которой следует символ новой строки (0x0a)
  2. Константа с именем welcomeLen, которая автоматически вычисляет длину с помощью $ - welcome
  3. Байт с именем score со значением 99
  4. Слово с именем year со значением 2025
  5. Двойное слово с именем population со значением 8500000
  6. Четверное слово с именем 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

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