接下来我们来认识一下各种各样的指令。下面两条指令的特点是操作码后面都跟着2字节的地址,第一条指令把HL寄存器对的内容保存到该地址,第二条指令把该地址的内容加载到HL寄存器对。
寄存器L的数据保存在地址 aaaa,而寄存器H的数据保存在地址 aaaa+1。
下面的两条指令把寄存器对HL保存的数据加载到程序计数器和堆栈指针。
PCHL指令本质上是一种 Jump指令,它把HL保存的存储器地址加载到程序计数器,而8080处理器要执行的下一条指令就是程序计数器所指明的存储器地址中存放的指令。SPHL指令可以作为另一种为堆栈指针赋值的指令。
下面的两条指令中,第一条将HL保存的数据与堆栈顶部的两个字节进行交换;第二条指令将HL保存的数据和寄存器对DE保存的数据进行交换。
除了刚讲过的PCHL指令外,目前为止还没有介绍过8080的跳转指令。如第17章所述,在处理器中专门设置了一个称为程序计数器PC的寄存器,它用来保存处理器将要取出并执行的指令的存储地址。通常,处理器在PC的指引下顺序执行存储器中存放的指令,但有一些指令,如Jump(跳转)、Branch(分支)或Goto(无条件转移)——使处理器脱离原来的执行顺序。这些指令使PC重新加载另外的值,处理器要执行的下一条指令存放于存储器的其他位置,而不在按原来的顺序寻址。
当然,原始的普通跳转指令的确有一定的作用,但从第17章得来的经验可以知道,条件跳转(conditionaljump)指令的作用更大。条件跳转指令使处理器根据某些标志位的值转移到特定的地址,这些标志位可以是进位标志位CF、零标志位ZF等。正是由于条件跳转指令的引入,第17章所设计的自动加法器才成为一般意义上的数字计算机。
编码—隐匿在计算机软硬件背后的语言
296