如何在Assembly中的堆栈上创建和初始化数组?

时间:2015-01-04 17:25:22

标签: assembly nasm

我可以执行以下操作来创建数组并将其初始化为全局变量:

    section .data
s DB 'h', 'e', 'l', 'l', 'o', 0

但我想在堆栈上创建并初始化一个数组(在我的函数中使用)。我猜这是如何为它预留空间:

sub esp, 6

但我该如何初始化呢?

2 个答案:

答案 0 :(得分:1)

s DB 'h', 'e', 'l', 'l', 'o', 0  

要在堆栈中设置此数组,您可以使用

mov ax,'o'
push ax
mov ax,'ll'
push ax
mov ax,'he'
push ax     ;Now SP points to 'hello',0

答案 1 :(得分:0)

您可以通过其指针esb和ebp来操作堆栈的内容。 例如,为了保留3个单词并将它们初始化为零,您可以写:

push ebp
sub esp, 6
mov ebp, esp
mov [ebp], 0
add ebp, 2
mov [ebp], 0
add ebp, 2
mov [ebp], 0

sub esp, 6
mov [esp], 0
mov [esp+2], 0
mov [esp+4], 0
相关问题