【发布时间】:2019-04-06 17:00:43
【问题描述】:
想用 nasm 做一个使用 x86 架构的例子,它可以创建一个大小为“n”的数组,其中“n”将是用户希望在运行时拥有数组大小的数字
extern _printf
extern _scanf
extern _scanf
global _main
section .data
array: 10,5,4
msg: db "enter the size of the array: ",10,0
size: db 10
format: db "%i",0
section .text
_main:
push msg
call _printf
add esp, 4
push size
push format
call _scanf
add esp, 8
ret
【问题讨论】:
-
汇编语言中没有声明。你能详细说明你想做什么吗?
-
你需要在运行时分配。堆栈或堆。与 C 相同。
-
数组不应该有烧掉的大小,但应该在从控制台捕获时指出
-
你不能在汇编中这样做。您必须首先从用户那里获取大小,然后使用外部内存管理功能从堆中分配该内存量。或在堆栈上保留那么多(但不要太多——堆栈相对较小)。您调用哪个函数取决于代码将在其中运行的环境。我猜在 C 中,您会调用 malloc。在独立应用程序中,您将调用 OS 函数。等
-
谢谢,我更倾向于第二部分,但是为向量保留足够的内存空间并不是一个坏习惯