我想了解计算机最初是如何工作的。我最初知道ENIAC这样的计算机,他们实际上必须以正确的顺序插入电线才能使程序执行。他们后来使用了打卡,最后提出了汇编语言。它只是用FORTRAN,COBOL等从那里向上构建。有没有办法在我的计算机上编译0和1。如果我打开textedit,并键入一个特定的0和1序列,那么我该如何制作一个二进制文件而不是一个带有ASCII字符序列的文本?我对任何方法持开放态度。 (免责声明:我知道用二进制做事情需要永远,我只想学习如何做非常基本的事情。)
答案 0 :(得分:3)
最简单的方法是,如果您愿意,可以在IDE中使用您选择的汇编程序。使用某种调试器(例如IDE),这样您就可以看到代码的效果,而无需写入控制台或文件。
不是仅将二进制文本写为文本数字,而是使用数据元素而不是指令编写完整的汇编程序源。
所以,而不是
.code
main proc
mov eax,5
add eax,6
main endp
end main
你可以写:
main proc
db 10111000b, 00000101b, 00000000b, 00000000b, 00000000b
db 10000011b, 11000000b, 00000110b
main endp
end main
db
表示定义字节,b
后缀表示二进制。
而且,有了这个,你就会被设置为作弊,但我不会告诉你如何问你所以我不会为你破坏这些乐趣。
对于使用MASM和Visual Studio 2015开始使用Windows,这是一个很好的tutorial。
答案 1 :(得分:1)
创建二进制数据流的方式在很大程度上取决于其目的。
二进制数据本身并不是很神奇。您可以使用任何十六进制编辑器并开始键入所需的二进制输入。
但现在这不是计算机编程的方式。如果您真的想要进入最低级别,可以查看汇编编程,这基本上允许您以更方便的方式告诉您的机器应该执行的确切指令。
但即使在这里你也没有多少乐趣。如果您希望能够实际执行您的程序并在显示器上看到某些结果,甚至可能在键盘输入中看到某些结果,那么代码将变得非常庞大且难以为人类编写和理解。
这就是我们使用编译器的原因。编译器从高级语言生成此类代码,无需一遍又一遍地编写最小的指令块。
如果您真的只想了解计算机原理如何工作,请为简单的CPU下载一些仿真器(可能有一个很好的GUI) 和它一起玩吧。 Edumips是用于教育目的的模拟器之一。