ASM是否存在不够底层的情况?毕竟,汇编语言仍需要汇编。有没有人曾经直接使用二进制编写程序呢?我只是想知道,是否存在理论上的原因使这样做变得实用,或者即使在现代计算机上也可能如此。
ASM是否存在不够底层的情况?毕竟,汇编语言仍需要汇编。有没有人曾经直接使用二进制编写程序呢?我只是想知道,是否存在理论上的原因使这样做变得实用,或者即使在现代计算机上也可能如此。
回到1997年的时候,当我在学校没有连接电缆时,我曾经在TI-83计算器上做过这个。
通常情况下,你只需要编写一个汇编程序,使用TASM进行构建,然后通过连接电缆将其传输到计算器中。但是如果我感到无聊并想组合一些小东西,我已经记住了足够的字节指令来输入某些操作。
顺带一提 如果程序有漏洞,这当然是很有趣的,因为它可以轻松地破坏整个计算器的RAM。那么你就得按住ON按钮和/或拿掉AAA电池,希望这足以恢复计算器(除了存储在内存中的任何程序)。否则要进行硬重置,就必须使用螺丝刀解开一个特殊的备用电池。好时光......
历史原因: 您正在运行需要在前面板上切换其引导代码的机器。(是的,这是在前几代机器中经常做的。)
与您想要的现代原因不同: 当您编写汇编程序时,必须弄清该过程。
我记得曾经看到Woz在机器语言中编写了第一版Apple BASIC(是针对Apple I还是Apple II我不确定)。在他们拥有存储设备之前,你需要在监视器中输入十六进制代码。
我没有汇编器来编写我的八位Atari,所以我直接编写了机器码。要从BASIC启动代码,您可以将代码编写为十进制数据字节或字符串形式。(是的,您实际上可以在字符串中编写代码,您无法键入的256个字符代码中唯一的字符代码是155-返回的代码。幸运的是,没有6502机器码指令具有该值,因此只有当分支恰好向后101个字节(-101 = 155)时才会出现问题。)
我仍然记得一个常见的启动计时器的代码片段:
104 (pla)
169, 7 (lda #7)
162, 6 (ldx #6)
160, 10 (ldy #10)
76, 92, 228 (jmp 0xE45C)