标题真的说明了一切.我的一个朋友告诉我,他知道有人可以用二进制编程.我从来没有听说过有人用二进制编程,一些快速的谷歌搜索没有返回任何有用的东西.所以我想我会转向SO社区.有没有人有关于二进制编程的任何信息,如果可能的话可能是一个快速的Hello World示例.提前致谢.
neu*_*sys 12
记住与装配指令等效的机器代码是非常可能的.实际上,当用汇编语言编写代码时,经常会看到通过机器代码监视器,反汇编程序,汇编列表等看到十六进制代码.结果,随着时间的推移,一些指令可以以十六进制形式存储而无需任何额外的努力.
你需要的第二个技能是将十六进制代码从头脑中翻译成二进制代码,这很简单,我会稍微解释一下.但是记住二进制等效的所有十六进制数字非常容易,其中有16个,毕竟(不多,不是吗?).
让我们假设它是1988年,我们花了近十年的时间将8位视频游戏移植到不同的平台上,并因此记住了以下6502十六进制代码指令,这些指令对应于汇编指令:
OPCODE HEX
LDA #$44 0xA9 0x44
STA $44 0x85 0x44
STA ($44),Y 0x91 0x44
LDY #$44 0xA0 0x44
Run Code Online (Sandbox Code Playgroud)
(或者在另一个生活中,假装它是1974年,我们的名字是保罗·艾伦,我们在飞往波士顿的飞机上,我们必须用笔和纸为Altair 8800写一个引导程序)
仅使用上面记录的操作码,我们可以仅使用笔和纸编写以下机器代码:
0xA9 0x00 0x85 0x01 0xA9 0x02 0x85 0x02 0xA0 0x00 0xA9 0x01 0x91 0x01
Run Code Online (Sandbox Code Playgroud)
实际上以上是以下助记符形式的汇编代码:
LDA #00
STA $01
LDA #02
STA $02
LDY #00
LDA #01
STA ($01), Y
Run Code Online (Sandbox Code Playgroud)
如果你以二进制形式记住每个十六进制数字,你可以用二进制编写整个代码.
但是如果你没有记住它们,或者不确定二进制形式是什么,可以使用以下技巧轻松转换它们:
1 1 1 1
| | | |
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)
Run Code Online (Sandbox Code Playgroud)
这有助于人们动态地编写二进制代码:
LDA #00 -> 0xA9 0x00 -> 10101001 00000000
STA $01 -> 0x85 0x01 -> 10000101 00000001
LDA #02 -> 0xA9 0x02 -> 10101001 00000010
STA $02 -> 0x85 0x02 -> 10000101 00000010
LDY #00 -> 0xA0 0x00 -> 10100000 00000000
LDA #01 -> 0xA9 0x01 -> 10101001 00000001
STA ($01),Y -> 0x91 0x01 -> 10010001 00000001
Run Code Online (Sandbox Code Playgroud)
凭借一些复古的计算精神,以及获得乐趣的动力,我们实际上可以用二进制编写整个代码而无需写下中间步骤.
没有太多的要求它,但它已经完成.曾经有一段时间可以从前端控制台将代码输入二进制系统.这很容易出错.
我曾经有一个非常短的uudecoe程序用ASCII编码,它可以作为UUEncoded文件的前缀.生成的文件将是自解压缩的,可以通过电子邮件发送.我希望机器代码是手工完成的.我找不到它,即使我可以也没有用它.
小智 7
当然,您可以为机器代码编写二进制文件,然后通过六角键盘将机器代码输入计算机.我把一台基于TMS1100的计算机放在一起.
在六角形LED上显示5的简单程序将是以二进制形式写入的0001000 0000101 0000001,转换为机器代码为8 5 1.然后该程序将运行并在LED上显示5.
您可以使用TMS1100对更复杂的程序执行此过程,我猜想使用二进制编程.
实际上,如果您对数学和编程感兴趣,我认为这是非常令人满意和有益的.
小智 7
对于勇敢的人:您可以尝试获取MikeOS软盘映像并运行monitor.bin程序.它允许您手动输入十六进制操作码并执行它们.例如(如文档中所述),输入以下说明:
BE0790 E8FD6F C3 4D00$将M在屏幕上生成单个.
