2014-09-27 45 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

相關問題