Menu
CoddyTech

回顾:构建 data.asm

本课属于 Coddy Assembly 学习旅程的“基础知识”单元。第 30 课,共 45 课。

challenge icon

挑战

你已经学过几种在 .data 单元中定义数据的方法:

课学到的内容
3.1.data 单元,数据存放的位置
3.2db:定义字节(1 byte)
3.3dw:定义字(2 bytes)
3.4dd:定义双字(4 bytes)
3.5dq:定义四字(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 文件,包含以下内容:

  1. 一个名为 welcome 的字符串,值为 'Welcome!',后跟一个换行符(0x0a)
  2. 一个名为 welcomeLen 的常量,使用 $ - welcome 自动计算长度
  3. 一个名为 score 的字节,值为 99
  4. 一个名为 year 的字,值为 2025
  5. 一个名为 population 的双字,值为 8500000
  6. 一个名为 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 在线编辑器