OUT(输出)指令把累加器中的内容写入到紧跟该指令后的字节所寻址的端口(port)。IN(输入)指令把一个字节从端口读入到累加器。它们的格式如下所示。
外围设备有时候需要获得处理器的注意。例如,当你按下键盘的某个键时,处理器应该马上注意到这个事件。这个过程由一个称为中断(interrupt)的机制实现,这是一个由外围设备产生的信号,连接至8080的INT输入端。
但是,当8080复位后,就不再响应中断。程序必须执行EI(Enable Interrupt)指令来允许中断,然后执行DI(Disable Interrupts)禁止中断。这两条指令如下所示。
8080的INTE输出信号用来指明何时允许中断。当外围设备需要中断微处理器的当前工作时,它需要把8080的INT输入信号置为1。8080通过从存储器中取出指令来响应该中断,同时控制信号指明有中断发生。外围设备通常提供下列指令来响应8080微处理器。
上面列出的这些指令都称作Restart(重新启动)指令,在其执行的过程中也会把当前 PC 中的数据保存到堆栈,这一点与 CALL 指令类似。但 Restart 指令在保存 PC 数据之后会立刻跳转到特定的地址,而且是根据参数的不同将跳转到不同的地址:比如RST0将跳转到地址 0000h处,RST1将跳转到地址 00008h处,依此类推,最后的RST7将跳转到地址0038h处。这些地址存放的代码都是用来处理中断的。例如,由键盘引起的中断将执行RST4指令,程序将跳转到地址0020h处,该地址存放的代码将负责从键盘读入数据(完整的过程将在第21章讲述)。
编码隐匿在计算机软硬件背后的语言
300