微机原理与接口技术: 1 - 微型计算机基础概论

1 微型计算机基础概论

1.1 微型计算机系统

Content:

  1. 微机的一般工作过程以及微机系统的组成3个方面
  2. 建立整个系统的简单框架

1.1.1 微型计算机的发展

1.1.2 微型计算机的工作过程

1 - 冯.诺依曼 计算机

计算机的工作过程就是执行程序的过程,而程序则是指令序列的集合

每台计算机都拥有各种类型的机器指令,这些指令按照一定的规则存放在存储器中,在中央控制系统的统一控制下,按照一定顺序一次依次执行

存储程序:把程序和数据送到具有记忆功能的存储器中保存起来

请添加图片描述

主要特点:

  1. 将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器中保存
  2. 程序中的指令和数据必须采用二进制编码,且能够被执行该程序的计算机识别
  3. 指令按其在存储器中存放的顺序执行,存储器的字长固定并按顺序线性编址
  4. 控制器控制->整个程序和数据的存取and程序的执行
  5. 以运算器为核心,所有的执行都经过运算器
2 - 微型计算机的工作过程

微机的工作过程就是执行程序的过程执行每条指令序列的过程

=>不断的 取指令执行指令 的过程。

执行该过程的示意图:

请添加图片描述

指令周期

--(取指令阶段)--
  1. 首先将第一条指令由内存中取出(这是个)

  2. 将去除的指令送入指令译码器译码,以确定要进行的操作

    –(执行指令阶段)–

  3. 读取相应的操作数(执行的对象)

  4. 执行指令

  5. 存放执行结果

  6. 指令执行完毕,转入下一条指令的取指令阶段,不断重复直到meet暂停指令而停止

取指令阶段:一系列相同的操作组成。取指令阶段的时间总是相同的,称为公共操作

执行阶段:由不同的事件顺序组成,具体取决于被执行指令的类型。指令不同,执行阶段耗时也各不相同。

一个简单实例中读取第一条指令的工作过程示意图:

请添加图片描述

10110000 00000101   MOV A,5     ;第一个操作数(5)送到累加器
00000100 00001000   ADD A,8     ;5与第2个数(8)相加,结果(13)送到累加器
11110100            HLT         ;停机

取第一条指令过程如下(内存储器中已经事先存储好了如上所示的程序):

  1. 指令所在地址(00H)赋给程序计数器PC并送到地址寄存器AR
  2. PC自动+1(00H -> 01H),AR的内容不变
  3. 地址寄存器AR的内容(00H)放到地址总线AB上,并送至内存储器,经地址译码器译码,选中相应的00H单元的指令
  4. CPU的控制器发出读命令
  5. 在读 命令控制下,将所选中的00H单元中的内容(即第一条指令的操作码10110000)读到数据总线DB
  6. 将读出的内容10110000经数据总线DB送到数据寄存器DR
  7. 去指令阶段最后一步是指令译码。因为取出的是指令的操作码数据存储器DR将它送到指令寄存器IR,然后再送到指令译码器ID

哒哒,这样就完成了第1条指令的读取!

第2条以及后续指令的读取过程与第1条指令是一样滴,而由于指令不同,每次译码后指令译码器ID中的内容也会不同

1.1.3 微机系统的组成

tips:微机系统、微型机和微处理器是3个不同的概念。

微机系统的组成框图:

请添加图片描述

总线BUS:具体实现上,微机的各组成部分之间通过总线连接,总线部件之间信息传递的公共通道

其中,

  • AB - Address Bus : 地址总线,单向,三态,传送 读/写存储器(RAM或ROM)或输入输出接口(I/O接口)地址信息
  • DB - Data Bus : 数据总线,双向,三态,传送要操作的数据
  • CB - Control Bus : 控制总线,都有,取决于控制什么,传送控制信息

微机的系统结构框图:

请添加图片描述

1 - 硬件系统
1) 微处理器/中央处理器/CPU

CPU是微机的核心芯片,是整个系统的运算和指挥控制中心。

无论那种CPU,其内部基本组成都大同小异,主要部分为:控制器运算器寄存器组

CPU典型结构示意图:

