汇编语言与微机接口--8086芯片
目录
在学习8086芯片之前,我们要对微处理器有一定的了解
1.微处理器:
1.1基础认识:
- 微处理器
只是一个中央处理器(CPU),由算术逻辑部件(ALU),累加器和通用寄存器组,程序计数器,时序和控制逻辑部件,内部总线等组成。微处理器不能构成独立工作的系统,也不能独立执行程序。
- 微型计算机
由CPU,存储器,输入/输出接口电路和系统总线组成,具有计算功能,能独立执行程序,但不能显示或输出,仍不能正常工作。
- 以微型计算机为主体,配上外部输入/输出设备及系统软件就构成了微型计算机系统,这样就可以正常工作了。
2.1构成:
- 运算部分:
算数逻辑单元(ALU)寄存器
标志寄存器
- 控制部分
指令寄存器
指令译码器
控制单元PLA
2.8086
2.1功能
EU
----执行部件,负责指令的译码和执行
- 指令的执行(在ALU中完成)
- 暂存中间的运算结果(通用寄存器中)
- 保存运算结果特征(标志寄存器FLAGS中)
标志寄存器FR
有的地方也叫做PSW
CF:无符号数进行加减时,最高位产生进位或借位时置1
OF: OF=(最高位运算后进位状态)异或(次高位运算后进位状态);
PF:低八位包含的1的个数为偶数,置1
AF:第三位向第四位有进位,置1
ZF:计算结果为0,置1
SF:符号位状态
DF:串操作地址步进方向,1是从大到小,0是从小到大
IF:可屏蔽中断开关,置1为打开。进入中断后自动置0
TF:置1则CPU处于单步运行方式
BIU
-----总线接口部件,负责与存储器和I/O端口传送数据
- BIU使用指令队列电路来实现流水线操作,该队列为先进先出队列(FIFO),有两个指针,允许预取6个字节的指令代码。
预取指令到指令队列,访问内存或者外设中的操作数,响应外部的中断请求和总线请求
执行部件和总线接口部件协同工作,并行的流水线工作
2.2寄存器结构
- 数据寄存器:
AX(累加器)BX(基址寄存器)CX(计数器)DX(数据寄存器)
- 段寄存器:
CS(代码段寄存器)SS(堆栈段寄存器)DS(数据段寄存器)ES(附加段寄存器)
- 地址寄存器/变址寄存器:
SP(堆栈指针寄存器:总是指向栈顶)BP(基址变址寄存器)SI(源变址寄存器)DI(目标变址寄存器)
- 控制寄存器:
IP(指令指针寄存器)FLAGS(标志寄存器)
2.3存储器组织:
存储器的操作完全基于物理地址,8086有20根地址线,内部总线和内部寄存器均为16位
- 存储器分段:
存储空间按照需要划分成若干逻辑段,逻辑段开始的地址必须是16的倍数,逻辑段空间最大为64K
每个逻辑段的长度不得大于64KB,64KB是由偏移地址是16位二进制决定的,寻址空间最大为216B=64KB
2.4物理地址的确定:
段地址:段首的物理地址为XXXX0H
段内地址:该存储单元相对于段内第一个存储单元的距离
相对地址/偏移地址EA:16位
计算:
物理地址=段地址*16(10H)+偏移地址
逻辑地址=段地址:偏移地址
2.5存储器的区域:
程序区:CS
堆栈区:SS
数据区:DS ES
2.6逻辑地址的来源:
2.7引脚:
CLK:时钟信号输入
NMI:上升沿触发,非屏蔽中断输入端
INTR:高电平有效,可屏蔽中断请求输入端
RD’:输出,低电平有效,读取指令
WR’:输出,低电平有效,写入指令
M/IO’:1:存储器操作;0:IO口操作
- READY:输入,高电平有效,
1. 每个总线周期的T3状态对READY信号采样,
2. 如果没有准备好就加入一个TW状态,
3. 在TW末尾继续对READY采样,如果还没准备好就一直加。
- TEST’:输入,低电平有效
1. 每隔5个时钟周期重复检测该信号,
2. 当检测到该信号为低电平时,等待状态结束。
- RESET:输入,高电平有效,复位信号
1. 高电平宽度至少大于4个时钟周期。
2. 当信号有效时,CPU结束当前操作,并对CPU内的标志寄存器, IP, DS, SS, ES及指令队列清零,
3. 而将CS设置为FFFFH, 当复位信号变为低电平时,CPU从FFFF0H处开始执行程序。
BHE’/S7:BHE和A0信号组合使用来选择读取高8位(奇地址)或者低8位(偶地址)
BHE’ A0 操作 数据引脚
0 0 从偶地址开始读写一个字(16位) AD15~AD0
1 0 从偶地址单元或端口读写一个字节(8位) AD7~AD0
0 1 从奇地址单元或端口读写一个字节(8位) AD15~AD8
0 1 从奇地址单元开始读写一个字(16位)(在第一个总线周期,将低8位数据送至 AD15~AD8, AD15~AD8
1 0 在第二个总线周期,将高8位数据送至AD7~AD0。在CPU内部进行调整 AD7~AD0
- INTA’:输出,低电平有效
当外设向CPU申请可屏蔽中断INTR,CPU如果允许中断,则连续发出两个负脉冲给外设。第一个负脉冲通知外设已受理中断;外设在第二个负脉冲时向数据总线上发送中断类型码。
ALE:输出,高电平有效,地址数据复用线的地址选择
DEN’:输出,低电平有效,地址数据复用线的数据选择
DT/R’:数据收发方向控制端,1:发送;0:接受
HOLD:输入,高电平有效,看下面
HLDA:输出,高电平有效
- 最大最小的区别
最大模式的控制总线信号由专用的总线控制器8288产生,最小模式所有的总线控制信号都是由CPU直接产生
地址锁存器:
利用下降沿将地址锁存
读总线周期:
T1:T1状态后期,ALE信号变为低电平,利用ALE将BHE锁存在LS373锁存器中
T2:AD0~AD15为高阻,为输入数据作准备;A19 ~A16变为S3 ~S7;注意DEN’的状态和数据信号不一致
T3: D15~D0到数据总线,CPU获得数据。
T4: 数据消失,控制信号复位,为下一个总线周期做准备
如果在T3状态,READY为低电平,则在T3后插入Tw,控制信号及数据信号不变。
写总线周期:
T1:地址A0~A19上线,T1状态后期,ALE信号变为低电平,利用ALE将BHE锁存在LS373锁存器中
T2: A19~A16变为S3 ~S7;DEN’有效,打开数据总线;D15 ~D0由CPU送至数据总线
2.88086和8088区别:
- 1:数据总线宽度不同
8088的外部数据总线宽度是8位,8086为16位。
- 2:访问存储器和输入输出控制信号含义不同
8088——IO/M=0表示访问内存;
8086——IO/M=1表示访问内存。
- 3:其他部分引线功能的区别
在8086中SS0引脚改为BHE,以适应16位的数据宽度