在程序中,有时我们需要为一些数据保留一些存储空间,但不需要为它们初始化,而是在后续程序运行过程中被赋予实际值。
这个时候,我们就需要用到汇编语言中的保留指令,这些指令用于在内存中分配指定大小的空间,但不对其中的数据进行初始化。
常见的保留指令有:
指令 用途
RESB 保留一个 Byte(一个字节)
RESW 保留一个 Word(两个字节)
RESD 保留一个 Doubleword(四个字节)
RESQ 保留一个 Quadword(八个字节)
REST 保留十个字节空间(十个字节)
多重定义
一个程序可以定义多个数据定义的语句,例如:
choice DB 'y'
number DW 123
bigbumber DQ 123456789
这样定义的语句,编辑器会为这些变量分配连续的内存。
多次初始化
times 指令允许对同一值进行多次初始化,这样在定义数组和表示非常有用。可以使用如下语句,创建名为 stars、数据元素类型为DW 的数组,包含 9 个元素,每个初始化为 0.
stars TIMES 9 DW 0 ;
我们重温一下上面输出 9 个 * 的汇编程序:
section .text
global _start
section .data
stars times 9 db '*'
_start:
mov edx, 9
mov ecx, stars
mov ebx, 1
mov eax, 4
int 0x80
mov eax, 1
int 0x80
同样编译运行后,会输出:
********* |