回顾:构建 data.asm
本课属于 Coddy Assembly 学习旅程的“基础知识”单元。第 30 课,共 45 课。
挑战
你已经学过几种在 .data 单元中定义数据的方法:
| 课 | 学到的内容 |
|---|---|
| 3.1 | .data 单元,数据存放的位置 |
| 3.2 | db:定义字节(1 byte) |
| 3.3 | dw:定义字(2 bytes) |
| 3.4 | dd:定义双字(4 bytes) |
| 3.5 | dq:定义四字(8 bytes) |
| 3.6 | 使用 db 创建字符串 |
| 3.7 | $ 符号:自动计算字符串长度 |
现在,是时候把这些内容整合起来,创建一个完整的 data.asm 文件了。
你将在这个挑战中创建:
一个包含以下内容的 data.asm 文件:
- 一个自动计算长度的字符串
- 一个字节值
- 一个字值
- 一个双字值
- 一个四字值
所有内容都要正确地放在 .data 单元中。
完整的 data.asm 示例:
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 文件来存储程序所需的数据。main.asm 文件会包含你的 data.asm 文件,并使用你定义的标签和长度。
挑战
创建一个完整的 data.asm 文件,包含以下内容:
- 一个名为
welcome的字符串,值为 'Welcome!',后跟一个换行符(0x0a) - 一个名为
welcomeLen的常量,使用$ - welcome自动计算长度 - 一个名为
score的字节,值为 99 - 一个名为
year的字,值为 2025 - 一个名为
population的双字,值为 8500000 - 一个名为
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 在线编辑器