请添加图片描述

  1. 运算器 - AU / Arithmetic Unit:核心为算术逻辑单元(ALU,Arithmmetic and Logic Unit),它是以**加法器(ADDer)为基础,辅以移位寄存器(Shifting Register)**及相应的控制逻辑组合而成的电路。可以完成加减乘除四则运算和各种逻辑运算,包括浮点运算。

  2. 控制器 - CU / Control Unit : 由指令寄存器IR / 指令译码器ID和操作控制电路组成. CU从存储器中依次取出程序的各条指令,并根据指令要求,香微机各个部件发出相应的控制信号,使各部件协调有序工作.

  3. 寄存器组 - RS / Registers Set: 实质上是CPU内部的若干个存储单元, 在ASM语言中通常是按照名字来访问它们. 寄存器可分为专用寄存器通用寄存器.

专用寄存器 - 作用固定, 如堆栈指针SP, 程序计数器PC, 标志寄存器FR

通用寄存器 - 由程序员自行分配规定用途.

2 - 存储器(Memory)

主机系统中的存储器又叫内存or主存 -> 微机的存储和记忆部件

用以存放数据(including 原始数据, 中间结果 和 最终结果)和当前执行的程序

  1. 内存单元的地址和内容 : 内存由需多单元组成, 在微机中, 每个单元规定存放8位bin码, 即一组bin码, 单位为字节Byte.

为了区分各个不同的内存单元, 需要给每个存储单元编上不同的号码 -> 内存地址(Memory Address)

8088/8086中, CPU的内存地址编码为00000H, 00001H, …, FFFFFH, 2 20 2^{20} 220个存储单元. 每个存储单元地址唯一, 所以CPU就可以通过指定地址来正确访问某个特定的内存单元.

内存单元中存放的信息称为内存单元的内容. 内存单元的内容与地址在表现形式上虽然都是bin, 但本质上它们是两个完全不一样的概念

内存请添加图片描述
单元的内容与地址示意图:

  1. 内存的操作 : CPU对内存的操作有读read / 写write两种.
  • 读操作 Read - CPU 将内存单元的内容取到CPU内部…

  • 写操作 Write - CPU 将其内部信息传送到内存的单元保存起来

假定有256个存储单元,地址00H~FFH, 字长为8位:

存储器读写操作示意图 :

请添加图片描述

从存储器读出信息的操作过程. 现在CPU要把数据00100110B(26H)写入地址位08H的存储单元, 步骤如下:

  1. CPU 将存储单元地址08H放到地址总线AB上, 经地址译码器AD选中08H.
  2. CPU 将要写入到内容26H放到数据总线DB上.
  3. CPU 向存储器发送"写"控制信号, 在该信号的控制下, 将数据26H写入存储器的08H单元.
  1. 内存的分类 - 按工作方式不同, 内存可分为两大类 :
  • 随机存储器 - RAM / Random Access Memory : 可被CPU随机地读和写, name as 读写存储器. 用于存放用户装入的程序数据及部分系统信息 . 断电后丢失 .

  • 只读存储器 - ROM / Read Only Memory : 只能被CPU随机读取,而不能由CPU写入. 断电后不丢失. 主要用来存放*监控程序和基本输入输出程序,以及各种常用数据与表格.

ROM中的内容一般由厂商在出场的时候写入.

3 - 输入输出接口和输入输出设备(I/O)

IO接口和IO设备是I/O系统的硬件组成.

IO设备中, 常用的输入设备Input Device 有键盘, 鼠标, 扫描仪, etc.

与CPU相比, IO设备的工作速度较低, 处理的信息从数据格式到逻辑时序一般都无法与CPU直接兼容 -> 微机与IO设备间的连接与信息交换不能直接进行, 而必须通过一个中间部件作为两者之间的桥梁

=> IO接口(I/O Interface), name as IO适配器(I/O Adapter)

详见Chapter 6.

4 - 总线(Bus)

由一组导线和相关控制电路组成, 是各种公共信号线的集合, 用于微机系统个部件之间的信息传递.

将用于主机系统内部信息传递的总线称为内部总线 Internal Bus, 将连接主机和外部设备之间的总线称为外部总线 External Bus.

  1. 数据总线 - DB / Data Bus : DB用来传输数据信息, 双向总线,三态
  2. 地址总线 - AB / Address Bus : AB用于传送CPU发出的地址信息, 单向总线,三态.
  3. 控制总线 - CB / Control Bus : CB 用来传送控制信号, 时序信号和状态信息等等. CB中每一根线的方向是一定的, 单向的, 但CB作为一个整体是双向的.

从传送信息的类型上, 内部总线 和 外部总线 都有 DB, AB, CB.

详见Chapter 2.

2 - 软件系统

软件(Software) 包括 系统软件应用软件 两大类.

