8086的编程结构

8086的编程结构

8086是Intel系列的的16位微处理器,有16根数据线和20根地址线。因为可用20位地址,所以可寻址的地址空间达220字节即1MB

几乎在推出8086微处理器的同时,为了与当时已有的一整套Intel外围设备接口芯片直接兼容,Intel公司还推出了准16位微处理器8088。8088的内部寄存器、内部运算部件以及内部操作都是16位的,但对外的数据总线只有8位

编程结构,就是指从程序员和使用者的角度看到的结构,当然,这种结构与CPU内部的物理结构和实际布局是有区别的。在编程结构图中可看到,从功能上,8086分为两部分,即总线接口部件BIU和执行部件EU

如下图为8086的编程结构
在这里插入图片描述

1.总线接口部件

总线接口部件的功能是负责与存储器、I/O端口传送数据。具体讲,总线接口部件要从内存取指令送到指令队列;CPU执行指令时,总线接口部件要配合执行部件从指定的内存单元或者外设端口中取数据,将数据传送给执行部件,或者把执行部件的操作结果传送到指定的内存单元或外设端口中

8086的总线接口部件由下列各部分组成:
①4个段地址寄存器
CS:16位的代码段寄存器 ;
DS:16位的数据段寄存器 ;
ES:16位的附加段寄存器 ;
SS:16位的堆栈段寄存器 。

②16位的指令指针寄存器IP
③20位的地址加法器
④6字节的指令队列缓冲器

对总线接口部件,下面需要注意两点:
①8086的指令队列为6个字节。CPU在执行指令的同时,从内存中取下面1条指或几条指令放在指令队列中。这样,一般情况下,8086执行完一条指令就可以立即执行一条指令,而不像以往的计算机那样轮番地进行取指令和执行指令的操作,从而提高CPU的效率。
②地址加法器用来产生20位地址。8086可用20位地址寻址1MB的内存空间,但8086内部寄存器都是16位的,所以需要一个附加机构来根据16位寄存器提供的信息计算出20位的物理地址,这个机构就是20位的地址加法器。

比如,一条指令的物理地址就是根据代码段寄存器CS和指令指针寄存器IP的内容得到的。具体计算时,要将CS的内容左移4位,然后再与IP的内容相加。假设CS=FE00H,IP=0200H,此时指令的物理地址为FE200H。

2.执行部件

执行部件的功能就是负责指令的执行

从编程结构图可见到,执行部件由下列几个部分组成:
①4个通用寄存器,即AX、BX、CX、DX。
②4个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI。
③标志寄存器FR。
④算术逻辑部件ALU。

对执行部件,有以下4点说明:
①4个通用寄存器既可作为16位寄存器使用,也可作为8位寄存器使用。比如,BX寄存器作为8位寄存器时,分别称为BH和BL,BH为高8位,BL为低8位。
②AX寄存器也称为累加器,指令系统中有许多指令都是利用累加器来执行的。
算术逻辑部件实现算术运算和逻辑运算。
④8086的标志寄存器共有16位,其中7位未用,所用的各位含义如下:
根据功能,8086的标志可以分为两类:一类叫状态标志,另一类叫控制标志。状态标志表示前面的操作执行后,算术逻辑部件处在怎样一种状态,这种状态会像某种先决条件一样影响后面的操作。控制标志是人为设置的,指令系统中有专门的指令用于控制标志的设置和清除,每个控制标志都对某一种特定的功能起控制作用。
状态标志有6个,即SF、ZF、PF、CF、AF和OF。
符号标志SF 它和运算结果的最高位相同。当数据用补码表示时,负数的最高位为1,所以符号标志指出了运算结果是正还是负。

零标志ZF 如运算结果为零,则ZF为1;如运算结果为非零,则ZF
为0。

奇/偶标志PF 如运算结果的低8位中所含的1的个数为偶数,则PF为1,否则为0。

进位标志CF 当加法运算使最高位产生进位时,或者减法运算引起最高位产生借位时,则CF为1。除此之外,移位指令也会影响这一标志。

辅助进位标志AF 当加法运算时,如果第3位往第4位有进位,或者当减法运算时,如果第3位从第4位有借位,则AF为1。此处的第3位是指从0开始计数的。

溢出标志OF 当运算过程中产生溢出时,会使OF为1。当字节运算的结果超出了范围-128+127,或者当字运算的结果超出了范围-32768+32767时,称为溢出
比如,执行下面两个数的加法:
0010001101000101
+0011001000011001
0101010101011110
由于运算结果的最高位为0,所以,SF=0;而运算结果本身不为0,所以,ZF=0;低8位所含的1的个数为5个,即有奇数个1,所以,PF=0;最高位没有产生进位,所以,CF=0;又由于第3位没有往第4位产生进位,所以,AF=0;由于运算结果没有超出有效范围,所以,OF=0。

当然,在绝大多数情况下,一次运算后,并不对所有标志进行改变,程序也并不需要对所有的标志作全面的关注,一般只是在某些操作之后,对其中某个标志进行检测。

控制标志有3个,即DF、IF、TF。

①方向标志DF 这是控制串操作指令用的标志。如果DF为0,则串操作过程中地址会不断增值;反之,如果DF为1,则串操作过程中地址不断减值。

中断允许标志IF 这是控制可屏蔽中断的标志。如IF为0,则CPU不能响应可屏蔽中断请求;如IF为1,则CPU可接受可屏蔽中断请求
跟踪标志TF 也称为单步标志,如果TF为1,则CPU按跟踪方式执行指令。

3.8086的总线周期的概念

为了取得指令或传送数据,就需要CPU的总线接口部件执行一个总线周期。

在8086中,一个最基本的总线周期由4个时钟周期组成,时钟周期是CPU的基本时间计量单位,它由计算机主频决定。比如,8086的主额为10MHz,1个时钟周期就是100ns。在1个最基本的总线周期中,习惯上将4个时钟周期分别称为4个状态,即T1状态、T2状态、T3状态和T4状态。
在T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。

②在T2状态,CPU从总线上撤销地址,使总线的低16位浮置成高阻状态,为传输数据作准备。总线的最高4位(Ais~Aig)用来输出本总线周期状态信息。这些状态信息用来表示中断允许状态、当前正在使用的段寄存器名等。

在T3状态,多路总线的高4位继续提供状态信息,而总线的低16位上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。

④由于外设或存储器速度较慢,常常不能及时配合CPU传送数据。这时,外设或存储器会通过READY信号线在T,状态启动之前向CPU发一个“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期Tw。Tw也叫等待状态,在Tw状态,总线上的信息情况和T,状态的信息情况一样。当指定的存储器或外设完成数据传送时,便在READY线上发出“准备好”信号,CPU接收到这一信号后,会自动脱离Tw状态而进入T4状态。

在T4状态,总线周期结束。
需要指出,只有在CPU和内存或I/O接口之间传输数据,以及填充指令队列时,CPU才执行总线周期。如果在1个总线周期之后,不立即执行下一个总线周期,那么,系统总线就处在空闲状态,此时,执行空闲周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值