如何在nasm中初始化数组?

时间:2014-01-06 22:19:45

标签: assembly nasm

我尝试初始化的是这样的数组:

int array_int[10] = {1, 2, 3, 4};

我的nasm代码是:

array_int db 1, times 3 db 0, 2, times 3 db 0, 3, times 3 db 0, db 4, times 1Bh db 0

汇编程序只输出:

error: expression syntax error

有人可以给我一些帮助吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

考虑到你的尝试:

array_int db 1, times 3 db 0, 2, times 3 db 0, ...

看起来你有一个32位的小端架构,所以有几种方法可以做到这一点。

第一个是相当冗长的:

array_int  db  1, 0, 0, 0  ; a[0]
           db  2, 0, 0, 0  ; a[1]
           db  3, 0, 0, 0  ; a[2]
           db  4, 0, 0, 0  ; a[3]
           db  0, 0, 0, 0  ; a[4]
           db  0, 0, 0, 0  ; a[5]
           db  0, 0, 0, 0  ; a[6]
           db  0, 0, 0, 0  ; a[7]
           db  0, 0, 0, 0  ; a[8]
           db  0, 0, 0, 0  ; a[9]

第二个是要意识到dd可用于定义32位值而无需手动计算db布局:

array_int  dd  1, 2, 3, 4, 0, 0, 0, 0, 0, 0
相关问题