系统软件 - System Software : 主要包括操作系统 OS(管理计算机资源, 任务调度, 文件管理, 人机接口等)和系统实用程序 System Utilities(编译器, 汇编器, 数据库, 文本编辑器, 诊断和调试程序等).

程序设计语言分三个级别 - 机器语言machine language, 汇编语言assembly language, 高级语言high-level language.

略.

1.2 计算机中的数制与编码

计算机中的数制与编码主要是关注微机中如何表述小数, 即定点数浮点数的部分。这一部分其他的内容具体的可以参照我之前写过的这篇文章:
数电学习笔记Ⅰ——数制、运算与编码
在这就不赘述了

1.2.1 常用记数制

1 - 十进制数(Decimal - Dec)

请添加图片描述

2 - 二进制数(Binary - Bin)

请添加图片描述

3 - 十六进制数(Hexadecimal - Hex)

请添加图片描述

bin数与hex数间转换很方便, 习惯用hex数来简化bin数的表达.

1.2.2 各种数制间的转换

1 - 非十进制 -> 十进制

Easy, 按相应的权表达式展开, 再按十进制运算规则求和, bingo!

E.g. 将1101.101B转成十进制数
( 1101.101 ) B = 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 − 1 + 1 × 2 − 2 + 1 × 2 − 3 = ( 13.625 ) D \begin{aligned} (1101.101)_B \\ & = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 + 1 \times 2^{-1} + 1 \times 2^{-2} + 1 \times 2^{-3} \\ & = (13.625)_D \end{aligned} (1101.101)B=1×23+1×22+0×21+1×20+1×21+1×22+1×23=(13.625)D

2 - 十进制 -> 非十进制

十进制数的整数和小数部分应分别转换.

  • 整数部分->bin数时采用除二取余法, 即连续除2并取余数作结果直至商为0, 得到的余数从低位到高位依次排列即得到bin的整数部分.
  • 小数部分->bin数采用乘2取整的方法, 即对小数部分连续用2乘, 以最先得到的乘积的整数部分为最高位直至达到要求精度or小数部分为0.

E.g. 将 ( 112.25 ) D (112.25)_D (112.25)D -> bin数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

即 => ( 112.25 ) D = ( 111000.01 ) B (112.25)_D = (111000.01)_B (112.25)D=(111000.01)B

1.2.3 计算机中的二进制数表示

计算机中, 用于表示数量大小的数据称为数值数据 numerical data.讨论数值数据时常涉及两个概念:表数范围表数精度.

  • 表数范围 - range of representation : 指一种类型的数据所能表示的最大值最小值.
  • 表数精度 - precision of representation : 用实数值能给出的有校数字的位数表示.

表数范围表数精度的大小 与 用多少个bin位表示某类数据及怎样对某些位编码有关 .

1 - 定点小数的表示

小数点的位置 固定不变的小数.

通常都把小数点固定在MSB的左边, MSB表示符号位,称为纯小数:

N = N s ⋅ N − 1 N − 2 ⋅ ⋅ ⋅ N − m − 1 N − m N = N_s \cdot N_{-1} N_{-2} ··· N_{-m-1} N_{-m} N=NsN1N2⋅⋅⋅Nm1Nm

用m+1个bin位表示上述小数->可以用MSB表示该数的符号. 如上式中的 N s N_s Ns, 后边的m位表示小数的数值部分. 由于规定了小数点放在数值部分的最左边, 所以小数点不需要表示出来

定点小数的表数范围很小,对于用m+1给bin位的小数,其表数范围:

∣ N ∣ = 1 − 2 − m \lvert N \rvert = 1 - 2^{-m} N=12m

E.g.

( 0.875 ) D = ( 0.111 ) B = [ 0   1   1   1   0   0   0   0 ] ( − 0.875 ) D = ( − 0.111 ) B = [ 1   1   1   1   0   0   0   0 ] ( 0.11101 ) B = [ 0   1   1   1   0   1   0   0 ] \begin{aligned} (0.875)_D & = (0.111)_B \\ & = [0 \ 1 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0] \\ (-0.875)_D & = (-0.111)_B \\ & = [1 \ 1 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0] \\ (0.11101)_B & = [0 \ 1 \ 1 \ 1 \ 0 \ 1 \ 0 \ 0] \\ \end{aligned} (0.875)D(0.875)D(0.11101)B=(0.111)B=[0 1 1 1 0 0 0 0]=(0.111)B=[1 1 1 1 0 0 0 0]=[0 1 1 1 0 1 0 0]

