前言:
微机原理与接口:PC机及CPU物理结构和编程结构的研究
组成原理:计算机的一般结构,功能,性能
汇编:如何利用硬件系统的编程结构和指令集有效灵活地控制系统进行工作
参考:《汇编语言-王爽》侵删
机器语言是机器指令的集合
机器指令是什么?
机器指令(一列二进制数字)是一台计算机可以正确执行的命令
计算机将机器指令转变为一列高低电平,使计算机的电子器件收到驱动,进行计算。
计算机是什么?
可以执行机器指令 ,进行计算的机器。
PC机,有一个芯片来完成该功能。
芯片:CPU Central Processing Unit 中央处理单元。CPU是一种微处理器。
每一种微处理器,由于硬件设计和内部结构的不同,就需要不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自己的指令集,也就是机器语言
CPU + 受CPU直接影响或间接控制的芯片,器件,设备组成的计算机系统。
机器语言晦涩难懂,不易查错。
汇编语言的产生是为了解决机器语言难以辨别记忆的问题。
汇编语言的主体是汇编指令。汇编指令和机器指令的区别在于指令的表示方法上。
汇编指令是机器指令便于记忆的书写格式。
寄存器:是CPU中可以存储数据的器件,一个CPU中有多个寄存器。AX,BX是寄存器的代号。
计算机能读懂的只有机器指令,如何让计算机执行程序员用汇编指令编写的程序?
需要有一个能够将汇编指令转换为机器指令的翻译程序(编译器)
程序员利用汇编语言写出源程序,再用编译器将其翻译成机器码,由计算机最终执行。
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
CPU是计算机的核心,它控制整个计算机的运行并进行计算。要想让一个CPU工作,就必需向它提供数据和指令。 数据和指令在存储器(内存)中存放。存储器在一台PC机中的作用仅次于CPU。离开了内存,性能再好的CPU也无法工作,就像再聪明的大脑,没有了记忆也无法思考。
磁盘不等同于内存,磁盘中的程序如果不读到内存中,就无法被CPU使用。要灵活的利用汇编源程序,首先要了解CPU是如何从内存中读取信息,以及如何向内存中写入信息的。
CPU可以直接使用的信息在存储器中存放
指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。CPU在工作的时候把有的信息看作指令,把有的信息看作数据,为同样的信息赋予了不同的意义。就像围棋的棋子,在棋盒里没有任何区别,在对弈的时候就有了不同的意义。
存储器被划分为若干个存储单元,每个存储单元从0开始编号。如果一个存储器有128个存储单元,编号从0到127.
一个存储单元能存储多少信息?1 Byte !8个二进制位。
电子计算机的最小信息单位是 bit (比特),也就是一个二进制位。
8个比特组成一个Byte(字节)
存储单元的编号可以看作是存储单元在存储器中的地址。就像一条街,每个房子都有门牌号码。
CPU要从内存中读写数据,首先要知道存储单元的地址,也就是说CPU要先确定它要读取哪一个存储单元中的数据。就像再一条街上招人,想要确定他在哪一个房子里。
在一台微机中,不只有存储器这一种器件(芯片)。要对哪一个器件进行操作?进行哪种操作?是从中读出数据,还是向里写入数据?
CPU要想进行数据读写,必需和外部器件进行下面三类的信息交互。
CPU是通过什么将地址,数据和控制信息传到存储芯片中的呢?
总线。
每一个CPU芯片有许多管脚,这些管脚与总线相连,也可以说这些管脚引出总线。
电子计算机处理和传输的都是电信号,电信号用导线相连。总线:计算机中专门连接CPU和其他芯片的导线。一根根导线的集合。
根据传递信息的不同,总线从逻辑上可以分为三类:地址总线,控制总线,数据总线
如何命令计算机进行数据的读写?
要让一个计算机或微处理器工作,应该向它输入能够驱动它进行工作的电平信息(机器码)
CPU接收到这条指令后,将完成上面所述的读写工作。
CPU是通过地址总线来确定存储单元的。地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址
在电子计算机中,一根导线可以根据传送的稳定状态只有两种,高电平或是低电平。
用二进制表示就是1或0,10根导线可以传送10位二进制数据。10位二进制数可以表示2的10次方个数据。
最小数为0,最大数为1023.
一个CPU有N根地址总线,则说这个CPU的地址总线宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。寻址能力。
CPU与内存或其他器件之间的数据传送是根据数据总线进行的。数据总线的宽度决定了CPU与外界数据的传送速度,与其他器件进行数据传送时一次数据的传输量。8根数据总线一次可以传送一个8位二进制数据,即一个字节;16根数据总线一次可以传送两个字节。
CPU对外部器件的控制是通过控制总线来进行的。
控制总线是个总称,控制总线是一些不同控制线的集合。
有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。控制总线的宽度决定了CPU对外部器件的控制能力。
内存或写是由几根控制总线综合发出的:其中有一根"读信号输出"控制总线负责由CPU向外传送读信号;
有一根"写信号输出"控制总线负责传送写信号。
一个CPU的地址总线的宽度为10,那么可以寻址1024个内存单元,这1024个可以寻到的内存单元就构成这个CPU的内存地址空间。
在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件,这些器件通常通过总线(地址总线,数据总线,控制总线)相连。
这些器件有CPU,存储器,外围芯片组,扩展插槽 等。
扩展插槽上一般插有RAM内存条和各类接口卡。
计算机系统中,所有可用程序控制其工作的设备,必需受到CPU的控制。
CPU对外部 设备不能直接控制,如显示器,音箱,打印机等。直接控制这些设备进行工作的是插在扩展插槽上的接口卡,扩展插槽通过总线和CPU相连,接口卡也通过总线和CPU向量。CPU可以控直接控制这些接口卡,从而实现CPU对外部设备的间接控制。CPU通过总线向主板上扩展插槽的接口卡发送命令,接口卡根据CPU的命令控制外设。
一台PC机中,装有多个存储芯片,这些存储芯片从物理连接上看是独立的、不同的器件。
读写属性上进行分类:
- 随机存储器 RAM 可读可写,必须带电存储,关机后存储的内容丢失。
- 只读存储器 ROM 只能读取不能写入,关机后其中的内容不丢失
从功能和连接上分类:
- 主随机存储器
用于存放供CPU使用的绝大部分程序和数据,由装在主板上的RAM和扩展插槽上的RAM组成。- 装有BIOS的ROM
在主板和某些接口卡上插有存储相应BIOS的ROM
主板上的ROM中存储着主板的BIOS(通常称为系统的BIOS)
显卡上的ROM中存储着显卡的BIOS
如果网卡上装有ROM,那其中就可以存储网卡的BIOS- 接口卡上的RAM
某些接口卡需要对大批量输入,输出数据进行暂时存储,在其上装有RAM。最典型的是显卡上的RAM,一般称为显存。显卡随时将显存中的数据向显示器上输出。我们将需要显示的内容写入显存,就会出现在显示器上。
注:
1.BIOS Basic Input/Output System 基本输入/输出系统
是由主板和各类接口卡(显卡,网卡)提供商提供的软件系统,可以利用该硬件设备进行基本的 输入输出。专门负责系统硬件各种参数设定,本质上是“程序”,也就是一组“代码”。
上述储存器的相同点:
CPU在操纵他们的时候,把他们当作内存看待,把他们看作一个由若干个存储单元组成的逻辑存储器(内存地址空间)。
CPU将系统中各类存储器看作一个逻辑存储器
每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。
CPU在这段地址空间中读写数据,实际上就是在相应的物理存储器中读写数据。
假设上图内存地址空间的地址段分配如下:
内存地址空间的大小受地址总线宽度的限制。8086CPU的地址总线宽度为20,可以传送220个不同的地址信息(大小从0至220-1)。即可以定位220个内存单元,则8086PC的内存地址空间大小为1MB。80386CPU的地址总线宽度为32,则内存地址空间最大为4GB.
不同计算机系统的内存地址空间的分配情况是不同的。(8086PC机地址空间分配情况)
从地址0~9FFfF
的内存单元中读取数据,实际上就是在读取主随机存储器中的数据;
向地址A0000~BFFFF
的内存单元中写数据,就是向显存中写入数据,这些数据会被显卡输出到显示器上;
向地址C0000~FFFFF
的内存单元中写入数据的操作是无效的,因为等于改写只读存储器中的内容。
我们在基于一个计算机硬件系统编程的时候,必需知道这个系统中的内存地址空间分配情况。因为当我们在某类存储器中读写数据的时候,必需知道它的第一个单元的地址和最后一个单元的地址,才能保证读写操作是在预期的存储器中进行的。
原文:https://www.cnblogs.com/qiyewuan/p/14720138.html