在我的一堂课中,我们从头开始学习计算机体系结构和编程。这意味着我们从 pMOS/nMOS 电路开始,然后转到逻辑门,然后使用逻辑门制作寄存器和组合逻辑单元,然后分析了一个小型微处理器架构(LC-3,在我的课堂上)。
我们做的下一件事是用汇编语言编写程序,这让我有点困惑。
举个例子:
ADD R0, R1, R2
它应该添加寄存器 1 和 2 的内容并将其存储在寄存器 0 中。作为机器字(在我们在课堂上学习的架构中),这条指令将是0001 000 001 000 010
,我在某种程度上理解该二进制字如何然后将其转换为电压信号,该信号在处理器中的各种多路复用器和控制单元中设置适当的值。
我的问题是,汇编程序如何ADD R0, R1, R2
转换为?0001 000 001 000 010
对于以我的理解水平的人来说,这个过程似乎类似于编译更高级别的语言。但是这里不可能没有编译器,因为没有比汇编更基本的语言来编写编译器了!
换句话说,如果程序本身不能用汇编语言编写,如何编写程序来汇编汇编代码。它是由某个天才直接用二进制编写的,然后硬编码到处理器的程序内存中吗?我很难想象一种编写汇编程序的实用方法,而不是可以由微处理器直接执行。