打孔纸带计算机运行原理

前言

最早期的计算机雏形采用打孔纸带作为程序,理解打孔纸带计算机运行原理有利于我们理解计算机CPU的运行原理,因为到目前为止,计算机的运行原理本质上没有变,都是运行0/1状态的计算。
本文引用了知乎的回答打孔纸带计算机运行原理,这里向回答者致敬,答案浅显易懂。

基本原理

打孔纸带编程的本质是基于机器码的程序。

场景举例

假定现在有一个简单CPU,其能运行10种指令,对应的二进制为:

halt 	-- 	0000
mov 	-- 	0001
add 	-- 	0010
and 	-- 	0011
or  	-- 	0100
xor 	-- 	0101
sub 	-- 	0110
shift 	-- 	0111
load	-- 	1000
store 	-- 	1001

同时,CPU带有8个通用寄存器,对应二进制如下:

r0		--	0000
r1		--	0001
r2		--	0010
r3		--	0011
r4		--	0100
r5		--	0101
r6		--	0110
r7		--	0111

程序功能及代码

  • 1、将 内存地址(ex:0x1a)放到寄存器0
  • 2、寄存器0的地址所对应的数据读取到寄存器1
  • 3、将另一个内存地址(ex:0x2c)放到寄存器0
  • 4、将寄存器0的地址所对应的数据读到寄存器2
  • 5、将寄存器1和寄存器2的数值相加,存储到寄存器3
  • 6、将第三个地址(ex:0x3e)放到寄存器0
  • 7、将寄存器3的数值写入寄存器0所对应的地址

对应的汇编代码如下:

mov  	r0, 0x1a
load	r1, [r0]
mov 	r0, 0x2c
load	r2, [r0]
addr	r3, r1, r2
mov 	r0, 0x3e
store	r3, [r0]
halt 

机器码翻译

前面讲到,CPU支持10个指令,同时这些指令有自己的格式和参数,我们以二进制每16位为一组做成编码,不足的补0,指令规范如下:

  • mov : 0001 xxxx yyyy yyyy
  • load: 1000 xxxx yyyy 0000
  • add: 0010 xxxx yyyy zzzz
  • store: 1001 xxxx yyyy yyyy
  • halt: 0000 0000 0000 0000

其中xxxx yyyy zzzz 分别代表了代码中要写的具体数值。
于是翻译后,上面的代码就变成:

#0 0001 0000 0001 1010   - mov r0 0x1a
#1 1000 0001 0000 0000   - load r1 [r0]
#2 0001 0000 0010 1100   - mov r0 0x2c
#3 1000 0010 0000 0000   - load r2 [r0]
#4 0010 0011 0001 0010   - add r3 r1 r2
#5 0001 0000 0011 1110   - mov r0 0x3e
#6 1001 0011 0000 0000   - store r3 [r0]
#7 0000 0000 0000 0000   - halt

至此,一个汇编程序代码就简单的翻译成纯粹的二进制格式。

纸带编码原理

纸带的每一行规定了8个孔位,每个孔位代表1bit,可以打孔也可以不打,打孔代表1,不打代表0。
纸带每行8个bit,两行就是16个bit,上面的二进制代码,以8位一行,表现在只带上,就如下图所示:

○○○● ○○○○ – 0001 0000
○○○● ●○●○ – 0001 1010
●○○○ ○○○● – 1000 0001
…后续省略

纸带编码识别

到这里我们几乎能够明白纸带编码原理了,但是还差一点,就是如何识别纸带编码,这里我们可以发挥想象比如:

  • 方案1: 采集器是8个探针(探针很粗,不会扎破纸带), 纸带上下都有探针,有孔的地方,探针会接触导通,而没孔的地方则不会导通,另外再配备1个传送带,按照恒定匀速拖动纸带移动,这样CPU就能够识别纸带编码,进而进行计算。
  • 方案2: 纸带上下有个 发光二极管,遮挡则不导通,类似于现在的形成开关。
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值