奎克的藏经阁 · 原书印刷页

编码 隐匿在计算机软硬件背后的语言 · 第 229 页

PDF 物理页索引 245 · 编码隐匿在计算机软硬件背后的语言

书名
编码 隐匿在计算机软硬件背后的语言
作者
未记录
印刷页
229
PDF 物理页
245(从 0 开始)
章节
编码隐匿在计算机软硬件背后的语言
UUID
38270854-596f-4a26-8183-db8c968c6020
来源类型
original_book
页面 SHA-256
eb331bae22bdeb2d2f11ac1ecd537b5ff41b8ba1fcde08b80c02cee61c54c762

为了使用进位锁存器,还需要另一个操作码,我们称之为“进位加法”(AddwithCarry)。当进行8位数加法时,使用的是常规的Add指令。加法器的进位输入是0,它的进位输出将会保存到进位锁存器(尽管它根本不会被用到)。

如果要对两个16位的数进行加法运算,我们仍然使用常规的Add指令对两个低字节数进行加法运算。加法器的进位输入是0,而其进位输出被锁存到进位锁存器中。当把两个高字节数相加时,要使用新的Add with Carry指令。在这种情况下,两个数相加时要用进位锁存器的输出作为加法器的进位输入。因此,如果第一步低字节数的加法运算有进位,则该进位将用于第二步高字节数的加法运算;如果没有进位,则进位锁存器的输出是0。

如果要进行16位数的减法运算,则还需要一个新的指令,称为“借位减法”(SubtractandBorrow)。通常,Subtract指令需要将减数取反并且把加法器的进位输入置1。进位输出通常不是1,因此应该被忽略。但对16位数进行减法运算时,进位输出应该保存在进位锁存器中。在进行第二步的高字节减法运算时,锁存器保存的结果应该作为加法器的进位输入。

在加入了Add with Carry 和 Subtract and Borrow之后,目前我们已经有了 7 个操作码,如下表所示。

在执行减法或借位减法运算时,送入加法器中的操作数需要进行取反预处理。加法器的进位输出是进位锁存器的数据输入。无论何时,执行加法、减法、进位加法或借位减法中的任一种运算,进位锁存器都是同步的。当执行减法运算,或进位锁存器的数据输入为1且正在执行进位加法或者借位减法运算时,8位加法器的进位输入都是置1的。

17 自动操作

229