【汇编与接口】第二章8086微处理器

8086CPU的编程结构

在这里插入图片描述
8086CPU有16根数据线,20根地址线。

总线接口单元如上图右侧,CS为代码段寄存器;DS为数据段寄存器;SS为堆栈段寄存器;ES为附加段寄存器;IP存放下一条要取的指令的偏移地址,具有自动加1的功能。∑\sum为20位地址加法器,形成20位物理地址。指令队列用来存放待执行指令。

执行单元如上图左侧,AX、BX、CX、DX为四个通用寄存器,都可作为16位寄存器或两个独立的8位寄存器使用。SP为堆栈指针寄存器;BP为基址指针寄存器;SI为源变址寄存器;DI为目的变址寄存器
状态标志寄存器细分如下:
在这里插入图片描述

符号含义
ZF零标志位。ZF=1,结果为0,;ZF=0,结果不为0。
SF符号标志。SF=1,结果为负;SF=0,结果为正。(这个地方记得老师也说过结果为0的问题,不了了之)
AF辅助进位的标志。AF=1,有进位或借位;AF=0,无进位或借位。
PF奇偶标志。PF=0,为奇数;PF=1,为偶数。
OF溢出标志。OF=1,有溢出;OF=0,无溢出。
TF跟踪标志。TF=1,允许单步中断;TF=0,禁止单步中断。
IF中断允许标志。IF=1,开中断;IF=0,关中断。
DFDF=1,地址指针递减修改;DF=0,地址指针递增修改。

8086寄存器类型小结

8个通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI
2个控制寄存器:IP、F
4个段寄存器:CS、DS、SS、ES

BIU和EU的动作管理

在这里插入图片描述
BIU和EU工作是并行的,又是相互配合的,具体体现在:

  1. 当指令队列中有两个空字节时,BIU就启动,将新指令送入到指令队列。(感觉不太理解)
  2. EU在执行指令的过程中,需要访问存储器或者I/O口时,向BIU发出请求。
  3. 当执行转移指令、调用指令及返回指令时,指令队列自动清空。

8086CPU的工作模式和引脚功能

基本概念

机器周期:也称为时钟周期,是CPU时间基准,由计算机的主频决定。
总线周期:CPU通过总线访问存储器或I/O口所需的基本时间周期。以机器周期为单位。
指令周期:CPU执行一条指令所需要的时间称为指令周期,不同指令的指令周期的不等长的。以机器周期为单位。

8086的总线周期

在这里插入图片描述

8086CPU的总线周期包括四个基本的机器周期,称为4个T状态。
红1:8086CPU输出地址信息
红2:缓冲状态,地址信息被撤销,需外部地址锁存
红3:数据传输,允许插入(1-n)等待状态
红4:总线周期结束,收拾现场

8086CPU的工作模式

  1. 最小模式:单处理器模式
  2. 最大模式:多处理器模式

PS:在最大模式下,主处理器为8086,协处理器可为8087(数值运算的协处理器)和8089,输入/输出协处理器。

8086CPU的引脚功能

在这里插入图片描述
AD0−AD15AD_0-AD_{15}AD0AD15:双向、三态。地址/数据分时复用的引脚
A16/S3−A19/S6A_{16}/S_3-A_{19}/S_6A16/S3A19/S6:输出,三态。地址总线的高4位
BHE‾/S7\overline {BHE}/S_7BHE/S7:输出,低电平有效。高8位数据总线允许
CLKCLKCLK:输出,系统时钟输出引脚
RESETRESETRESET:输出,高电平有效。系统复位信号。
NMINMINMI:输出,上升沿触发。非屏蔽中断请求输出引脚(不得不处理的中断)。
INTRINTRINTR:输出,高电平有效。可屏蔽中断请求输出引脚。
READYREADYREADY:输出,高点平有效。准备就绪信号。
RD‾\overline {RD}RD:输出,低电平有效。读控制信号。
TEST‾\overline{TEST}TEST:输入,测试信号输入端。
MN/MX‾MN/\overline{MX}MN/MX:输入,最小/最大模式控制信号。高点平-最小模式;低电平-最大模式。

8086CPU的最小模式

在这里插入图片描述
引脚24-31的功能
ALEALEALE:输出,高点平有效。地址锁存允许。
DEN‾\overline{DEN}DEN:输出,低电平有效。数据允许信号。
DT/R‾DT/\overline RDT/R:输出,数据发送/接收控制信号。高点平数据发送;低电平数据接收。
WR‾\overline{WR}WR:输出,低电平有效。写控制信号。
INTA‾\overline{INTA}INTA:输出,两个连续的负脉冲信号。中断响应信号。
HOLDHOLDHOLD:输入,高电平有效。总线请求输入。
HLDAHLDAHLDA:输出,高电平有效,总线请求应答信号。
存储器和I/O口的读写控制信号形成逻辑
在这里插入图片描述
8086在最小模式下的典型配置
在这里插入图片描述

8086CPU的最大模式

在这里插入图片描述
引脚24-31的功能

S2S1S0S_2S_1S_0S2S1S0操作类型
000中断响应
001I/O读
010I/O写
011暂停
100取指令
101读存储器
110写存储器
111无源状态

输出,总线周期状态信号输出。

QS1  QS0QS_1\; QS_0QS1QS0队列状态
00无操作
01从队列缓存器中取出指令的第一字节
10清除队列缓冲器
11从队列缓冲器中取出指令的第二字节以后部分

输出,指令队列状态信号

RQ‾/GT0‾、RQ‾/GT1‾\overline{RQ}/\overline{GT_0}、\overline{RQ}/\overline{GT_1}RQ/GT0RQ/GT1:输入/输出,低电平有效。总线请求输入/总线请求允许输出信号。
LOCK‾\overline{LOCK}LOCK:输出,低电平有效。总线封锁信号。
8086系统在最大模式下的典型配置
在这里插入图片描述

