Menu
CoddyTech

Ôn tập: xây dựng data.asm

Thuộc phần Kiến thức nền tảng trong hành trình Assembly của Coddy. Bài học 30 trên 45.

challenge icon

Thử thách

Bạn đã học một số cách định nghĩa dữ liệu trong phần .data:

Bài họcBạn đã học
3.1Phần .data, nơi đặt dữ liệu
3.2db: Định nghĩa Byte (1 byte)
3.3dw: Định nghĩa Word (2 byte)
3.4dd: Định nghĩa Double Word (4 byte)
3.5dq: Định nghĩa Quad Word (8 byte)
3.6Chuỗi với db: tạo văn bản
3.7Ký hiệu $: tự động tính độ dài chuỗi

Giờ là lúc kết hợp tất cả và tạo một tệp data.asm hoàn chỉnh.

Trong thử thách này, bạn sẽ tạo:

Một tệp data.asm chứa:

  • Một chuỗi có độ dài được tính tự động
  • Một giá trị byte
  • Một giá trị word
  • Một giá trị double word
  • Một giá trị quad word

Tất cả được sắp xếp đúng cách trong phần .data.

Ví dụ về một tệp data.asm hoàn chỉnh:

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

Vì sao điều này quan trọng:

Trong các chương tiếp theo, bạn sẽ dùng những tệp data.asm như thế này để lưu trữ dữ liệu mà chương trình cần. Tệp main.asm sẽ đưa tệp data.asm vào và sử dụng các nhãn cùng độ dài bạn đã định nghĩa.

Thử thách

Tạo một tệp data.asm hoàn chỉnh với những nội dung sau:

  1. Một chuỗi tên là welcome có giá trị 'Welcome!', theo sau là ký tự xuống dòng (0x0a)
  2. Một hằng số tên là welcomeLen tự động tính độ dài bằng $ - welcome
  3. Một byte tên là score có giá trị 99
  4. Một word tên là year có giá trị 2025
  5. Một double word tên là population có giá trị 8500000
  6. Một quad word tên là stars có giá trị 100000000000

Tất cả nằm trong phần .data.

Tự làm thử

%include "data.asm"

section .text
    global _start

_start:
    ; In ra chuỗi chào mừng
    mov rax, 1
    mov rdi, 1
    mov rsi, welcome
    mov rdx, welcomeLen
    syscall
    
    ; Thoát
    mov rax, 60
    mov rdi, 0
    syscall

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Playground Assembly