CODE学习笔记六——自动操作 2 :顺序访问地址与累加存储

目录

自动加法器

RAM与控制面板

在之前的章节里我们构建了存储器,RAM、选择器与控制面板(就是机械开关手动输入)稍加组合不难可以得到这样的组件

(控制面板由takeover开关控制数据是由手动输入还是传输)

自动加法器1


振荡器和计数器输出的16位数据按位增加,对RAM进行顺序访问,访问结果一次输入加法器锁存器中,以上电路有一个基础:振荡器的频率需要低于后续部件联合运转的最低频率。
清零开关是电路初始化的开关,以上便可以在输入大量数据后进行自动累加啦!

自动加法器2

以上的加法器显然功能单一,虽然迈出了很大的一步,但是开关一压,就成了不可控的状态,它会无休止的运转下去。而且只能一个地址一个地址的操作下去。
我们还可以在哪里改进呢?

把锁存器的结果反过来储存在RAM里

地址数据地址数据地址数据地址数据
0000h:27h0001hA2h0002h:18h0003h:结果
0004h:1Fh0005h:89h0006h:结果
0007h:33h0008h:2Ah0009h55h0010h:结果

要实现上述的操作,我们需要在以下这几个功能

操作操作码
Load(加载)10h
Store(保存)11h
Add(加法)20h
Halt(停止)FFh

为了让这几个功能能控制加法器的自动操作,我们需要再加几个部件

通过2-1选择器可以实现Load和Add指令的区分;
W决定Store指令的实现与否;
W与2-1选择器可以决定Halt指令的执行;

自动加减法

如果还记得笔记二的内容,那么我们可以再给自动加法器加上减法功能

操作操作码
Load(加载)10h
Store(保存)11h
Add(加法)20h
Subtract(减法)21h
Halt(停止)FFh

实现如下

C0是控制加减的信号

解决进位问题

进位问题是一个遗留问题,我们希望用一种高效的方式解决进位问题,而不是粗暴的扩大存储;
很简单,保持架构不变,把大数拆成小数,只要解决好一个数俩部分运算时的进位和借位问题便可;
别忘了我们的加法器最低位也是有个进位输入的,只要我们把加法的进位输出保存在一个新加的进位锁存器里就可以了。(减法似乎也是用这个锁存器,回头实现了我再回来补吧)
这样我们就有了一个拥有七个操作码的小机器了

操作操作码
Load(加载)10h
Store(保存)11h
Add(加法)20h
Subtract(减法)21h
Add with Carry(进位加法)22h
Subtract with Borrow(借位减法)23h
Halt(停止)FFh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值