首页 > 解决方案 > 如何在 nasm 中声明用户指定大小的数组?

问题描述

想用 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

标签: assemblyx86nasmintel

解决方案


您的意思是像resd n在 BSS 中一样,用户可以构建程序nasm -felf -Dn=1024以将 NASM 宏设置为常量?您可以使用%ifdef.

如果你想要一个运行时可变的数组大小,它显然不能在静态存储中(除非你大量过度分配并且只使用需要的数组的任何部分。这在为 BSS 进行延迟分配的系统上很好。)


推荐阅读