【问题标题】:Is there a way to define parametrized variables with DUP in x86 assembly?有没有办法在 x86 程序集中使用 DUP 定义参数化变量?
【发布时间】:2012-06-06 23:28:16
【问题描述】:

使用 x86 程序集,我需要定义一个填充了递增值的数组。目前,我将它定义为一个空数组,并在运行时通过循环它并设置我在每一步递增的值来填充它。这看起来像这样;

myArray DB 10 DUP (0)
...
xor ax, ax
xor bx, bx
mov cx, 10
initArray:
  mov myArray[bx], ax
  inc bx
  add ax, 43
loop initArray

数组的增量值和大小在运行前都是已知的,所以我可以通过直接在代码中定义值来做到这一点,就像这样......

myArray DB 0, 43, 86, 129, ...

...但这需要一段时间,尤其是长数组。

现在回答问题;我想知道是否有办法在汇编中创建这样的数组,比如 C 中的参数化宏?如果你愿意的话,相当于“#define myArray(x) (x*43)”。

【问题讨论】:

  • 你用的是什么汇编程序? MASM、NASM、TASM 等
  • 对了,忘记说了。我正在使用 TASM 4.1。
  • 好吧,既然您已经编写了代码,我只想查看宏的 TASM 规范并将其合二为一。

标签: arrays string assembly macros x86


【解决方案1】:

我认为您的模式太先进了,预处理器无法支持。为什么不直接编写一个生成它的脚本并将其包含在您的构建过程中呢?您可以使用 TASM 的包含宏来包含它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多