-6

我想在记事本中输入几个 1 和 0,另存为 something.exe,然后获取一个程序。显然,它不会很复杂。即使只是打个招呼也行。如何输出文本?如何暂停它以使其不会立即关闭?有没有人有资源说明这一切?

4

2 回答 2

3

我认为如果您使用文本编辑器,将二进制(一和零)或十六进制输入到文本文件中,然后编写一个小程序来读取该 ascii 文件并将其保存为您想要的二进制位或字节,我认为您会获得更好的体验. 基本上制作一个机器代码汇编器。

在进一步研究之前,您应该指定您感兴趣的处理器和操作系统。您不仅需要知道指令集的操作码/机器码,还需要知道操作系统的二进制文件格式(coff、elf、exe 等),并且需要手动编码所有这些信息(更适合如果需要,让您的机器代码汇编器为您创建该标头)。

以http://github.com/dwelch67/lsasim为例,这是一个带有我创建的模拟器和工具的教育指令集。“二进制文件格式”是带有可读十六进制机器代码的 ascii 文件。模拟器读取并执行它,如果需要(这是我最初测试它的方式),您可以手动编写机器代码而不是汇编语言。我没有操作系统等,读取机器代码文件的解析器将其转换为二进制 1 和 0 的缓冲区,这是处理器的模拟内存。

在过去的 dos 和 windows 中,调试命令行程序使这种事情变得容易,手工编码汇编或机器代码字节,当您保存时,您可以轻松地保存到 .com 可执行文件。我敢肯定我不是唯一一个使用调试学习 x86 汇编语言的人,因为我买不起像 masm 这样的软件工具,并且没有调制解调器来获取流行的免费汇编程序是 asm86 或类似的东西(直到几年后我买得起其中之一)。如果调试仍然是 Windows 命令行的一部分,那么您今天可能仍然可以使用该工具执行此操作。

于 2012-03-17T02:02:45.963 回答
0

您需要首先确定它将在其上运行的特定处理器,以及一个环境(原始 CPU、某些操作系统、其他)。您需要从环境中确定正确的二进制格式。您需要从 CPU 确定实际的机器语言。您还需要确定其他几件事。

你的问题也可能是“生命从何而来?” -- 是的,可以通过简单的问答论坛回答,但没有任何有用的结果。如果您想进一步学习,您可以考虑参加计算机组织的课程(或只是阅读一本书),专注于汇编语言细节。从那里开始,学习将程序集转换为机器代码并不遥远(尽管仍然需要学习很多东西)。

于 2012-03-16T20:22:29.483 回答