Menu
Coddy logo textTech

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

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

challenge icon

Задание

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

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

  1. Строка с именем welcome и значением 'Welcome!', за которым следует символ новой строки (0x0a)
  2. Константа с именем welcomeLen, которая automatic вычисляет length с помощью $ - welcome
  3. byte с именем 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

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

Потренируйтесь самостоятельно: Песочница Assembly