标签:bubuko 扩展 方法 单位 col 芯片 一个 棋盘 基于
闲谈汇编之初,先说说计算机的硬件组成:运算器,控制器,存储器,输入设备,输出设备。
下图就是计算机的硬件组成框架:
在早期,机器语言是直接对硬件进行操作,但是机器语言是0和1的字符串,这就是的早期程序员的工作十分繁杂,如果0或者1有一位出错,那么整个程序就会崩掉了,那么如何解决这个问题呢?
汇编语言就应运而生了。
汇编语言的主体是汇编指令,汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。
程序员运用汇编语言书写指令提升了效率,可是计算机只能读懂机器指令,那么怎么解决该问题呢?
不要急,还有编译器呢,编译器的作用就是讲汇编语言写的源程序翻译成计算机可以理解的机器码,这样计算机既可以执行程序员的命令啦!
也就是:
程序员------>汇编指令------>编译器-------->机器码------->计算机
可能屏幕前面的你又要问了,汇编语言节省了程序员们的宝贵时间,那么汇编语言的组成又是什么呢?
别急,下面听我一一道来:
汇编语言的组成:(1):汇编指令:这是机器码的助记符,有对应的机器码。
(2):伪指令:没有对应的机器码,由编译器执行,计算机并不执行
(3):其他符号:如 + - * / 等,由编译器识别,没有对应的机器码
汇编语言的核心是汇编指令,它决定了汇编语言的特性!!
汇编程序写好了,那么它是怎么控制计算机让计算机执行的呢?
这就要说到计算机中的CPU了,CPU控制整个计算机的工作,要想控制计算机,就要向CPU提供指令,向他提供指令,这些指令得有地方存放吧,所有又要谈到计算机的存储器了
这些指令都在计算机的存储器中存放,离开了内存再好的CPU也无法工作,那呢可能会问,不是还有磁盘吗?磁盘??开玩笑,磁盘是不同于CPU的,磁盘中的数据如果不读入内存,CPU
压根识别不出来!!
在内存中,指令和数据没啥区别,都是二进制信息,CPU把有的信息看做指令,有的信息看做数据,为不同的信息附上不同的意义,就象棋盘中的棋子,在盒子中没什么区别,
但是下在棋盘上就不一样了。
其实,存储器被划分成了若干个存储单元,每个单元都是从0开始的,,计算机最小的信息单位是bit,就是一个二进制位,8个bit组成一个byte,也就是一个字节,比如,一个存储器
有128个存储单元,他就可以存储128个Byte。
对于一些大的存储器,下面的换算是这样的:1KB==1024B 1MB==1024KB 1GB==1024MB 1TB==1024GB
前面说到,CPU从寄存器中读取数据,那么CPU是怎么知道数据在存储器中的什么位置的呢?存储器被划分了许多内存单元,这些就象门牌号一样,直接找到
CPU要是想进行数据的读写必须与外部器件进行3类的信息交互:
存储单元的地址信息(地址信息); 期间的选择,读或写的命令(控制信息); 读或写的数据(数据信息)
好,既然CPU要读取数据,那么数据怎么传输呢?科学家就解决了这个问题:计算机中有专门连接CPU和其他芯片的导线,通常称为总线,总线从逻辑上又分为3类:
地址总线,控制总线和数据总线;下图就是图片,很好懂。
下面就先从地址总线开始说:由于CPU是通过地址总线来指定存储单元的,那么地址总线上能床送多少不同的信息,CPU就可以对多少个存储单元进行寻址,比如说CPU有10根地址总线
那么他就可以表示2^10的数据,最小是0,最大是1023,如果有N个地址总线,那么就可以有2^N个内存单元
那么数据总线又是有什么用的呢?数据总线,顾名思义,就是用来传输数据的线路,数据总线的宽度直接决定了,CPU与外界传输数据的速度,8根数据总线一次可以传送8位2进制数据(即是一个字节)
,16根数据总线就是两个字节啦,8088CPU的数据总线的宽度是8,8086CPU的数据总线宽度是16,下图就是展示了数据的传输情况
那么控制总线又是什么情况呢?控制总线决定了CPU对外界部件的控制能力,然后就没有然后了。
下面开始一个新的概念:内存地址空间,这又是何方妖怪?比如说,一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻的内存单元就构成了这个CPU的内存地址空间
在说之前要先介绍主板,和接口卡
主板:上面有核心器件,和一些主要器件,这些通过总线相连,器件有CPU,存储器,外围芯片组,扩展插槽(其中插有RAM内存条和各类接口卡)
接口卡:就是连接一些外部设备,方便CPU控制,比如显示器,音响·········
PC机中各类存储器的逻辑连接情况为:
下面就开始内存地址空间了:
上述的存储器在物理上都是独立的器件,但是一下两点是共同点:
1. 都和CPU相连 2. CPU对他们控制都是通过控制总线发出命令
也就是说CPU操作它们是都是把他们看做内存来对待,把他们看做总的有若干个内存单元组成的逻辑存储器,这些逻辑存储器就是内存地址空间
在上图中,所有物理存储器被看做一个逻辑存储器,每个物理存储器在逻辑存储器中都有一个地址段,即是一段地址空间(注意:存储器并不是一段一段的)
CPU在这段地址上读写数据,实际上就是在相应的物理存储器中读写数据。
内存空间的大小受到地址总线宽度的限制,比如:8086CPU地址总线宽度为20,则寻址能力为2^20 即是1MB,80836CPU是32 则内存地址空间最大为4GB
所以我们在基于计算机硬件编程时,要知道他的第一个单元地址,和最后一个单元的地址。
OVER,谢谢观赏!!
标签:bubuko 扩展 方法 单位 col 芯片 一个 棋盘 基于
原文地址:https://www.cnblogs.com/acmblog/p/9707592.html