也许了解某个特定微处理器的功能的最好办法就是全面地测试其完整的指令集。
第17章最后完成的计算机仅包括12条指令。一个8位处理器的指令数很容易达到256,每一条指令的操作码就是一个特定的8位数(如果某些指令包含2字节的操作码,其指令集会更大)。8080虽然没有这么多指令,但是其指令数也已经达到了244。这看起来似乎是很多,但从总体上说,其功能并不比第17章的计算机强大。例如,如果想利用8080进行乘法或除法运算,你仍然需要自己写一小段代码。
在第17章曾经讲到过,为了方便地引用指令,我们为处理器的每一条指令的操作码都指派了一个特殊的助记符,而且其中的一些助记符是可以带有参数的。这种助记符只是在我们使用操作码时提供方便,它对于处理器是没有帮助的,处理器只能读取字节,对于助记符组成的文本的含义一无所知(为了讲解清楚,本书选用了Intel8080说明文档中用到的部分助记符为例来说明)。
第17章设计的计算机的指令集包括两条非常重要的指令,我们称之为加载(Load)和保存(Store)。每条指令占3个字节。在Load指令中,第一个字节是操作码,其后的两个字节是要加载的操作数的16位地址。当处理器执行加载指令时,会把该指定地址中的字节加载到累加器。与之相似,当Store指令被执行时,累加器中的内容被保存到该指令指定的地址中。
我们可以用助记符把上述代码简写为以下形式:
LOD A, [aaaa]
STO [aaaa], A
这里的A表示累加器(它既是Load指令的目的操作数也是Store指令的源操作数),aaaa表示16位的存储器地址,通常用4个16进制的数来表示一个地址。
同第17章的累加器一样,8080的8位累加器也记做A。8080也有与第17章的计算机的 Load指令和 Store 指令功能相同的两条指令,它们也称做加载(Load)和保存(Store)。在8080中,加载指令和保存指令的操作码分别是32h和3Ah,每个操作后面也同样跟着一个16位的地址。在8080中,它们的助记符分别是STA(Store Accumulator,表示加载到累加器)和LDA(Load Accumulator,表示保存到累加器):
编码隐匿在计算机软硬件背后的语言
280