计算机的基本组成:
- 存储器——用来存放原始数据、中间结果以及为使计算机能自动运算而编制的程序,它们均以二进制的形式存放在存储器中,例如:我们定义一个变量a或有返回值的函数sum,计算机就会在存储器上开辟一块空间,把那块空间给变量a或函数sum,于是a的值或函数sum运行结束后的返回值就会存放在这块空间里。
- 运算器——用来执行各种运算操作,内部具有一个名为加法器(加法器是产生数的和的装置,但因为补码、反码的存在,加法器也能实现异号运算,如减法)或算术逻辑单元(ALU)的核心部件,还有一个累加器A或AX,累加器能在运算开始时提供一个操作数,在运算结束时存放运算结果。
- 控制器——它是指挥和控制各部件协调工作的功能部件,能从存储器中取出指令,经编译码分析后产生各种控制命令,送往其它部件,控制计算机按程序设定的步骤一步一步自动操作。
- 输入设备——用于将原始数据转换成计算机能识别的信息,送到存储器去等待处理。(键盘、鼠标等等)
- 输出设备——将运算结果以合适的方式呈现出来。(显示器、磁盘等等)
——图片转自《微型计算机原理与接口技术》
- 运算器与控制器合称为中央处理单元(CPU)
- CPU和存储器合称为计算机的主机
- 输入设备(Input)和输出设备Output)设备统称为外部设备、I/O设备或外设
图1.1可能会让人产生一些疑问,如:
运算器和控制器都与存储器有着双向操作,都是哪些操作呢?
答:
运算器(ALU)和存储器之间进行的主要操作是数据的读取和写入。
读取操作:
1. 指令读取:运算器从存储器中读取指令,以执行程序的下一条指令。
2. 数据读取:运算器从存储器中读取操作数或其他数据,以供运算或其他操作使用。
写入操作:
1. 数据写入:运算器将计算结果或其他数据写入存储器的指定位置,以便后续使用或保存。
2. 状态写入:运算器可以将中间结果或状态信息写入存储器中,以便在需要时进行保存或恢复。
除了读取和写入操作,运算器和存储器之间还可以进行一些其他的控制操作,例如:
1. 存储器地址指定:运算器可以向存储器发送地址信息,以指定要读取或写入的存储器位置。
2. 存储器使能控制:运算器可以通过使能信号控制存储器的读取或写入操作,以确保数据的正确传输和保护。
总的来说,运算器和存储器之间的操作是通过读取和写入数据以及控制信号的交互来实现的,这样可以实现数据的存储、传输和操作,以完成计算机的各种任务。
控制器和存储器之间进行的主要操作是存储器的读取和写入,以及地址的传递和控制信号的交互。
读取操作:
1. 指令读取:控制器从存储器中读取指令,以执行程序的下一条指令。
2. 数据读取:控制器从存储器中读取操作数或其他数据,以供计算、控制或其他操作使用。
写入操作:
1. 数据写入:控制器将计算结果或其他数据写入存储器的指定位置,以便后续使用或保存。
2. 状态写入:控制器可以将中间结果、控制信号或其他状态信息写入存储器中,以便在需要时进行保存或恢复。
地址传递:
1. 存储器地址指定:控制器通过传递地址信息给存储器,指定要读取或写入的存储器位置。
2. 地址计算:控制器可以根据程序计数器(PC)或其他计算得到的地址信息来计算存储器的地址,以进行读取或写入操作。
控制信号交互:
1. 存储器使能控制:控制器通过使能信号控制存储器的读取或写入操作,以确保数据的正确传输和保护。
2. 时序控制:控制器向存储器发送时钟信号或其他时序控制信号,以确保数据在正确的时机进行读取或写入。
总的来说,控制器和存储器之间的操作是通过读取和写入数据、传递地址和交互控制信号来实现的,以实现程序的执行、数据的存储和传输,以及控制计算机的各种操作。
看完上述第一个问题的答案,有的人可能又会不明白,运算器和控制器都可以对存储器进行读取和写入的操作,那么在运算的过程中,到底是控制器从存储器中读取指令(操作指令与数据等)然后交给运算器,还是运算器自己从存储器中读取的呢?运算结束时,运算结果又是谁写入存储器的?
答:
运算器与控制器对存储器的读取和写入的操作是在不同情况的,运算器通常不直接对存储器进行数据读取和写入,而是通过控制器来完成特定操作,而控制器可以将操作数暂存在寄存器中,供运算器使用,运算器可以读取到寄存器中的数据,也可以将中间结果暂时储存在寄存器中,寄存器属于存储器,即运算器对存储器进行的读取和写入操作它主要负责进行算术和逻辑运算。而控制器会根据指令的要求,通过控制信号(时钟、指令寄存器等)与存储器进行交互。
- 程序由一条条指令组成,将它和需要处理的原数据被编译成二进制的文件送到计算机的存储器中,每个存储单元有一个编号,称之为地址,指令和数据按一定顺序存放在存储器中,再启动计算机工作,使机器按这些命令一步一步执行。
例:要让计算机完成c = a+b这样的操作,其所设计的硬件设备与具体操作如下(寄存器属于存储器):
1. 程序编写和编译:
- 开发者编写程序代码,包括变量的定义和计算 c = a + b 的指令。
- 程序代码被编译成可执行文件,然后储存在存储器内,等待控制器读取,以供计算机运行。
2. 控制器(Control Unit):
- 从存储器中读取指令。
- 解析指令以确定操作类型和操作数的位置。
3. 存储器(Memory):
- 接收控制器发送的指令,存储器提供指令执行的位置,即通过地址信息将存储器中的指令与控制器关联起来,使得控制器能够按照指令的顺序从存储器中读取指令并执行,从而完成计算机程序的运行。。
4. 控制器:
- 根据指令中的变量定义,请求为变量 a、b 和 c 分配内存空间。
5. 存储器:
- 为变量 a、b 和 c 分配内存空间,并返回变量的内存地址给控制器。
6. 控制器:
- 将操作数 a 和 b 的地址发送给存储器,请求从存储器中读取这些操作数的值。
7. 存储器:
- 接收控制器发送的读取地址。
- 根据地址从存储器中读取操作数 a 和 b 的值,并返回给控制器。
8. 控制器:
- 接收操作数 a 和 b 的值。
- 将操作数 a 和 b 的值发送给运算器。(控制器可将操作数a、b暂存在寄存器中,以供运算器使用,即运算器可以对存储器进行读取操作)
9. 运算器(Arithmetic Logic Unit, ALU):
- 接收控制器发送的操作数 a 和 b 的值。
- 执行加法操作,将操作数 a 和 b 相加得到结果 c。(运算器执行加法操作时,可能会将中间结果储存在寄存器中,即运算器可以对储存器进行写入操作。)
10. 控制器:
- 从存储器中读取写入结果 c 的地址。
11. 存储器:
- 接收控制器发送的写入地址和结果 c 的值。
- 将结果 c 写入存储器的指定位置。
总结:
在这个过程中,开发者首先编写程序代码并定义变量,然后程序经过编译后被执行。控制器负责指导整个过程,包括从存储器中读取指令、发送读取地址和写入地址,以及控制运算器执行加法操作。存储器负责存储程序指令和变量的内存空间,接收控制器的读取地址和写入地址,并将数据返回给控制器或写入指定位置。运算器执行实际的加法操作,接收控制器发送的操作数,并将结果返回给控制器。整个过程中,控制器和存储器之间进行地址传递和数据传输,控制器和运算器之间进行控制信号的交互。
指令的组成和机器码:
- 计算机只认识二进制,计算机中的所有指令和数据都要被编译成二进制的形式才可被计算机执行,这种以二进制表示的指令称为机器码。
- 通常指令由操作码和操作数两部分组成,操作码说明计算机执行什么操作,操作数指出参加操作的数的本身或操作数的地址。
例:
这里的B8是操作码,它表示要从后面两个字节单元中取出一个两字节的数(1200H),送到累加器AX上去。数据的存放方式为低字节在前面,高字节在后。所有操作数最终都是以二进制的形式存放。
汇编语言:
- 汇编语言是一系列指令功能的英文缩写,用符号、标号和寄存器名称等来代替指令和操作数的存放地址。
例:
编写求解2+3 = 5的汇编语言程序,要求将和存入SUM单元:
MOV AX,2; //将2送至累加器AX
ADD AX,3; //将3与累加器AX的当前值2相加
MOV SUM,AX; //将累加器AX的当前值5复制到内存变量SUM所对应的存储位置
提示:累加器是一种特定类型的寄存器,位于CPU内部,用于执行加法和累加操作。
- 用汇编编写程序,能够有助于自己对计算机内部工作原理的理解,因此建议学习高级语言的同时也了解一下基础的语言,这样可以更有效地学习机器控制功能。
操作系统:
- 操作系统是一个重要的系统软件,它能直接控制和管理计算机系统中的软、硬件资源,合理地组织计算机的工作流程,并为用户提供各种服务功能,使用户能灵活方便和有效的使用计算机。