《计算机是怎么跑起来的》读书笔记二:一台简易的微型计算机和机器语言


前言

在计算机日新月异发展的今天,一系列设备的复杂性和多样性让我们眼花缭乱。通常我们认为的计算机是大家使用的电脑设备,其实在日常生活中各种电器设备都可能含有一个微型计算机系统。 这些计算机是广义上的含义,我们可以把含有CPU,内存,I/O设备这三个主要元器件的设备都叫做计算机。只不过,从个头上来说,有的是微型计算机,有的是大型计算机,当然还要超级计算机。

一、简易的微型计算机

一个最简易的微型计算机系统可能只包含CPU,内存,I/O,但是要想让它真正的正常工作,则需要更多的辅助设备。在集成电路板上,可以比较简单的认出的是一些电阻,电容,开关等。除了这几个以外,值得我们认识的还有:

微型计算机系统

  1. 时钟发生器,是一个产生时钟信号的元件。它输出一个叫做"时钟信号"的电信号,每隔一定的时间就变换一次电压的高低。产生电信号的根本是它带有晶振,根据其自身的频率(振动的次数)产生时钟信号。日常生活中,我们熟知的CPU的频率是由它来决定的。

  2. 输入设备,像我们手中的键盘和鼠标一样的东西。向内存输入数据的方式有两种:第一种是通过I/O元件发起CPU指令,让它读取和写入内存;第二种是通过DMA方式向内存写入指令和数据。这里如上左上角的方块就是代表的DMA输入元件。而我们发起CPU运算的数据输入则是通过I/O来进行中转的。

  3. 输出设备,不管是显示器,还是五彩斑斓的LED灯光,还是大型机器的操作设备,它们都通过I/O输出的数据进行显示或者操作。明显来看,输出并不代表是在显示器上显示出图案或者文字,也可能是一个机械手打了你一拳。

二、机器语言

1.CPU内部结构

首先我们需要清楚的一点是,CPU里的内部构造:

简单CPU的内部结构

可以看出,CPU内部是很多功能不同的寄存器组成的。而这些寄存器里是通过电压不同的电信号来记录数据,也就是通常我们所说的0和1。所以,本质上来讲计算机只认识0和1。它能做的运算只是把0变成1,把1变成0。这是一个很神奇的事情,通过0和1这两个简单的数字,计算机竟然能够完成我们平常见到的各种各样的运算。

2.机器语言

0和1是怎么来运算的呢?

简单的来说,通过0和1的排列组合,让它表示一些事情。图示中一直出现的Z80是要给8比特的CPU,它代表的意思是这个CPU用8位数字(0和1)组合在一起来表达一个含义。例如二进制运算中的00000010等于十进制中的数字2。对于计算机来说,任何事物都可以用0和1排列组合成的数字来进行表示。当然这个表示是人为定义的,所以在不同的CPU里面,同样的排列组合可能代表不同的意思。

在一个8比特的机器语言里,你可能看到的是:

00000000 00111110
00000001 11001111
00000010 11010011

是不是完全看不懂,那就对了。


2.汇编语言

一大串的0和1,总是让人头大的。几百上千,甚至过完的指令和数据含义,想要记住是不可能的。所以在机器语言的基础上,人们发明的助记符。把00111110变成日常生活中的英文单词,这样就简单很多。
这就是汇编语言的出现:

LD A,207
OUT (2),A
LD A,255

上述代码的含义是,LD是Load的缩写,而LD A,207是把207读入到寄存器A中,而后OUT (2),A,是把寄存器A的数据写入到I/O地址对应的寄存器中。

前面提到,不同CPU的0和1组合可能代表不同的含义,而添加助记符之后的汇编语言,则可以把这种差异进行统一。而在运行的时候,计算机自己把这些转换成它认识的0和1。当然,有兴趣的话,根据CPU的文档,也可以手动转换。

虽然代码变得似乎简单了些,但是看起来很多寄存器还是难以理解,但是计算机就是这样,它基本都是由寄存器组成的不同功能。因为它只是存储0和1,然后改变0和1。而为了更方便编程,很多更高级语言应运而生,C/C++/Java/C#/Lua/Js等等,它们逐步的更符合人类的思维习惯。


总结

看起来讲的很简单,但是事实上的计算机则运用到了更多的数学知识。要想用神奇的0和1做到更多,所付出的汗水是无法想象的。突然想起来大学时候的《微机原理和汇编语言》这门课完全没学,还挂科了,真是。。。后悔!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值