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

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

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

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

Add,Subtract,Add with Carry,Subtract with Borrow指令来说,该地址指明的存储单元所保存的是要从累加器中加上或减去的字节。对于Store指令来说,该地址指明的是累加器中的内容将要保存到的存储单元地址。

例如,当前加法器所能进行的最简单的运算就是对两个数求和。为了执行这个操作,需要按下面的方式设置代码RAM阵列和数据RAM阵列。

$$
\begin{array}{c} \begin{array} { r l } { { 4 } \overrightarrow { 1 } \overrightarrow { 1 3 } } & { { } } \\ { 0 . 0 0 0 \mathbf { h } \colon [ \begin{array} { l } { 1 0 \mathbf { h } } \\ { 1 0 \mathbf { h } } \end{array} ] \mathbf { L o a d } } & { { } } \\ { [ \begin{array} { l } { 2 0 \mathbf { h } } \\ { 2 0 \mathbf { h } } \end{array} ] \mathbf { A d d } } & { { } } \\ { [ \begin{array} { l } { 1 1 \mathbf { h } } \\ { \mathrm { F F h } } \end{array} ] \mathbf { S t o r e } } \end{array} & { { } } \end{array} \begin{array} { r l } { \underbrace { \frac { 4 \mathbf { k } + \mathbf { B } } { 2 \mathbf { k } } } _ { \begin{array} { l } { 0 . 0 0 0 \mathbf { h } \colon [ 4 \mathbf { A } \mathbf { h } ] } \\ { 0 . 5 \mathbf { h } } \end{array} } } \\ { [ \begin{array} { l } { 1 0 \mathbf { h } } \\ { \mathrm { F r h } } \end{array} ] \mathbf { H } \mathbf { a d t } } & { { } } \end{array}
$$

在改进的自动加法器中,每条指令(除了Halt指令)需要3个字节。

每一条指令的代码(除了Halt指令)后跟两个字节,用来指明数据RAM阵列中16位的存储地址。这三个地址恰巧是0000h,0001h和0002h,但它们可以是任何其他可用的地址。

前面讲到了如何用 Add 或 Add with Carry 指令来对两个 16 位数—比如 76ABh 和232Ch求和。必须把两个数的低字节保存到存储器的0000h和0001h地址,把其高字节保存到0003h和0004h地址,运算的结果分别保存在0002h和0005h。

通过这种变化,我们可以用一种更合理的方式来保存这两个操作数及其运算结果,

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

232