8080芯片的微处理器的内部除累加器外还设置了6个寄存器(register),每个寄存器可以存放一个8位的数。这些寄存器和累加器非常相似,事实上累加器被视为一种特殊的寄存器。这6个寄存器和累加器一样,本质上都是锁存器。处理器既可以把数据从存储器读入寄存器,也可以把数据从寄存器存回存储器。当然,其他的寄存器没有累加器所具有的丰富的功能,例如,当把两个8位数相加时,其结果总是保存到累加器而不会保存到其他寄存器。
在8080中用B,C,D,E,H和L来表示新增的6个寄存器。人们通常会问以下两个问题:“为什么不使用F和G来表示?”,以及“I,J和K用来代表什么?”答案是,使用H和L来命名寄存器是因为它们具有特殊的含义,H可以代表高(High)而L可以代表低(Low)。通常把两个8 位的寄存器H和L 合起来构成一个16 位的寄存器对(registerpair),称做HL,H用来保存高字节而L用来保存低字节。这个16位的值通常用来对存储器寻址,我们将在下面看到它是怎样以简单的方式工作的。
寄存器是计算机必不可少的部件吗?为什么在第17章搭建的计算机中并没有寄存器的踪迹?从理论上讲,这些寄存器不是必需的,在第17章也没有用到它们,但在实际应用中使用它们将带来很大的方便。很多计算机程序都同时用到多个数据,将这些数据存放在寄存器比存放在存储器更便于访问,因为程序访问内存的次数越少其执行速度就越快。
在8080中有一条指令至少用到了63个操作码,这条指令就是MOV,即Move的缩写。其实该指令是一条单字节指令,它主要用来把一个寄存器中的内容转移到另一个寄存器(也可能就是原来的寄存器)。因为8080微处理器设计了7个寄存器(包括累加器在内),因此应用中使用大量的MOV指令是很正常的。
下面列出了前32条MOV指令。再一次提醒你,两个参数中左侧的是目标操作数,右侧的是源操作数。
19 两种典型的微处理器
281