我可以执行以下操作来创建数组并将其初始化为全局变量:
section .data
s DB 'h', 'e', 'l', 'l', 'o', 0
但我想在堆栈上创建并初始化一个数组(在我的函数中使用)。我猜这是如何为它预留空间:
sub esp, 6
但我该如何初始化呢?
答案 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