0

有没有办法使用纯 x86 英特尔操作码而不是汇编助记符和指令编写程序,然后使用 ML 和 LINK 编译它。例如,如果我尝试写一个 55 而不是 push ebp ML 认为它是一个整数。它是否需要特殊的编译器,或者您将如何编写操作码程序并编译它。

4

3 回答 3

2

您可以使用db

db CDh,19h

调用中断 0x19。

于 2010-10-22T23:02:58.647 回答
0

汇编程序的工作是将助记符转换为二进制值。x86 是一个历史悠久的 CISC 指令集,因此这种翻译很难手动完成。

链接过程更糟糕,它创建了最终的可执行文件,这意味着创建了许多结构。这要手动执行和维护要困难得多。

如果您真的想使用操作码编写一些东西,请使用十六进制编辑器(或者甚至是记事本,如果您知道所有 ASCII 代码 :))并编写一个 .COM 程序。任何更复杂的(.exe)都将是矫枉过正。

于 2010-10-22T23:17:16.623 回答
0

简短的回答是可以只使用操作码来编写程序。正如smilethax 所展示的,您仍然需要一个汇编程序或其他工具来输出每个操作码的二进制值。

您将需要参考英特尔文档以找出每个组装记忆的操作码。此信息包含在英特尔(R) 架构软件开发人员手册第 2 卷:指令集参考手册中。

于 2010-10-22T23:18:38.917 回答