8086CPU的操作和时序

8086CPU的操作类型

  1. 内部操作
    ALU操作(算数逻辑运算)
    寄存器操作
  2. 外部操作
    总线读操作
    中断响应操作
    总线保持与响应操作
    系统复位与启动操作
    暂停操作

8086CPU的操作时序

总线操作

最小模式下的总线读操作
在这里插入图片描述
最小模式下的总线写操作
在这里插入图片描述
最大模式下的总线读操作
在这里插入图片描述
最大模式下的总线写操作
在这里插入图片描述

中断响应操作

在这里插入图片描述
中断源通过INTRINTRINTR发出中断请求,当INTA‾\overline{INTA}INTA为低电平时表示响应中断信号。
在这里插入图片描述
PS:ALE为地址锁存允许,高电平有效。

总线保持和响应操作

在这里插入图片描述
总线主模块是DMA等可以需要获得总线控制权的组件。总线主模块发出总线请求信号,CPU通过置INTA‾\overline{INTA}INTA为低电平告知主模块可以使用总线。
在这里插入图片描述
HOLDHOLDHOLD:输入,高电平有效。总线请求输入。
HLDAHLDAHLDA:输出,高电平有效,总线请求应答信号。

复位和启动操作

(1)8086的复位和启动操作是由RESET复位引起的

  • 正常复位,RESET信号至少维持4个时钟周期的高电平
  • 上电复位,RESET信号至少维持50us的高电平

(2)复位后,CS=FFFFH、其他寄存器均清0。

  • 复位后,由于CS=FFFFH、IP=0000H,系统启动后将从FFFF0H开始执行程序。
  • 复位后,标志寄存器F被清零,其中中断允许标志IF也清零,系统关中断。

(3)复位信号RESET撤销后,再经过7个时钟周期,CPU才启动。
在这里插入图片描述

8086系统的存储器组织

主要用于存放程序和数据

  • 存储单元
  • 单元地址
    在这里插入图片描述
    这个是计算机组成原理上的图

存储器编址

存储器是以8位(一个字节)为一个存储单元进行编址的。并用唯一的一个地址码来表示。任何连续存放的两个字节都可以称为一个字。存放是低位字节存放入低地址,高位字节存放入高地址。处于低地址的字节的地址为这个字的地址。

同一个地址既可以看作是字节单元的地址,又可看作字单元、双字单元的地址。

偶数地址开始的字称为规则字,奇数地址开始的字称为非规则字。

8086系统存储器组织的基本原则

  1. 8086有20条地址线,最大寻址空间为220=1MB2^{20}=1MB220=1MB
  2. 存储单元按字节组织,地址范围00000H-FFFFFH
  3. 存储字(两个字节)采用边界对准的规则存放原则
    WORD = ByteH - ByteL

规则存放:低字节放在低地址单元;高字节存放在高地址单元
边界对准:低字节存放在偶地址单元;高字节存放在奇地址单元

8086存储系统的构建

8086CPU通过低8位数据总线访问偶地址存放单元或I/O口;通过高8位数据总线访问奇地址存储单元或I/O口
在这里插入图片描述
BHE‾\overline{BHE}BHE:输出,低电平有效。高8位数据总线允许
A0=0A0=0A0=0,选择偶地址存储体
A0=1A0=1A0=1,不选择偶地址存储体
BHE‾=0\overline{BHE}=0BHE=0,选择奇地址存储体
BHE‾=1\overline{BHE}=1BHE=1,不选择奇地址存储体

一个字节情况

BHE‾A0\overline{BHE} A0BHEA0操作形式
10从偶地址单元读/写一个字节
01从奇地址单元读/写一个字节

一个字情况

BHE‾A0\overline{BHE} A0BHEA0操作形式
00从偶地址单元读/写一个字(两个字节)
(1)01(2)10先从奇地址单元读/写一个字节,再从偶地址单元读/写一个字节

总结:从偶地址单元开始读/写一个字,需要一个总线周期;从奇地址单元开始读/写一个字,需要两个总线周期

8086系统的存储器管理

分段管理

(1)将1MB内存空间分为若干段,每段最大可为64KB
(2)每个段起始地址(段的基址)存放在段寄存器中,CS、DS、SS、ES。
(3)段与段之间可以是连续的、断开的、部分重叠或全部重叠的。
PS:段不能起于任意地址,每个段地址的低4位全为0
存储器的分段并不是唯一的
合法段首地址可表示如下
00000H,…,41230H,FFFE0H,FFFF0H

实际地址的形成

实际地址:物理地址,即存储单元的真正地址,唯一的20位二进制数表示(CPU访问时的物理地址)。
逻辑地址:程序设计的地址,包括段地址和偏移量(均为16位)表示为 段地址偏移量
例如 2500H:5000H,CS:IP。
20位物理地址由16位段地址和16位偏移地址组成(逻辑地址)
实际地址 = 段的基址左移4位(乘16)+偏移量

存储器物理地址的形成与计算过程
在这里插入图片描述
每个存储地址只有唯一的物理地址,但它却可由不同的段地址和不同的偏移地址组成。

段寄存器和偏移地址寄存器组合关系
在这里插入图片描述
访问存储器的类型不同,逻辑地址的来源也不相同

访存类型隐含的段地址可替换的段地址偏移量
取指令CS----IP
堆栈操作SS----SP
访问数据单元DSCS、ES、SSEA
字符串(源)DSCS、ES、SSSI
字符串(目的)ES----DI

最后字符串两个不太理解

分段管理的意义
减少了指令长度,缩短了指令执行时间
便于程序浮动装配(什么程序浮动装配?)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值