Ô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.
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ọc | Bạn đã học |
|---|---|
| 3.1 | Phần .data, nơi đặt dữ liệu |
| 3.2 | db: Định nghĩa Byte (1 byte) |
| 3.3 | dw: Định nghĩa Word (2 byte) |
| 3.4 | dd: Định nghĩa Double Word (4 byte) |
| 3.5 | dq: Định nghĩa Quad Word (8 byte) |
| 3.6 | Chuỗi với db: tạo văn bản |
| 3.7 | Ký 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 5000000000Vì 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:
- Một chuỗi tên là
welcomecó giá trị 'Welcome!', theo sau là ký tự xuống dòng (0x0a) - Một hằng số tên là
welcomeLentự động tính độ dài bằng$ - welcome - Một byte tên là
scorecó giá trị 99 - Một word tên là
yearcó giá trị 2025 - Một double word tên là
populationcó giá trị 8500000 - Một quad word tên là
starscó 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
syscallTất cả bài học trong Kiến thức nền tảng
4Định nghĩa dữ liệu
Phần .datadb, định nghĩa bytedw, định nghĩa worddd, định nghĩa double worddq, định nghĩa quad wordChuỗi với dbKý hiệu $Ôn tập: xây dựng data.asmTự luyện tập: Playground Assembly