2014-09-27 58 views
0

我在32位windows xp的平面汇编程序中编写了几个程序。但现在我有64位Windows 8,我无法运行.com文件,因为它们似乎与64位版本不兼容(程序是32位)。在win8上使用的转换程序集

我该如何转换它,以便我可以在win8中运行它?也许使用不同的汇编器?

我想避免模拟器和虚拟机的需要。

+0

编码类似,但COM文件运行的API - 特别是int21h和其他中断 - 不适用于64位操作系统。 – 2014-09-28 01:03:31

+0

Google:“fasm 64bit exe”表示FASM支持论坛'flat assembler> Windows> Hello world on x64' has a answer,see http://board.flatassembler.net/topic.php?t=14034 – xmojmr 2014-09-28 06:32:32

回答

2

一个.com文件是16位。您可以使用32位指令和寄存器,但它是16位代码。一旦64位CPU处于“长时间模式”,它不支持vm86,这是XP用来运行.com文件的。责怪AMD,而不是MS(这次)。使用仿真器(DosBox等)或将您的代码转换为32位(应该在64位操作系统上运行)

+0

我可以使用32位指令和寄存器在16位文件?有趣...无论如何,我已经说过我想避免使用模拟器,所以你如何建议我转换它? – zoran404 2014-09-28 00:04:53

+0

我不熟悉Fasm。 '格式PEexe'或者其他的,我想。 – 2014-09-28 00:40:46

+2

我应该扩展说,如果你使用DOS中断(你几乎可以肯定这样做),你将不得不将它们转换成Win API。 “如何”超出了评论的范围。你可能会发现你比替代品更喜欢模拟器。 – 2014-09-28 00:54:11

相关问题