跳转到内容

equ & $ & 数组

使用示例代码解说

section .data
data: db "1234"
data_len: equ $ - data
one: equ "one"

$

$在此时表示当前的内存位址,比如当前在0x1204,$就是0x1204
data如果是0x1200,0x1204 - 0x1200就是其长度
但这种情况$必须紧接着变量才是正确位址

equ即为C语言的define,将一个内容取代成另一个内容
比如稍后我们使用one会被取代成”one”,此动作只有取代不分配内存空间

使用align 16或任意数字,会将下一行的内容对齐到特定大小(byte)

section .data
pre: db "1"
align 16
data: db "1234"
data2: db "5678"

内存一开始有一个”1”,然后补15个0,“12345678”
align的作用范围只有下一行而已

数组是一段连续的内存空间,只要我们在数据段连续定义就是数组

arr: dq "one", 0
dq "two", 0
; or
one: dq "one", 0
two: dq "two", 0

要注意的是任何字串丢去C/C++都需要以\0结尾
此范例dq表示一个元素是qword 8 bytes长度
接着将数组开头载入到寄存器,每次读取+8或扫描到0都可以作为判断准则