要是保留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