打印
[技术手册]

为未初始化数据分配空间

[复制链接]
49|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AdaMaYun|  楼主 | 2025-5-26 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在程序中,有时我们需要为一些数据保留一些存储空间,但不需要为它们初始化,而是在后续程序运行过程中被赋予实际值。

这个时候,我们就需要用到汇编语言中的保留指令,这些指令用于在内存中分配指定大小的空间,但不对其中的数据进行初始化。

常见的保留指令有:

指令        用途
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
同样编译运行后,会输出:

*********

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

291

主题

2252

帖子

6

粉丝