db, định nghĩa byte
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 24 trên 45.
Cách cơ bản nhất để tạo dữ liệu trong bộ nhớ là db: Define Byte. Lệnh này tạo một byte (8 bit) dữ liệu.
Cú pháp:
label db valuelabel: tên bạn đặt cho địa chỉ bộ nhớ nàydb: chỉ thị định nghĩa bytevalue: số hoặc ký tự cần lưu (từ 0 đến 255)
Ví dụ:
section .data
age db 25 ; Tạo một byte tên là "age" chứa 25
grade db 'A' ; Tạo một byte tên là "grade" chứa 65 (mã ASCII của 'A')
zero db 0 ; Tạo một byte tên là "zero" chứa 0Những gì bạn có thể lưu trữ trong một byte:
| Kiểu | Phạm vi | Ví dụ |
|---|---|---|
| Số nhỏ | từ 0 đến 255 | db 100 |
| Ký tự | 'A' đến 'z' | db 'X' |
| Mã ASCII | từ 0 đến 255 | db 65 (giống 'A') |
Nhiều byte trên một dòng:
Bạn có thể định nghĩa nhiều byte liên tiếp bằng dấu phẩy:
section .data
numbers db 5, 10, 15, 20 ; Tạo 4 byte: 5, 10, 15, 20
letters db 'A', 'B', 'C' ; Tạo 3 byte: 65, 66, 67Cách sử dụng một byte trong code:
section .data
myByte db 42
section .text
mov al, [myByte] ; Nạp giá trị (value) 42 vào al
add al, 1 ; al trở thành 43
mov [myByte], al ; Lưu 43 trở lại myByteQuy tắc quan trọng:
| Quy tắc | Giải thích |
|---|---|
| Giá trị phải vừa trong 1 byte | Từ 0 đến 255 (hoặc một ký tự) |
Dùng một thanh ghi 8 bit như al để tải hoặc lưu | al (giống như bl, cl, dl) là một thanh ghi 8 bit |
Lỗi thường gặp:
; Sai: cố lưu một số quá lớn trong một byte
section .data
error db 300 ; 300 quá lớn (tối đa 255)Thử thách
DễTạo một byte có tên score với giá trị 15 trong phần .data.
Viết tệp data.asm với phần .data chính xác và chỉ thị db.
Tự làm thử
%include "data.asm"
section .text
global _start
_start:
mov al, [score]
mov r12, rax
add al, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 60
mov rdi, 0
syscall
section .bss
digit resb 1Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tấ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