Menu
CoddyTech

Özet: data.asm Dosyasını Derleme

Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 30 / 45.

challenge icon

Görev

.data bölümünde verileri tanımlamanın birkaç yolunu öğrendin:

DersÖğrendiklerin
3.1Verilerin bulunduğu .data bölümü
3.2db: Bayt tanımlama (1 bayt)
3.3dw: Word tanımlama (2 bayt)
3.4dd: Double word tanımlama (4 bayt)
3.5dq: Quad word tanımlama (8 bayt)
3.6db ile dizeler: metin oluşturma
3.7$ simgesi: dize uzunluklarını otomatik hesaplama

Şimdi her şeyi bir araya getirip eksiksiz bir data.asm dosyası oluşturma zamanı.

Bu görevde oluşturacakların:

Şunları içeren bir data.asm dosyası:

  • Uzunluğu otomatik hesaplanan bir dize
  • Bir bayt değeri
  • Bir word değeri
  • Bir double word değeri
  • Bir quad word değeri

Hepsi .data bölümünde düzgün bir şekilde düzenlenmiş olacak.

Eksiksiz bir data.asm örneği:

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

Bu neden önemli:

Sonraki bölümlerde, programlarının ihtiyaç duyduğu verileri depolamak için bunun gibi data.asm dosyalarını kullanacaksın. main.asm dosyası, data.asm dosyanı içerecek ve tanımladığın etiketleri ve uzunlukları kullanacak.

Görev

Aşağıdakileri içeren eksiksiz bir data.asm dosyası oluştur:

  1. welcome adlı, değeri 'Welcome!' olan ve ardından yeni satır (0x0a) gelen bir dize
  2. $ - welcome kullanarak uzunluğu otomatik hesaplayan, welcomeLen adlı bir sabit
  3. Değeri 99 olan, score adlı bir bayt
  4. Değeri 2025 olan, year adlı bir word
  5. Değeri 8500000 olan, population adlı bir double word
  6. Değeri 100000000000 olan, stars adlı bir quad word

Hepsi .data bölümünün içinde olmalı.

Kendin dene

%include "data.asm"

section .text
    global _start

_start:
    ; Karşılama metnini yazdır
    mov rax, 1
    mov rdi, 1
    mov rsi, welcome
    mov rdx, welcomeLen
    syscall
    
    ; Çıkış
    mov rax, 60
    mov rdi, 0
    syscall

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Assembly playground