【问题标题】:64 Bit Assemblers issue64位汇编器问题
【发布时间】:2011-07-06 23:17:04
【问题描述】:

(win7 64位编码)

我昨天开始在汇编中编码,我下载了平面汇编。 现在,当我编译代码时,我得到一个 .fas 文件和一个 .bin 文件。

所以我听说您将它们的扩展名更改为 .exe 或 .com,这就是您构建的代码。 但是当我运行它时,我得到一个错误,因为我正在尝试运行一个 32 位应用程序。

我试过了:

  1. 通过文件属性将文件执行更改为 32 位(从 google 读取),但那里有这样的选项。

  2. 不同的汇编程序 - 许多。我试过 NASM 64 位,同样的问题。就像另外 2 个我已经删除了,因为它们不起作用。

谁能给我一个可以工作的 64 位汇编程序的下载链接?我整天都在找 1 :(

另外,如果它有一个拆卸选项,那就更好了,但不是必需的。

顺便说一句,我更喜欢一个也有 IDE 的汇编器(就像 FASM,你在程序中编码,它会在你编译时通知你错误),而不像 NASM,它只是一个汇编器。

我还有一个问题: 我发现了许多 32 位汇编器指南,但 64 位的则少得多。我也应该向 32 位学习吗?我假设只有 64 位指令,我不会在这些指南中找到,但只要在 64 位编码时所有现有的 32 位指令都是平等的,我就可以了。那么,是吗?

而且...如果有人有好的 x64 指南,如果他能在此处发布链接,我将不胜感激。

提前致谢。

【问题讨论】:

  • 它创建了一个 32 位的 excetuion 文件,我无法在我的 PC 上运行。

标签: assembly


【解决方案1】:

您必须链接生成的二进制文件。对于 NASM (Netwide Assembler),您可以指定输出格式,但 it defaults to bin if you don't supply the argument

只需指定nam -fwin64 ... 选项。有关 NASM 中的 Windows-64 位汇编器的更多信息,请参阅section 7.6 of the NASM manual

【讨论】:

  • 刚试过“nasm C:/first.ASM -fwin64 -o C:/first.EXE”,输出文件仍然显示这个 32 位错误。我现在就看说明书。
【解决方案2】:

FASM 确实支持 x64。你读过manual吗?你看过 *EXAMPLES\WIN64* 中的例子吗?

【讨论】:

  • 谢谢,我已经阅读并使用了“format PE64”指令,但是当我运行 exe 时它崩溃了……(“...exe”已停止工作)
  • 听起来仍然是您的程序中的问题,而不是汇编程序中的问题。也许您应该发布遇到问题的代码。
  • 嗯我不这么认为,因为我认为这可能是原因,所以我创建了一个新的 .ASM 文件,其中包含以下内容: format PE64 然后简单地“mov al, 08” 和这个问题还是来了。
  • [format PE64 / mov al,08 / ret] 在这里工作得很好。 FASM 1.69.31,w7 x64 专业版。
  • 我在 google 中找不到你的版本,但是 1.69.31 也是我的,只是不知道它是不是 x64。顺便说一句,我在代码底部添加了指令“ret”,并且在一个简单的代码中它确实有效。但是当使用“int”指令时,它仍然“停止响应”。你能给我一个你的版本的链接吗?我试试看。
猜你喜欢
  • 2010-10-09
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多