无法理解Kip Irvine的汇编语言书中的存储分配

时间:2016-04-09 17:36:05

标签: assembly x86 machine-language

我读过这本书Assembly Language for x86 by Kip Irvine。在第85页,他写了关于使用符号的原因:

  

使用DUP运算符:Section 3.4.4展示了如何使用DUP运算符为数组和字符串创建存储。 DUP使用的计数器应该是一个符号常量,以简化程序维护。在下一个示例中,如果已定义COUNT,则可以在以下数据定义中使用它:

array dword COUNT DUP(0)

我不明白这个命令在做什么。有人可以向我解释这是什么意思吗?

1 个答案:

答案 0 :(得分:4)

这很简单:

.const
  COUNT equ 10               ; sets COUNT to a value of 10 or whatever
.data
  array dword COUNT DUP(0)   ; creates an array of DWORDs/4-byte values 

所以array由COUNT(= 10)DWORD值组成,等于'0'(4 * 10 = 40字节)。

DUP命令只是说前面的数据类型是'重复'COUNT次。因此array DWORD DUP COUNT array导致DWORD地址后跟(sizeof(DWORD)* COUNT个)字节初始化为{ {1}} s的值为0.