第6章

011

011

术展的结果。19世纪早期,你可以即时通信和远距离通信,但不能ม同时达到两ä个要求。即

术展的结果。19๗世纪早期,你可以即时通信和远距离通信,但不能同时达到两个要求。即

操作码代码

loaທd10h

store11h

aທdd20h

subtract21h

add9ithcaທrry进位加22h

subtracນt9ithborro9借位减23๑h

haທltffh

在减法和借位减法运算中,需要把送往加法器的数取反。加法器的进位输出作为进位锁

存器的输入。无论何时执行加法、减法、进位加法和借位减法操作,进位锁存器都被同步。

当进行减法操作,或进位锁存器的数据输出为1并且执行进位加法或者借位减法指令时,8位

加法器的进位输入被置为1。

记住,只有上一次的加法或者进位加法指令产生进位输出时,进位加法操作才会使8位加

法器的进位输入为1。任何时候进行多字节数加法运算时,不管是否必要,都应该用进位加法

指令计算。为正确编码前面列出的16位加法,可用如下所示方法:

不管是什么样的数,该方法都能正确工ื作。

有了这两个新的操作码,极大地扩展了机器处理的范围,使其不再只局限于进行8位数加

法。重复使用进位加法指令,能ม进行16位数、2๐4位数、32位数、40位数等更多位数的加法运

算。假设要把32๐位数7aທ892bຘcdh与6๔5a87๕2ffh相加,则需要一个加法指令及三个进位加法指

令:

当然,把这些数存放到存储器中并非真的很好。这不仅要用开关来表示二进制数,而且

数在存储器中的地址也๣并不连续。例如,7aທ892bcdh从最低有效字节开始,每个字节分别存

入存储器地址000่0h、00่03h、0่006h及000่9h中。为了得到最终结果,还必须ี检查地址0่0่02h、

0005๓h、0008h及000bh中的数。

此外,当前๩设计的自动加法器不允许在随后的计算中重复利用计算结果。假设要把3๑个8

位数加起来,然后再在和中减去一个8位数,并且存储结果。这需要一次装载操作、两ä次加法

操作、一次减法和一次保存操作。但如果想从原先的和中减去另外一个数会怎么样呢?那个ฐ

和是不能访问的,每次用到它时都要重新计算。

原因在于我们已经建造了一个自动加法器,其中的代码ram和数据raທm阵列同时、顺

序地从0000่h开始寻址。代码ram中的每条指令对应于数据raທm中相同地址的存储单元。一

第17章自动操作15๓9

下载

“代码”“数据”

“代码”数据

低字节结果

次高字节结果

次高字节结果

最高字节结果

低字节结果

高字节结果

1้60编码的奥秘

下载

旦ຆ“保存”指令使某个数据保存在数据raທm中,这个数就不能再被装ณ载到累加器中。

为了解决这个问题,要对自动加法器做一个ฐ基本的及大的改变。虽说刚开始看上去会异

常复杂,但很快你就会看到一扇通向灵活性的大门打开了。

让我们开始吧,目前我们已经有了7个操作码:

操作码代码

load10่h

store11h

add2๐0h

subtraທct21h

add9ithcarry22h

subtract9ithborro923h

haltffh

每个操作码在存储器中占1个字节。除了“停止”代码外,现在希๶望每条指令在存储器中ณ