大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
微机原理与接口技术
第01章 微机原理概述
基本知识
-
CPU:中央处理单元(Central Processor Unit),处理器,能够分析和执行指令的部件,能分析和执行指令的芯片就是CPU
-
MPU:微处理器,Micro Processor Unit,CPU集成芯片,比传统CPU功能性能简化,集成度高,价格低廉,性价比高
-
微型计算机(微机:MicroComputer):MPU+存储器+I/O接口+外设+软件系统,简称微机
-
PC机(Personal Computer)
-
计算机的三种典型应用形态:
-
主板为各个部件(CPU、内存、硬盘、显卡、键盘、鼠标等)提供相应接口,并通过总线将它们连结。
-
主板含芯片组、BIOS芯片、CMOS芯片等
-
CPU组成及其性能参量
■ 组成
◆ ALU(算术逻辑运算单元)
◆ 控制器
◆ 寄存器(Register)组
◆ Cache(高速缓存)
■ 性能参量
◆ 外频:CPU外部输入的时钟频率(MHz)
◆ 主频:CPU内部工作频率(MHz) = 外频 * 倍频
◆ CPU位数:CPU字长,通用寄存器位数。
□ 32位:例如386,PIII、PIV,i3,…等;
□ 64位CPU:Itanium(安腾) -
Memory
■ 功能:
◆ 存放程序和数据
■ 分类
◆ RAM/ROM:掉电后所存储的数据丢失/不丢失
◆ 主存(属于RAM型):
□ 运行速度非常快,能与CPU直接交换信息
□ CPU将执行的指令是从内存中取得的
□ CPU访问内存通过系统的地址总线、数据总线、MEMR、MEMW 控制线来进行
◆ 外存: 间接读写(软盘/硬盘/光盘/U盘等) -
主板接口:P37
-
CPU通过地址总线,数据总线,控制总线连接外部设备:
- 地址总线
通常为32位,即A31~A0,因此,可寻址的内存单元为2^32=4GB。I/O接口也是通过地址总线来寻址的,它可寻址64KB的外设端口。 - 数据总线
通常为32位,即D31~D0。数据在CPU与存储器和I/O接口之间双向传输。 - 控制总线
传送各种控制信号:有CPU到存储器和外设接口的控制信号:存储器请求(MREQ)、I/O请求(IORQ)、读信号(RD)、写信号(WR)等;有外设到CPU的信号:READY、INT等
IA- Intel Architecture(x86架构)
-
CPU架构的概念
■ 指令,寻址,内存接口,外部接口,扩展,…… -
Inte Architecture 32 = I.A. 32位
-
IA-32结构的最重要成就:向后兼容性
-
IA-32结构起源:Inte 8088/8086
-
IA-32结构同时包括16位处理器和32位处理器
-
个人计算机的标准平台,最成功的CPU架构
-
其他CPU架构:
■ 51单片机,ARM,MIPS,PowerPC,…… -
I.A.结构向后兼容:“冯.诺依曼”结构+I.A.规范
■ 内存储器:存有数据和程序■ 部件之间的交互遵循I.A.规范
计算机存储器模型
*(1)读操作
*(2)写操作
计算机指令执行过程:
汇编语言
寻址——寻找物理地址(PA)
寻址方式——寻找操作数的物理地址的方式
操作数的存放地点:
- (1)操作数在指令中
■ 指令的操作数部分就是操作数本身。
■ 也叫立即数 - (2)操作数存放在CPU寄存器中
■ 指令的操作数部分是寄存器的编码
■ 也叫寄存器操作数。 - (3)操作数存放在内存中
■ 指令的操作数部分包含操作数所在的内存地址
■ 也叫存储器操作数。
1.立即数寻址方式
举例:
MOV AL, 10 ;十进制数(D)
MOV AL, 00100101B ; 二进制数(B)
MOV AX, 263AH ; 十六进制数(H)
特点:
- 操作数直接存放在指令中,紧跟在操作码之后
2.寄存器寻址方式
举例:
INC SI
MOV AX,BX
特点:
- 指令中直接给出寄存器名,寄存器的内容即为操作数
- 不需要访问总线周期,因此指令执行速度比较快
- 16位操作数:AX、BX、CX、DX、SI、DI、SP、BP等
- 8位操作数:AH、AL、BH、BL、CH、CL、DH、DL等
3.存储器寻址方式
举例:
MOV AL, [2000H] ; AL ← PA=DSx16+ 2000
MOV AX,[SI] ; AX ← DSx16 + [SI],[SI+1]
MOV BH,[BP] ; BH ← SSx16 + [BP]
MOV AX, [BX+10H] ; EA=(BX)+10H
MOV AX, [BX+SI] ; EA=(BX)+(SI) ; DS段
特点:
-
指令直接或间接给出有效地址EA,物理地址PA需计算.
-
计算物理地址分2步
■ (1)先计算有效地址EA(与寻址方式有关)
■ (2)再计算物理地址PA(与存放的段有关)
3.1 寄存器直接寻址方式
举例:
MOV AL,[2000H] ; AL ← PA=DSx16+2000
特点:
-
指令中直接给出有效地址EA:8位或16位位移量
-
PA = (段寄存器)X 10H +指令中的EA
-
默认方式下:段寄存器是数据段DS
-
段跨越:指令增加段寄存器名前缀:CS,ES,SS等
段超越的例子:
MOV AX,ES:[2000H]
ES:MOV AX, [2000H]
3.2 寄存器间接寻址方式
举例:
MOV AX,[SI] ;AX ← DSx16 + [SI],[SI+1]
MOV BH,[BP] ;BH ← SSx16 + BP
MOV CX,ES:[BX] ;将ES段[BX][BX+1]内容送CL,CH
特点:
- 操作数的有效地址EA在寄存器中
- 对16位寻址,EA只能放在DI、SI、BX、BP中
■ 若EA在DI、SI、BX中,默认段为数据段DS
■ 若EA在BP中,默认段为堆栈段SS
■ 支持段跨越
3.3 寄存器相对寻址方式
举例:
MOV AX, [BX+10H] ; EA=(BX)+10H
特点:
- 给定基址/变址寄存器和相对偏移量,两者之和为EA
- 寄存器BX、SI、DI默认是数据段DS
- 寄存器BP默认堆栈段SS
- 支持段跨越
3.4 基址变址寻址方式
举例:
MOV AX, [BX+SI] ; EA=(BX)+(SI) ;DS段
特点:
- 有效地址EA是基址寄存器与变址寄存器的和
- 默认段由基址寄存器决定
- 支持段跨越
3.5 相对基址变址寻址方式
特点:
-
有效地址EA是基址寄存器+变址寄存器+偏移量三者之和
-
基址寄存器可取BX或BP,变址寄存器可取SI或DI
-
段寄存器由基址寄存器决定
■ 基址寄存器是BX,则默认段为DS
■ 基址寄存器是BP,则默认段为SS
第02章 微机原理(8088)
2.1 8088CPU的基本原理
8086/8088 CPU的特点
-
采用并行流水线工作方式
-
支持多处理器系统
-
片内无浮点运算部件,浮点运算由数学协处理器8087支持(也可用软件模拟)
■ 注:80486DX以后的CPU均将数学协处理器作为标准部件集成到CPU内部
-
对内存空间实行分段管理
8086/8088 MPU
相同点:
- 寄存器:16位
- 地址线:20根,1MB内存
差异:数据总线,指令队列
-
数据总线:
■ 8086:16根
■ 8088: 8根(准16位机)
-
指令队列:
■ 8086:6字节
■ 8088:4字节
8088内部结构:EU和BIU
- EU(Execute Unit,执行单元):负责执行指令或运算
- BIU (Bus Interface Unit,总线接口单元):负责读指令和数据
EU功能和内部构成
- 内部构成
■ 1)ALU:执行基本运算和处理.
■ 2)一组通用寄存器 + 标志寄存器
■ 3)EU控制系统:队列控制和时序控制 - 功能:负责执行指令或运算
■ 从指令队列中取指令代码,译码,在ALU中完成数据的运算,结果的特征保存在标志寄存器中
BIU功能和内部构成
构成:
- 1)四个段寄存器+ 指令指针IP
- 2)地址加法器:段地扯和偏移地址相加,形成20位物理地址
- 3)指令队列缓冲器: 6或4字节
- 4)总线控制逻辑:内外总线接口
功能:
- 具有预取指令的功能
■ 执行指令的同时从内存取下一条或几条指令放在队列中 - 指令执行顺序
■ 顺序指令执行
■ 执行转移指令后: 清除队列。从新地址取指并立即送往执行单元
8088工作原理:取指令-执行指令不断循环
8088并行工作方式:流水线
- 指令预取队列的存在使EU和BIU可同时工作
- 2级流水线
2.2 8088的运行(执行)环境
14个基本寄存器
-
8个通用寄存器
■ General Registers
■ 数据和地址寄存器各4个
-
1个指令指针寄存器
■ IP: Instruction Point -
1个状态标志寄存器
■ Flags Register -
4个段寄存器
■ Segment Registers
■ CS,DS,SS,ES
4个数据相关的寄存器:AX,BX,CX和DX
- 常用来存放参与运算的操作数或运算结果
- 16位数据寄存器,分为8个8位寄存器
■ AX: AH,AL
■ BX: BH,BL
■ CX: CH,CL
■ DX: DH,DL - 8位可以单独操作位
- 习惯使用
■ AX:累加器。多用于存放运算结果及与外设信息等
■ BX:基址寄存器。常用于存放内存地址
■ CX:计数寄存器。循环或串操作存放循环或重复次数
■ DX:数据寄存器。在32位乘除法运算存放高16位数
4个地址相关的寄存器:SP,BP,SI,DI
-
SP,BP,SI,DI:段内寻址时存放偏移地址
■ SP(Stack pointer)——堆栈指针寄存器
用来指示栈顶的偏移地址,必须与SS段寄存器联合使用确定实际地址
■ BP(base pointer)——基址指针寄存器
可以与SS寄存器联合使用来确定堆栈段中某一存储器单元地址
■ SI——Source Index Register 源变址寄存器
■ DI——Destination Index 目的变址寄存器
1个指令指针寄存器:IP
- 存储CPU将要执行的下一条指令的偏移地址
- CPU在执行完一条指令之后,会自动将下一条指令的偏移地址存入到IP中
1个状态标志寄存器:PSW
16位,包含9个标志位(6个状态位,3个控制位)
-
状态位:由算术、逻辑运算结果结果自动设置
■ 作为条件转移指令的转移控制条件
-
控制位:由用户或程序直接或间接设置。
-
状态位的例子
■ OF(Overflow Flag),溢出标志位
功能:标示符号数的运算结果是否溢出
-
控制位的例子
■ DF(Direction Flag),方向位
功能:用于控制字符串操作的地址步进方向
4个段寄存器:CS,DS,SS,ES
段寄存器和其他寄存器组合起来指向某个内存单元
数据存放规律
堆栈
- 例子:子程序调用的过程
调用发生后,主程序在CPU中的运行环境被破坏调用返回时,必须恢复主程序之前的运行环境
堆栈(STACK):
- 在子程序调用和中断服务时存储参数和现场数据
- 特殊内存
■ “后进先出”(LIFO)存储
■ 堆栈一端固定(栈底),另一端活动(栈顶),数据只允许从栈顶存取(进或出)
■ 栈指针:指示栈顶位置(Stack Poniter,SP) - 堆栈的伸展方向
■ 栈底的地址大,栈顶的地址小 - 栈的操作(PC)
■ 入栈:将一个数存入栈顶,并改变SP (变小)
■ 出栈:从栈顶读出一个数据,并改变SP (变大)
入栈操作:
-
PUSH SRC; SRC 代表寄存器或存储单元地址
-
功能:将寄存器或存储单元中的一个字压入堆栈
-
操作:
■ “先减后入”: SP-1→SP, 字高位→[SP]
SP-1→SP, 字低位→[SP]
-
结果:SP-2, 数据高对高,低对低存放
出栈操作:
-
POP DST ; DST 代表寄存器或存储单元地址
-
功能:将栈顶一个字传送到寄存器或存储单元中
-
操作
■ “先出后加”:
[SP]→字低位, SP+1→SP
[SP]→字高位,SP+1→SP
-
结果:SP+2, 数据低对低,高对高存放
2.3 数字电路、常用门和IC芯片
三态门:
典型应用:数据传输方向控制、总线存取控制、模拟开关
触发器——D触发器
锁存器——D锁存器
功能表:
太难了而略过的内容:
锁存器74HC373:8D三态锁存器
Intel 8282:三态锁存器
异步清零的锁存器:74LS273
74LS244 ——缓冲器(实质是三态开关)
74LS245 ——缓冲器(实质是三态开关)
缓冲器—— Intel 8286 (实质是三态开关)
基本芯片–译码器
3-8译码器
2.4 8088微处理的外部结构
[PPT02 P60-87]
2.5 8088处理器时序和总线周期
[PPT02 P89-99]
2.6 IA-32发展历史
[PPT02 P101-115]
第03章 接口概念和原理
3.1 接口/端口的定义
- 任何两电路或设备间的连接电路都可称接口
- 接口是一组特殊控制电路,介于CPU与内存、CPU与外设之间
- 各种外设都必须通过接口才能和CPU(或总线)相连
■ 寻址:确定设备的地址,区分不同的设备;
■ 缓冲:适配外设与CPU的工作速度;
■ 转换:适配外设与CPU的信息格式、类型、幅度;
■ 时序:外设与CPU的工作时序。
- 接口电路的组成:由多类/多个寄存器构成
■ 数据寄存器,暂存数据
■ 状态寄存器,暂存状态
■ 命令寄存器,暂存命令
定义:
端口:寄存器的另一称呼
- 端口**【PORT】**
■ 端口就是接口中的寄存器CPU,与外设信息交换场所
■ 端口:可寻址(端口地址)
微机的端口
- 16根I/O线:地址空间216 = 64K
- IBM:A0~9线有效,地址空间210 = 1K:000H ~ 3FFH
- PC系统IO端口的分配
■ 前256个端口:000h-0FFh,系统外设占用
■ 后768个端口:100h-3FFh,常规外设占用
3.2 端口访问指令
3.3 接口/端口地址设计
第05章 定时器/计数器和8253A
定时(计时)
- 为CPU和外设提供时间标记或一段时间
- 时序,各种周期,时间片、系统时间、时间间隔、运行时间
8253A的结构和基本特点
- 有3个16位相互独立的计数器:T0, T1, T2
- 每个计数器都可以按照二进制或二-十进制计数
- 每个计数器可设置6种不同的工作方式
- 每个计数器可以预置计数初值(时间常数)
- 计数器的当前计数值可被CPU读出
略过:8253A
第06章 中断和8259A
略过:8259A
第07章 直接内存存取(DMA)
略过:8237A
第08章 并行接口和8255A
略过:8255A
第09章 串行接口和8251
略过:8251A
第10章 DA转换和AD转换
略过:ADC0809
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188816.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...