我尝试初始化的是这样的数组:
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
有人可以给我一些帮助吗? 谢谢!
答案 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