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

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

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

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

要是保留000Ch地址处的Halt指今,我们能寻求到更好的解决办法吗?

不过,我们可以用个称为Jump(跳转)的新指令来替换Halt指令。现在把它加入到指令表。

通常情况下自动加法器是以顺序方式对RAM降列寻址的。Jump指令改变了机器的这种寻址方式,取而代之的昆从某个指定的地比始寻址。这种指令有时也被称作分支(branch)指令或者Goto指令,即“转到另↑位置”。

在上面的例子中,我们可以用↑Jump指令来替换000Ch地址外的Halt指令。

$$
\begin{array} { r } \mathrm { ( ) 0 0 0 C h : } \left[ \begin{array} { c } { \vdots 0 0 \displaystyle \lambda } \\ { \vdots \displaystyle \lambda } \\ { \left[ 0 0 \displaystyle \lambda \right] } \\ { \displaystyle - \frac { 1 } { 2 0 0 \displaystyle \lambda } } \end{array} \right] \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { Z } \mathbb { H } \mathbb { Z } \mathbb { H } \mathbb { Z } \mathbb { O } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \mathbb { H } \end{array}
$$

30h即Jump指令的代码。其后的两个字节中存放的16位地址就是自动加法器要执行的下一条指令的地址。

因此在上面的例子中,自动加法器仍然从0000h地址开始,依次执íT一条Load指令,一条 Add 指令,一条Subtract 指令和—条 Store 指令。之后执行一条 Jump 指令,跳转至地址 0020h 继续依次执行一条Load 指令,两条 Add 指令,条Store指令,最后执行-条Halt 指令。

Jump指令通过作用于16位计数器实现其功能。无论何时,只要自动加法器遇到Jump指令,计数器就会被强制输出该Jump指令后的16位地址。这可以通过16位计数器的D型边沿触发器的预置(Pre)和清零(Clr)输入来实现:

编码—-隐圈在计算机软硬件背后的语言

238