【问题标题】:how to make a macro work in flat assembler如何使宏在平面汇编器中工作
【发布时间】:2015-02-25 11:32:52
【问题描述】:

我想使用平面汇编器 (FASM) 测试一个小型汇编程序,但是在使用宏时遇到了问题:


scount    =     0
smult     =     320
label screenoff word
rept 200
dw        smult*scount
scount    = scount + 1
endm

任何人都可以使用平面汇编程序帮助我使其工作吗? 它应该创建一个包含 200 个单词的数组(标签中定义的单词,使用 rept 指令重复 200 次)。

我收到Error: unexpected characters when trying to compile in flat assembler vers. 1.71.22 (editor vers 3.11 beta 3, interface version 0.97.01)。 错误在dw smult*scount 行中突出显示。

我们将不胜感激。

【问题讨论】:

  • 它与 DOSBox 0.74 一起在 Turbo Assembler (TASM vers. 1.4) 中工作,但是我想在不使用 DOSBox 的情况下进行构建,这就是我尝试使用平面汇编器的原因——也许 TASM 可以与 C::B 一起使用——有什么建议吗?
  • 咨询FASM manual。宏应该被{}包围,你想要rept的部分也是如此。

标签: windows assembly fasm


【解决方案1】:

您缺少实际开始宏定义的第一行。
看说明书吧!

...  <-- Missing here
scount    =     0
smult     =     320
label screenoff word
rept 200
dw        smult*scount
scount    = scount + 1
endm

编辑

变体 1 - 与 SetupArray200 一起使用

macro SetupArray200 { times 200 dw (%-1)*320 }

变体 2 - 与 SetupArray200 一起使用

macro SetupArray200
 {
  repeat 200
   dw (%-1)*320
  end repeat
 }

带参数的变体 3 - 与 SetupArray 200,320 一起使用

macro SetupArray scount,smult
 {
  repeat scount
   dw (%-1)*smult
  end repeat
 }

【讨论】:

  • 它是一个标签宏,在使用 TASM 时它确实有效,但是您建议写成什么作为 start ?
  • @serup 我在回答中添加了一些示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 2013-11-14
  • 2016-02-27
相关资源
最近更新 更多