2 - 整数

小数点定在数据的LSB右边的一种数据, 类似于定点小数, 符号位放在MSB, 任意一带符号的整数都可以表示为:

N = N s N n − 1 N n − 2 ⋅ ⋅ ⋅ N 1 N 0 N = N_s N_{n-1} N_{n-2} ··· N_{1} N_{0} N=NsNn1Nn2⋅⋅⋅N1N0

式中: N s N_s Ns表示符号位, 后边的n位表示数值部分.

( 30 ) D = ( 00011110 ) B = [ 0   0   0   1   1   1   0 ] ( − 30 ) D = ( − 00011110 ) B = [ 1   0   0   1   1   1   0 ] \begin{aligned} (30)_D & = (00011110)_B \\ & = [0 \ 0 \ 0 \ 1 \ 1 \ 1 \ 0] \\ (-30)_D & = (- 00011110)_B \\ & = [1 \ 0 \ 0 \ 1 \ 1 \ 1 \ 0] \\ \end{aligned} (30)D(30)D=(00011110)B=[0 0 0 1 1 1 0]=(00011110)B=[1 0 0 1 1 1 0]

3 - 浮点数的表示

浮点数 - Float Number : 小数点的位置可以左右移动的数据, 可用下式表示:
N = ± R E × M N = \pm R^{E} \times M N=±RE×M

式中,

  • M (Mantissa) : 浮点数的尾数, 或称有效数字, 通常是纯小数.

  • R(Radix) : 阶码的基数, 表示阶码采用的数制, 计算机中一般规定 R 为2, 8, 16, 为一常数. -> 尾数为bin, 则R=2. 同一种机器的的R值固定.

  • E s E_s Es - 阶符号, 表示阶码的符号, 即指数的符号, 决定浮点数范围的大小.

  • M s M_s Ms - 尾符, 尾数的符号位, 安排在最高位. 也是整个浮点数的符号位.

典型的浮点数格式:

请添加图片描述

规定计算机内浮点数的尾数部分用纯小数表示. 即小数点右边第1位不为0 -> 规格化浮点数

E.g.

( 0.0101 ) B = 1.01 × 2 − 2 = [ 0 1000010 010000... ] = [ 符号位 指数 ( 阶码 , 含阶符 ) 尾数 ( 纯小数 ) ] \begin{aligned} (0.0101)_B & = 1.01 \times 2^{-2} \\ & = [0 \quad 1000010 \quad 010000...] \\ & = [符号位 \quad 指数(阶码, 含阶符) \quad 尾数(纯小数)] \end{aligned} (0.0101)B=1.01×22=[01000010010000...]=[符号位指数(阶码,含阶符)尾数(纯小数)]

1.3 无符号二进制数的算术运算和逻辑运算

1.3.1 二进制的算术运算

1 - 加法

请添加图片描述

2 - 减法

请添加图片描述

3 - 乘法

请添加图片描述

4 - 除法

除法是乘法的逆运算, bin数的除法运算耶客转换成位减法和右移运算, 每右移一位相当于除2.

1.4 有符号二进制数的表示及运算

有符号数的表示方法

3种, 原码, 反码, 补码

1 - 原码

[ X ] 原 = 符号位 + ∣ X ∣ [ + 0 ] 原 = 00000000 [ − 0 ] 原 = 10000000 \begin{aligned} [X]_原 & = 符号位 + \lvert X \rvert \\ [+0]_原 & = 00000000 \\ [-0]_原 & = 10000000 \end{aligned} [X][+0][0]=符号位+X=00000000=10000000

2 - 反码

[ X ] 反 [X]_反 [X]. 对于正数, 反码同原码. 对于负数, 反码则原码按位取反

$$

[X]_反 = \begin{cases}
X & X 为正数
~X & X为负数
\end{cases}
$$

请添加图片描述

3 - 补码

[ X ] 补 [X]_补 [X]. 若为负数 : = 反码+1. 若为正数, 与2原码一致

1.4.3 补码的运算

规则:

  • 加法 : [ X + Y ] 补 = [ X ] 补 + [ Y ] 补 [X+Y]_补 = [X]_补 + [Y]_补 [X+Y]=[X]+[Y]
  • 减法 : [ X − Y ] 补 = [ X ] 补 − [ Y ] 补 = [ X ] 补 + [ − Y ] 补 [X-Y]_补 = [X]_补 - [Y]_补 = [X]_补 + [-Y]_补 [XY]=[X][Y]=[X]+[Y]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值