Binary 可以用二进制语言编程吗?
标题真的说明了一切。我的一个朋友告诉我,他认识一个能用二进制编程的人。我从来没有听说过有人用二进制编程,一些快速的谷歌搜索没有返回任何有用的东西。所以我想我应该转向So社区。是否有人有任何关于二进制编程的信息,如果可能的话,也许有一个快速的Hello World示例。提前谢谢。当然。它通常被称为。它基本上没有记忆装置。熟悉汇编程序的人可以通过额外的努力在机器代码中编程,根据需要参考操作码清单(例如) 我会这么做吗?不。即使是组装也只在极少数情况下有用,而且没有理由(除了展示你的技能)拒绝客户的帮助Binary 可以用二进制语言编程吗?,binary,Binary,标题真的说明了一切。我的一个朋友告诉我,他认识一个能用二进制编程的人。我从来没有听说过有人用二进制编程,一些快速的谷歌搜索没有返回任何有用的东西。所以我想我应该转向So社区。是否有人有任何关于二进制编程的信息,如果可能的话,也许有一个快速的Hello World示例。提前谢谢。当然。它通常被称为。它基本上没有记忆装置。熟悉汇编程序的人可以通过额外的努力在机器代码中编程,根据需要参考操作码清单(例如) 我会这么做吗?不。即使是组装也只在极少数情况下有用,而且没有理由(除了展示你的技能)拒绝客户的帮
既然你问起了hello world,你应该退房。他展示了如何编写并优化x86 ELF程序来输出它。它最初是用十六进制编辑器编写的,后来在十六进制编辑器中进行了修改。不再需要它了,但它已经完成了。曾经有一段时间,代码可以从前控制台以二进制形式输入到系统中。它容易出错
我曾经有一个用ASCII编码的非常短的uudecoe程序,它可以作为Uudeco编码文件的前缀。生成的文件将是自解压的,可以通过电子邮件发送。我希望机器代码是手工完成的。我找不到它,即使我能找到它也没有用。当然,你可以为机器代码写二进制,然后通过十六进制键盘将机器代码输入计算机。我已经组装了一台基于TMS1100的计算机 在十六进制LED上显示5的一个简单程序将是000100000100000001,以二进制形式写入,转换为机器代码为851。然后,该程序将运行并在LED上显示5 对于使用TMS1100的更复杂的程序,您可以遵循此过程,我猜是用二进制编程
事实上,如果你对数学和编程感兴趣,我认为这是非常令人满意和有益的。对于勇敢的人来说:你可以尝试获取一张MikeOS软盘图像并运行monitor.bin程序。它允许您手动输入十六进制操作码并执行它们。例如(如文件所述),输入以下说明:
BE0790 E8FD6F C3 4D00$
将在屏幕上生成一个M
。
有一些深奥的编程语言。它们被用作实验,而且相当不切实际,但其中一个名为BrainF**k(是的,它实际上是一个真实的东西)使用八个不同的字符来修改字节值。这些类型的语言几乎是你能得到的最接近的语言。记忆相当于汇编指令的机器代码是非常有可能的。实际上,在用汇编语言编写代码时,经常会通过s、s等看到十六进制代码。因此,随着时间的推移,一些指令可以以十六进制形式存储,而无需任何额外的努力
- 图中显示了6502 ROM监视器,其中十六进制代码和汇编助记符并排显示
OPCODE HEX
LDA #imm 0xA9 imm
STA adr 0x85 adr
STA (adr),Y 0x91 adr
LDY #imm 0xA0 imm
在只记忆上述操作码的情况下,我们可以只使用纸和笔编写以下机器码:
0xA9 0x00
0x85 0x01
0xA9 0x02
0x85 0x02
0xA0 0x00
0xA9 0x01
0x91 0x01
实际上,上面是以下助记符形式的汇编代码:
LDA #00
STA $01
LDA #02
STA $02
LDY #00
LDA #01
STA ($01), Y
- 上面的代码在assembler/emulator的屏幕左上角放置了一个白色像素,请继续尝试李>
101
将是4+0+1=5
。它可以这样可视化:
1 1 1 1 --> binary points
| | | |
v v v v
8 + 4 + 2 + 1
| | | +---> 2^0 * 1 Ex: 13 is 8 + 4 + 0 + 1
| | +-------> 2^1 * 1 1 1 0 1 -> 1101 (0xD)
| +-----------> 2^2 * 1 Ex: 7 is 0 + 4 + 2 + 1
+---------------> 2^3 * 1 0 1 1 1 -> 0111 (0x7)
考虑到这一点,并且经过充分实践,以下内容应该是可能的:
LDA #00 -> 0xA9 0x00 -> 1010 1001 0000 0000
STA $01 -> 0x85 0x01 -> 1000 0101 0000 0001
LDA #02 -> 0xA9 0x02 -> 1010 1001 0000 0010
STA $02 -> 0x85 0x02 -> 1000 0101 0000 0010
LDY #00 -> 0xA0 0x00 -> 1010 0000 0000 0000
LDA #01 -> 0xA9 0x01 -> 1010 1001 0000 0001
STA ($01),Y -> 0x91 0x01 -> 1001 0001 0000 0001
有了一些复古计算的精神、动机和乐趣,我们实际上可以用二进制编写整个代码,而不必写下中间步骤
另一方面,保罗·艾伦(Paul Allen)在飞机上用纸和笔为Altair 8800编写了一个引导加载程序,可能还需要用纸和笔将其翻译成二进制:当然可以。请一位朋友的这位朋友举个例子。;-)类似于[我可以直接用二进制写一个程序吗?我怎样才能让计算机执行它?]()。$ad xx yy$20$ff$d2或其他什么的。顺便说一句,这是我在lda$xxyy jsr$ffd2上的尝试,我想它会在c64或vic 20上打印一些东西。@time4tea那是汇编,不是二元的……我想我会称之为一种技能,就像我会称之为能够用舌头触摸鼻尖一样;有趣而且基本上没用。@Adam,是的。我本来打算写“除了炫耀”,但听起来有点刺耳。不管怎样,我们都喜欢偶尔炫耀一下是的,这更多的是一个“不感兴趣”的问题,而不是一个实际问题。我从来没有真正打算使用它。我只是想看看这是否可能,以及它会是什么样子。历史观点+1。显然,在早期的计算机上,有些情况下只能通过前面板输入代码。