微机原理
自动生成的md文档,很乱,建议点我主页下载思维导图
存储器
组成
-
高速缓冲存储器(cache)
-
CPU和内存之间,提高CPU访问存储器的速度
-
单向,只能从内存读给CPU
- SRAM
-
-
-
主存储器(随机存储器RAM)
-
有一定的容量且速度较高的存储器作为内存,CPU可直接用指令对内存储器进行读写,半导体,掉电消失
-
静态SRAM
- 一般作cache,MOS管构成,不需要刷新电路就能保存数据,具有静止存储的作用,SRAM追求速度,一般容量比较小
-
动态DRAM
- 一般用作内存,DRAM的信息具有一定的时间性,超过一定时间数据就会消失,所以为了数据常在,需要周期性的对所在数据重写,容量大,廉价
-
-
-
外存储器(只读存储器ROM)
-
CPU不能直接用指令对外存进行读写,要使用外存的信息必须先调入内存,容量大,速度低,存放暂时不用的文件,永久保存,掉电不消失
-
PROM
- 一次性,写入之后不能更改
-
EPROM
- 可以重复编程,可以多次改写内容,紫外线可擦除
-
EEPROM
- 电可擦除只读存储器
-
-
存取周期
- 取数时间
- 启动间隔
容量
-
2的地址线次方*数据线
-
2的10次方=1K
- 单元数*每个单元位数=总容量
-
SRAM6264
-
CE
-
CS非
-
使能引脚(片选)
- 满足对应的电平才能工作
-
-
-
WE非
- 写入允许引脚
-
OE非
- 读出允许引脚
Intel 2164
DRAM
-
D IN/D OUT 两条数据线(算容量是一位)
-
A0~A7八条地址线,行和列分时工作
-
第一次送行第二次送列
-
读写过程
-
-
-
RAS
- 行地址选通信号
-
CAS
- 列地址选通信号
-
WE非
-
写入允许引脚
- 0写1读
-
-
2的16次方个单元
-
64Kb
- 分为4个128*128
-
-
先送行再送列,就选中了某一个单元
- 一次选中四个存储模块的相同行,每次刷新4*128=512个单元
-
2ms刷新一遍,每个刷新周期15.625微秒
门电路
38译码器
- 74LS138
全译码
- 子主题 1
容量=末字节地址-首地址+1
I/O接口
组成
-
子主题 4
- 数据口
- 状态口
- 控制口
编址方式
-
统一编址
-
I/O端口和内存单元统一编址,把IO端口当作内存单元对待,从整个内存空间中划出一个子空间给IO端口,用访问存储器的指令对IO端口进行操作
- 优点:访问内存的指令访问IO,数据处理能力强,不区分内存和外设,可以减少引脚
- 缺点:指令操作不清晰,IO端口占用了一部分内存空间
-
-
独立编址
-
I/O端口编址和存储器编址相互独立,分开设置,互不影响,对IO端口的操作使用输入输出指令(I/O指令)
- 优点:不占用内存空间,使用IO指令,程序清晰,容易看出是IO操作还是存储器操作
- 缺点:需要特定的引脚区分内存和IO单元的访问
-
指令
- IN AX/AL,DX/00-FFH
- OUT DX/00-FFH,AX/AL
CPU与外设交换数据的方式
-
来自CPU,速度较低,软件上都是用CPU执行程序完成的,硬件上读写控制信号地址信号都是CPU发出的,缺点:程序的执行速度限定了传送的最大速度
-
程序控制方式
-
无条件传送方式(同步),总是处于准备好的状态,软件和接口简单,效率低,用于简单外设,适用范围窄
- 子主题 1
-
查询传送方式(异步),传送前,CPU对外设状态检测,不是随时准备好,效率要求不高,外设要提供状态信息,效率低
-
中断传送方式,CPU效率高,实时性好,速度快,缺点程序编制较为复杂
-
DMA传递方式
-
外设和内存之间直接传递数据的方式,不需要CPU干预,也不需要软件介入,总线由DMAC控制,CPU暂时放弃总线控制权,内存和外设的地址和读写控制信号由DMAC提供
- 周期挪用
- 周期扩散
- CPU停机方式(常用,简单)
-
传送方式
-
单字节传送
-
成组传送
- 请求传送
-
-
-
DMAC基本功能
- 向CPU发出请求
- 接收CPU发出的允许DMA相应信号
- 寻址存储器即能输出地址信息和修改地址
- 能像存储器和外设发出读写控制信号
- 控制传送的字节数,判断DMA是否结束
- DMA传送结束后,能结束DMA请求信号,释放总线,使CPU恢复正常工作
-
-
中断
中断过程
-
中断请求
- 外部中断源向CPU发出请求,通过INTR(可屏蔽中断请求引脚)或NMI(不可屏蔽)引脚引入CPU
-
中断优判
- 判定中断优先权,能实现中断嵌套
-
中断响应
-
CPU每执行一条指令后查询是否有中断请求,并且此时CPU允许(IF=1)CPU相应中断
-
响应中断后系统做的工作
-
关中断(IF清零)
-
保存FR和断点
- 保存到堆栈,SP-6
-
形成中断入口地址
-
-
-
-
中断处理
-
执行中断服务程序
- 保护现场,先PUSH再POP,入栈保护现场
-
-
中断返回
- 在中断返回前,要开中断,以便再次相应中断,最后一条实指令IRET,弹出断点地址送IP和CS,和标志寄存器FR
优先级
-
软件查询方式
- 顺序查询,同时有中断请求先查谁执行谁
-
硬件查询方式
- 简单硬件方式,菊花链式或链式
- 专用硬件方式—可编程的中断控制器
结构
-
分类
-
256个中断源
-
硬件中断
-
外部中断,由外部硬件产生
-
NMI,非可屏蔽中断
-
不受IF控制,一般只有一个
- 类型号为2
-
-
INTR,可屏蔽中断,受IF影响,IF等于1才能相应中断,0屏蔽
-
中断类型是由外部读入的,7个总线周期
-
(1)执行第一个INTA周期(应答周期)(INTA是中断响应信号)
- INTA应答
-
(2)执行第二个INTA周期,取中断类项码,CPU接到类型码后将他左移两位(乘四),形成向量表指针存入暂存器
- INTA取类型码,
*4变成中断向量表地址
- INTA取类型码,
-
(3)执行一个总线写周期,将FR压栈,同时IF和TF为0,禁止其他可屏蔽中断进入,禁止出现单步中断
- 压FR,关IF,TF
-
(4)执行一个总线写周期,CS压栈
- 压CS
-
(5)执行一个总线写周期,IP压栈
- 压IP
-
(6)执行一个总线读周期,从中断向量表中取出中断服务程序入口地址的偏移量送IP
- 取入口地址IP
-
(7)执行一个总线读周期,从中断向量表中取出中断服务程序入口地址的段地址送CS
- 取入口地址CS
-
-
-
-
-
软件中断
-
根据软件指令或者软件产生的,与外部电路完全无关
-
软中断不受IF影响,无法用软件禁止,固定
- 0号中断:除法出错中断
- 1号中断:单步中断
- 3号中断:断点中断
- 4号中断:溢出中断
- INT n :指令中断
-
-
-
中断向量表
-
存放中断服务程序的入口地址,每个中断服务程序的入口地址都是由段地址:偏移地址,所以每个中断占用4字节,地址为00000h-003FFH共1KB,所以支持1KB/4B=256个中断
-
中断类型码
-
0号 00000-00003
1号 00004-00007
2号 00008-0000B
N号中断 4N-4N+3- 中断类型码,位于向量表的位置是类型码*4
-
-
优先级
-
内>外(NMI>INTR)>单步
- 同类型类型号越小优先级越高
8259A可编程中断控制器
-
特点
-
8级优先权控制,级连可扩展到64级、
- 9片8259A
-
每一级中断可以屏蔽和允许
-
在中断响应周期(第二个INTA非),8259A可以提供中断向量号
-
8259A的工作方式可以编程
-
-
引脚
-
CS非
-
使能引脚(片选)
- 满足对应的电平才能工作
-
-
D0-D7
-
双向数据总线
- 输出类型码
-
-
WR非
- 写
-
RD非
- 读
-
A0
-
片内选择
- 8259有两个端口地址一个偶地址一个奇地址,0为偶地址,1为奇地址
-
-
INTA非
-
中断响应输入
- 和CPU的INTA非相连接
-
-
IR0-IN7
- 中断输入
-
INT
-
中断输出
- 通过INT引脚向INTR发出中断申请
-
-
SP非/EN非
- 从程序/允许缓冲
-
CAS0-CAS2
- 级连
-
-
IMR
-
中断屏蔽寄存器
- 8位二进制IMR的Dn位为1,IRn就被屏蔽
-
-
IRR
-
中断请求寄存器
- IRn中断请求,8位二进制IRR的Dn位为1
-
-
ISR
-
中断服务寄存器
- 正在服务IRn,8位二进制ISR的Dn位为1,
在执行某一位中被另一位优先级高的打断,
两位同时为1
- 正在服务IRn,8位二进制ISR的Dn位为1,
-
-
8259初始化
-
ICW1,芯片控制字,A0偶地址
-
ICW2,中断类型控制字,A0奇地址
-
低三位为IR0-IR7
-
高五位初始化写入
-
高五位和低三位组成中断类型码
- 此为IR0,后七位顺序加一
-
类型码=ICW2高五位,IRn低三位
-
-
ICW3,主/从片初始化
- 接入IRn位,主片ICW3的Dn位为1,从片ICW3低三位为n
-
ICW4,方式控制字
-
OCW1屏蔽操作命令字
-
8位二进制屏蔽谁,那一位为1
- 写IMR
-
-
OCW2中断方式命令字
-
设置优先级和中断结束方式
- EOI
-
-
OCW3状态操作命令字
-
读取内部寄存器的值
- 读ISR,IRR
-
-
芯片
二极管
- 子主题 1
8255A可编程并行通信接口芯片
-
组成
-
D0-D7
- 数据总线
-
PA0-PA7
-
PC0-PC7
-
PB0-PB7
-
RESTE
- 复位
-
A1,A
-
片内寻址线(输入)
-
00,A口
-
01,B口
-
10,C口
- 11,控制口
-
-
-
-
-
C口PC7-PC4可以被A口征用
- PC3-PC0可以被B口征用
-
A0接8086的A1,A1接8086的A2
-
A口有三个工作方式,B口两个,C口1个
-
-
控制字
-
各端口的方式选择控制字
-
方式选择控制字
-
MOV AL,控制字(小于255)
OUT 控制端口地址,AL
-
-
C端口按位置1/置0控制字
-
最高位为0
-
三位任意
-
D1-D3为端口为PC0-PC7
-
D0为要置的0或者1
-
-
-
-
-
-
工作方式
-
方式0
-
基本输入输出
- ABC上C下各端口独立,16种组合
- 同步传送(无条件)和查询传送
-
-
方式1
-
必须在端口C的配合下工作
- 三位控制A,另外三位控制B,并提供中断逻辑
-
-
-
子主题 4
8253可编程定时/计数器
-
组成
-
通道0/1/2
-
CLK0
-
输入基准信号
- 计数对CLK计数
-
-
GATE0
- 控制端(工作/不工作)
-
OUT0
-
输出
- 记满或者记不满由OUT输出状态
-
-
-
DB
- 8位数据线
-
A1,A0
-
片内寻址,4个端口地址
- 计数器0,1,2,控制口
-
-
WR非/RD非
- 读写使能
-
CS非
- 片选信号
-
-
启动方式
-
软件启动(程序指令启动)
- GATE保持高电平,向8253送入完整初值启动
-
硬件启动(外部电路信号启动)
- GATE有一个上升沿启动
-
-
结构
-
16位初值寄存器
- 不变
-
16位计数寄存器
- 自减
-
控制寄存器
-
先减一,后判断是否等于0
- 二进制最大初值0,65536次
- 十进制(BCD)最大初值0,10000次
-
-
初始化
-
先写控制字
-
D7D6计数器选择
- 123
-
D5D4读写
- 00计数器锁存
- 10只读写高八位
- 01只读写低八位
- 11先读写低八位再读写高八位
-
D3D2D1方式选择
- 000-101方式0-5
-
D0
-
BCD
-
0二进制
- 1十进制(BCD)
-
-
-
-
-
再写初值
- 初值=f clk/f out=Tout/Tclk=f clk*Tout(f=频率,T=周期)
-
-
工作方式
-
方式0
-
计数结束中断
- 软件启动
-
-
方式1
-
单稳态触发器
-
硬件启动
- GATE端控制开启
-
-
-
方式2
-
频率发生器
-
工作中高电平,最后一个CLK时输出负脉冲
-
-
-
方式3
-
方波发生器
-
输出对称方波,前一半为高,后一半为低(单数就前多后少)
-
-
-
方式4
-
软件触发选通
-
软件启动
-
-
-
方式5
-
硬件触发选通
-
硬件启动
GATE端控制开启
-
-
-
-
连接图
-
级联
指令
两个操作数不能同为存储器数
传送类指令
-
MOV AL,BL
- 传送,BL的内容送给AL
-
PUSH AX
- 压栈,SP-2,把AX的数据放入栈
-
POP BX
- 出栈,从栈中弹出数据给BX,SP+2
-
XCHG AX,BX
- 数据交换,AX,BX互换数据
-
LEA AX,[BX]
- 把BX的地址给AX
算术运算指令
-
ADD AL,3H
- AL=AL+3H
-
ADC AH,3H
- 带进位的加法,AH=AH+3H+CF
-
SUB BX,3
- BX=BX-3
-
SBB BX,3
- 带借位的减法,BX=BX-3-CF
-
INC AL
- AL=AL+1,自增
-
DEC AL
- AL=AL-1,自减
-
NEG AL
-
AL=0-AL,取补,模-AL
-
对80H和8000H,操作数没变化,但OF=1
- 只要操作数不为0,CF=1
-
-
-
CMP OP目,OP源
-
OP目-OP源,根据结果置标志位
-
ZF=1,相等
- CF=1,OP源大
-
-
-
MUL OP
-
无符号乘法,AX=ALOP八位,(DX,AX)AXOP十六位
- 没有用到高位CF=OF=0
-
-
IMUL OP
-
有符号乘法,AX=ALOP八位,(DX,AX)AXOP十六位
- 当AH/DX的每一位等于AL/AX的最高位,OF=CF=0
-
-
DIV OP
-
无符号除法,AX/OP八位,AL=商,AH=余数 ,(DX,AX)/OP十六位,AX=商,DX=余数
-
八位还是十六位根据OP
- 子主题 1
-
-
-
IDIV OP
- 有符号乘法,转为真值再计算,商和余都是负的
-
CBW
- 将AL的最高位扩展到AH
-
CWD
- 将AX的最高位扩展到DX
BCD运算指令
除了除法都是紧跟在运算指令之后
-
AAA
-
对AL中两个非组合BCD码相加的和进行调整,结果存在AX中
- 大于10,+6调整
-
-
DAA
- 组合BCD加法调整
-
AAS
- 非组合BCD减法调整指令
-
DAS
- 组合BCD减法调整
-
AAM
- 非组合乘法调整指令
-
AAD
- 非组合除法调整(放在除法之前)
逻辑运算指令
除非外,其余指令会使OF=CF=0
-
AND OP目,OP源
-
按位与运算
-
&
-
AND AL,0FH,高四位清零
- 置“0”
-
-
-
-
OR OP目,OP源
-
按位或
-
|
- 置“1”
-
-
-
NOT OP
-
非
-
按位取反
-
只能是寄存器数或者存储器数,不能是立即数
- 不影响标志位
-
-
-
-
XOR OP目,OP源
-
按位异或
-
相同为零,不同为1
- 和0异或不变,和1异或取反
-
-
-
TEST OP目,OP源
-
测试,进行与运算,不回送结果
- 根据ZF标志位判定某位为1/0
-
移位指令
计数值只能是1或者CL
-
非循环移位指令
-
左移
-
逻辑SHL OP目,计数值
- 最高位给CF
-
算术SAL OP目,计数值
- 计数值只能是1或者CL
-
-
右移
-
无符号用逻辑SHR OP目,计数值
- 左补0,最低位给CF
-
有符号用算术SAR OP目,计数值
- 左补最高位,最低位给CF
-
-
-
循环移位指令
-
不带进位
-
左移
-
ROL OP目
- 最高位给CF,然后移动到最后
-
-
右移
-
ROR OP目
- 子主题 1
-
-
-
带进位
-
左移
-
RCL OP目
- 把CF移动到最后,最高位给CF
-
-
右移
-
RCR OP目
- 把CF移动到最后,最高位给CF
-
-
-
串操作指令
- MOVS OP目,OP源
- 字符串传送指令
- MOVSB
- 字节传送
- 把DS:[SI]的内容送给ES:[DI],SI+1,DI+1
- DF=1,变为减法
- MOVSW
- 字传送
- 把DS:[SI]的内容送给ES:[DI],SI+2,DI+2
- DF=1,变为减法
- CMPS OP目,OP源
- 字符串比较指令
- CMPSB
- 字节比较
- DS:[SI]的内容是否等于ES:[DI]的内容
- ZF=1,相等
- CMPSW
- 字比较
- DS:[SI]的内容是否等于ES:[DI]的内容
- ZF=1,相等
- SCAS OP
- 字符串搜索指令
- SCASB
- 把AL中的内容和ES:[DI]指定的一个字节比较
- ZF=1找到了
- SCASW
- 把AX中的内容和ES:[DI]指定的一个字比较
- ZF=1找到了
- LODSB
- 取字符串指令
- LODSB
- 把DS:[SI]的内容送给AL
- LODSW
- 把DS:[SI]的内容送给AX
- STOSB
- 存字符串指令
- STOSB
- 把AL的内容送给ES:[DI]
- STOSW
- 把AX的内容送给ES:[DI]
-
重复前缀指令
-
无条件重复
-
REP
- 若CX=CX-1不等于0重复,等于0跳出
-
-
条件重复
-
REPZ/REPE
- CX不等于0且ZF=1重复
- 相等,重复
-
REPNZ/REPNE
- CX不等于0且ZF=0重复
- 不等,重复
-
-
转移指令
-
寻址方式
-
直接寻址方式
- 段内直接寻址方式
- 段间直接寻址方式
-
间接寻址方式
- 段内间接寻址方式
- 段间间接寻址方式
-
-
无条件转移指令
-
段内转移
-
JMP OP
-
JMP SHORT OP
- 段内直接短转移(8位)
-
JMP NEAR PTR OP
- 段内直接近转移(16位)
-
JMP WORD PTR OP
JMP BX- 段内间接转移(16位)
-
-
段间转移
-
JMP 2000H:1000H
- CS:IP
-
JMP FAR PTR OP
-
段间直接转移
-
-
JMP DWORD PTR OP
-
段间间接转移
- 取新的CS:IP替换当前的
-
-
-
CALL OP
-
调用指令
-
RET
-
子主题 2
- 子程序返回
-
-
-
-
条件转移
-
J+标志位首字母 =1跳
J+N标志位首字母 =0跳-
JC
-
进位为1跳
- JNC
-
-
JZ
- 结果为0跳
-
JO
- 溢出跳
-
JP
- 奇偶位1跳
-
JS
- 符号位1跳
-
-
无符号数
-
J+
- A大于
- B小于
- E等于
- N取反
-
-
有符号数
-
J+
- G大于
- L小于
- E等于
- N取反
-
-
循环控制指令
-
计数循环
-
LOOP 目标标号
- CX不等于0循环
-
LOOPZ/LOOPE 目标标号
- CX不等于0且ZF=1循环
-
LOOPNZ/LOOPNE 目标标号
- CX不等于0且ZF=0循环
-
JCXZ 目标标号
- CX=0跳到目标标号
-
处理器控制指令
-
标志操作指令
-
CLC
-
CF=0
-
STC
-
CF=1
-
CMC
- CF=CF取反
-
-
-
-
-
CLD
-
DF=0
- STD
-
-
CLI
-
IF=0
- STI
-
-
-
CPU控制指令
-
HLT
- 处理器暂停指令
-
WAIT
- 处理器等待指令
-
NOP
-
空操作指令
- 3个时钟周期
-
-
-
输入输出指令
-
用于IO设备,直接寻址范围00H-FFH,8位,间接0000H-0FFFFH,64K个
-
IN 累加器,端口
-
输入指令
-
IN AL/AX,00H-0FFH
- IN AL/AX,DX
-
-
-
OUT 端口,累加器
-
输出指令
-
OUT 00H-0FFH,AL/AX
- OUT DX,AL/AX
-
-
-
-
中断指令
-
INTO
-
溢出中断指令
- OF=1产生一个中断
-
-
INT n(n是中断类型号)
- 软中断指令
-
IRET
-
中断返回指令
- 压CS IP FR
-
-
111
-
ORG 立即数
- 声明下一条指令的偏移地址
-
OFFSET 变量名或标号
- 取偏移地址
-
SEG 变量名或标号
- 取段首地址
-
TYPE 变量名或者标号
- 返回类型值,1,2,4,-1,-2
-
LENGTH 变量名
- 求长度
-
SIZE 变量名
- =TYPE*LENGTH
-
类型 PTR 表达式
- 类型声明
伪指令
-
等值伪指令
-
符号名 EQU 表达式
-
不占用存储单元
- 可以在任意位置
-
把符号名替换成表达式,等价define
-
-
-
等号伪指令
-
符号名=表达式
- 不占内存单元
-
-
数值表达式
-
定义字符串
-
变量名 DB,数据(一个或者多个)
- DB字节
-
DW字
- DD双字
-
-
ASCII字符串
-
DB定义
- DATA DB ‘ABCDE’
-
-
?
-
预留单元
-
DATA DB,1,?,3
- 数据是残留数据
-
-
-
重复定义子句n DUP(表达式)
-
C DB 100 DUP(0)
- C单元开始定义100个0
-
可以多次
-
C DB 3 DUP(1,2,3)
- c单元开始定义1 2 3 1 2 3 1 2 3
-
-
可以嵌套
-
C DB 100 DUP(5 DUP (1),2)
- 定义5个1,剩下的2
-
-
-
段
-
段定义
- 段名 SEGMENT
- 段名 ENDS
-
段寄存器说明伪指令
- ASSUME 段寄存器:段名
-
子程序
- 段名 PROC
- 段名 ENDP
-
宏
- 宏名 MACRO
指令
- 宏名 MACRO
-
DOS系统功能调用
-
INT 21H
- 系统功能调用
-
键盘输入单字符,1号
-
MOV AH,1
INT 21H- 键盘输入的单字符的ASCII码存入AL,
-
-
输出单字符,2号
-
MOV DL,’A‘
MOV AH,2
INT 21H- 输出DL中的字符
-
-
输出字符串,9号
-
BUF DB ’HELLO WORD$‘
LEA DX,BUF
MOV AH,9
INT 21H- 字符串必须以美元符号$结尾
- 输出DX字符串
-
-
返回操作系统,4CH号
-
MOV AH,4CH
INT 21H- 退出
-
-
键盘输入字符串,0AH号
-
BUF DB 200,?,200 DUP(?)
LEA DX,BUF
MOV AH,0AH
INT 21H- 缓冲区定义的第一个是字节数
第二个预留,系统填写实际的字符数
第三个开始存放字符串
- 缓冲区定义的第一个是字节数
-
汇编语言程序结构
-
框架
- DATA SEGMENT
;定义数据段
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
代码…
MOV AH,4CH
INT 21H
CODE ENDS
END START
- DATA SEGMENT
-
子主题 12
-
自由主题
-
子主题 1
- 子主题 1
-
-
杂项
基础知识
-
1
-
微处理器
-
1.微型计算机上的CPU,核心
2.由运算器ALU,控制器CU,寄存器R组成- 高速缓冲
-
-
微型计算机
- 1.硬件系统,微处理器+主存+I/O接口芯片+系统总线
2.裸机,微型机
- 1.硬件系统,微处理器+主存+I/O接口芯片+系统总线
-
微型计算机系统
- 微型计算机+软件系统(系统软件和应用软件)
-
字长
- CPU一次同时传送和处理的二进制位数
- 位:bit
字节:Byte,8bit=1B
字:Wrod,16位机16bit=2B=1Word
-
五大部件
二进制
设计思想-
运算器,控制器,存储器,输入输出设备
-
物理,电,高低/开关
-
存储程序
- 自动执行程序
-
-
-
2.21
-
CPU引脚分时复用
-
AB和DB共用引脚,在同一根线上,不同时间,出现不同类型的信息
- 锁存器存地址
-
-
-
时钟周期
-
时钟周期是系统主时钟一个周期信号所持续的时间,大小等于频率的倒数,是CPU的基本时间计量单位
-
-
总线周期(800ns)
-
总线周期是CPU通过外部总线对存储器或者I/O端口进行一次读/写操作的过程,总线周期由若干个时钟周期(T)组成,大于等于4个
-
T1状态,CPU向多线复用总线上发送地址信息(A19~A0)指出要寻址的内存单元地址或者I/O端口地址,同时送出地址锁存信号ALE,在ALE的下降沿将地址信息存入锁存器
-
T2状态,CPU从总线上撤销地址,为数据传输做准备
-
T3状态,总线低16位出现CPU要读/写的数据
-
Tw,若外设或者内存来不及与总线交换数据,通过CPU的READY信号判定是否插入等待状态Tw
- 查询READY信号的次数永远比插入Tw的次数多一次。
-
-
T4状态,总线周期结束,将数据读入CPU
-
-
-
总线BUS
-
计算机系统各部件之间传输信息的公共通道
-
地址总线AB
-
数据总线DB
- 低八位,总是出现偶地址单元的数据,D0-D7
- 高八位,总是出现奇地址单元的数据,D8-D15
-
控制总线CB
-
-
-
00000~003FFH
- 中断向量表,能放256个中断
-
引脚
- BHE非,数据总线高八位(奇地址数据)是否有效,=0有效
- AO,地址线最低位(偶地址数据)是否有效
-
8086重新上电或者复位
- 地址是FFFF0H
-
8086有专用的IN、OUT指令
-
I/O和内存独立编址
-
I/O端口使用16位地址A0A15,0000HFFFFH
- 可寻址空间为64KB
-
内存A0~A19,20根,1MB
-
-
截图
-
- 自由主题
-
-
自由主题
-
子主题 2
-
子主题 1
- 子主题 1
-
-
8086
8086
16位数据总线,20位地址总线,所以可以寻址2的20次方=1MB
-
执行部件(EU)
-
通用寄存器
-
数据寄存器
都可以拆解位AH,AL,BH,BL
-
累加器AX
- 可以拆解为AH,AL存放数据(拆解后不能放地址)
- 乘除,外设交换信息
-
基址寄存器BX
- 间接寻址时放地址(取正常数据)
-
计数寄存器CX
- 循环,移位,涉及到次数
-
I/O间接寄存器DX
- 外设交换信息存地址AX不够用时放高16位
-
-
地址寄存器
-
变址寄存器
-
源变址寄存器SI
SI和DI只在串操作中有区别
-
目标变址寄存器DI
-
-
指针寄存器
-
堆栈指针寄存器SP
-
可以自动修改
- 堆栈指针偏移地址
-
-
基址指针寄存器BP
- (取堆栈数据)
-
-
-
-
控制寄存器
-
标志寄存器FR
-
状态标志
-
CF,进位标志位,最高位有进位/借位CF=1
- 无符号数
-
AF,辅助进位标志位,低四位向高四位有进位/借位AF=1
-
PF,奇偶标志位,低八位“1”的个数,偶数PF=1奇数PF=0
-
ZF,0标志位,运算结果为0,ZF=1
-
SF,符号标志位,运算结果最高位为1,SF=1
-
OF,溢出标志位,超出运算范围,OF=1
-
有符号数
- 最高位与次高位同时进位借位不溢出,单独借位溢出
-
-
-
控制标志
- IF,中断允许标志位,控制中断,IF=1允许中断,IF=0禁止
- DF,方向标志位,串操作方向起始位,DF=1逆向,DF=0正向
- TF,单步标志位,陷阱标志位,TF=1,CPU进入单步工作方式,单步中断
-
-
-
算数逻辑单元ALU
- 可完成8/16位算术逻辑运算,溢出放到FR
-
内部控制逻辑电路
-
产生逻辑
- 从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。
-
-
-
总线接口部件(BIU)
-
段地址寄存器
-
代码段CS
- IP(指针)
-
数据段DS
- SI,DI,BX
-
堆栈段SS
- SP(指针),BP
-
-
控制寄存器
-
指令指针寄存器IP(16位)
-
不能直接访问,CPU专用
-
存放下一条指令的偏移地址
- BIU自动修改IP的内容
-
-
-
地址加法器(20位)
-
逻辑地址向物理地址变换
逻辑地址=段地址:偏移地址
- 物理地址=段基址x16+偏移地址
-
-
指令队列缓冲器(6字节)
-
暂存预取指令,放入6字节指令队列
- 所以BIU和EU不同步工作,BIU提前预取指令
-
-
总线控制逻辑
- 引脚
-
引脚
-
输出
-
输入
-
双向
- 数据线
-
三态
- 高电平(1)
低电平(0)
高阻态()
- 高电平(1)
-
ALE:高电平有效,工作时输出1
RD非,低电平有效,工作时输出0- 有帽子,为非,0有效
引脚
-
VCC,电源
-
GND,接地
-
AD15~AD0,地址/数据复用引脚
-
A19A16/S6S3地址/状态复用引脚(输出)
-
BHE非
-
高八位数据是否有效引脚
- BHE非,数据总线高八位(奇地址数据)是否有效,=0有效
-
-
AO,地址线最低位(偶地址数据)是否有效
-
NMI
-
非屏蔽的中断引脚(输入)
- 边沿触发
-
-
INTR
-
可屏蔽中断请求(输入)
-
IF=0屏蔽
- 电平触发
-
-
-
RD非
- 子主题 1
-
CLK
-
时钟输入引脚
- CLK引入的时钟
-
-
RESET
-
复位引脚
-
高电平有效
-
维持4个时钟周期有效
-
复位信号一出现,CPU立即结束当前操作,进入复位操作,将标志寄存器(FR)、IP、DS、SS、ES清零,指令队列清空,CS置为0FFFFH
- 第一条指令的地址是0FFFF0H
-
-
-
-
-
READY
- 准备好引脚,输入,高电平有效
-
TEST非
-
MN/MX非
-
最小最大模式控制引脚,输入
-
MN给1是MIN最小,MX非给0是MAX最大
-
-
-
M/IO非
-
存储器或I/O端口访问选择信号,三态输出
- 判断数据是来自存储器还是外设
-
-
RD非
- 读信号,三态
-
WR非
- 写信号,三态
-
ALE
- 地址锁存允许信号,单向三态,输出
-
DEN非
-
数据允许信号
- 和数据同属出现,三态输出
-
-
DT/R非
- 数据发送/接收 控制信号
-
中断控制信号引脚
-
INTR
-
可屏蔽中断 请求信号
-
INTA非
-
中断响应信号
-
输出三态
- INTR申请之后通过INTA非应答
-
-
-
-
-
NMI
- 不可屏蔽中断 请求信号
-
-
DMA控制信号引脚
-
HOLD
-
总线请求信号
- 外部向CPU发出申请能不能使用总线
-
-
HLDA
-
总线请求响应信号
- 子主题 1
-
-