x86汇编语言:从实模式到保护模式(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 具有记忆功能的器件——寄存器

一般的电路,它们的工作都是非常直接的。在前面的图2-3中,一旦我们拉起开关,切断电路,灯泡立马就不亮了,这表明电线上传送的是数字0;相反,一旦我们闭合开关,接通电路,灯泡立马就亮了,这表明电路上传送的是数字1。

后来,人们发明了一个装置,叫作触发器。如图2-5所示,一个特制的触发器有一个输入端D,以及一个输出端Q。触发器的特点是它可以把输入保存起来,这叫作锁存。如果你想用眼睛观察触发器锁存的内容,可以在输出端连接一个灯泡。

图2-5 具有记忆能力的触发器

那么,触发器什么时候锁存呢?这是可以控制的。注意下面有一根导线和一个按键开关,按键开关和我们前边讲的那些开关不一样。按键开关有个特点:当你按下它时,它会接通电路;当你松手后,它又会弹起来断开电路。

这个按键开关用于决定是否锁存。平时,按键开关处于断开状态,触发器不会执行锁存动作,无论从输入端D来的是0还是1,都不会进入触发器内部,都不会被触发器内部的电路保存,更不会出现在输出端Q,即不影响输出端Q原来的状态。

但是,一旦我们按下按键开关,则触发器会立即执行一个锁存动作,不管输入端是0还是1,都会被触发器锁存起来,并立即出现在输出端Q。锁存之后,无论输入端D再怎么变化,都不会影响到锁存的内容,也不会影响输出端Q原来的输出,除非再次按下按键开关发送锁存命令。

一个触发器只能保存1比特。为了保存一个比较大的二进制数,如图2-6所示,可以使用若干个触发器,将它们组合在一起,这样就形成了一个新的器件,叫作寄存器(Register),或者叫作锁存器。

图2-6 用多个触发器组成的寄存器

寄存器是一个多输入、多输出的器件,它的两边都连着一排导线,左边的导线用来提供输入,右边的导线用来提供输出;下面的按键开关用来向组成寄存器的所有触发器发送锁存命令。

在图2-6中,输入端是二进制数字11000101。当我们按下按键开关时,这个数字立即被锁存。一旦输入的数字或者说电平被锁存,那么,即使这些输入撤销了也没有关系,因为它们已经被锁存在了寄存器内部。与此同时,锁存的数据也会通过输出端送出去。

如果需要,寄存器可以随时锁存新的数字,以前锁存的数字会被新的数字冲掉。从这个意义上来说,任何数字都是临时被保存在这里的,不会长久,属于临时性寄存。这就是“寄存器”一词的由来。