1、 本章详细说明了本章详细说明了1616位微处理器位微处理器8086/8088CPU8086/8088CPU的内部编程结构、内部寄存器的功能和外部管脚的内部编程结构、内部寄存器的功能和外部管脚的作用,并阐述了系统对存储器的分段管理。的作用,并阐述了系统对存储器的分段管理。图2.1 8086CPU的内部结构图的内部结构图AHALBHBLCHCLDHDLSPBPDISI通用寄存器运算寄存器ALU标志寄存器EU控制系统12 34 568位DSSSESIP内部暂存器CS地址加法器总线控制逻辑外部的总线80888086指令队列缓冲器8088:8位8086:16位20位16位ALU数据总线执执行行部部件件E
2、 EU U总总线线接接口口部部件件B BI IU U数据总线地址总线AXBXCXDXBus Interface UnitExecution Unit总线接口部件由下列各部分组成:总线接口部件由下列各部分组成:(1 1)4 4个段地址寄存器个段地址寄存器:CS CS1616位的代码段寄存器;位的代码段寄存器;DSDS1616位的数据段寄存器;位的数据段寄存器;ESES1616位的扩展段寄存器;位的扩展段寄存器;SSSS1616位的堆栈段寄存器;位的堆栈段寄存器;(2 2)1616位的指令指针寄存器位的指令指针寄存器IPIP;(3 3)2020位的地址加法器和总线控制电路;位的地址加法器和总线控制
3、电路;(4 4)6 6字节的指令队列缓冲器。字节的指令队列缓冲器。总线接口部件的功能是负责完成总线接口部件的功能是负责完成CPUCPU与存储器或与存储器或I/OI/O接口接口之间的数据传送,即之间的数据传送,即BIUBIU要从内存中取指令,送到指令队列要从内存中取指令,送到指令队列缓冲器缓冲器.执行部件的功能就是负责从指令队列取指令并执行。从编程执行部件的功能就是负责从指令队列取指令并执行。从编程结构图可见,执行部件由下列几个部分组成:结构图可见,执行部件由下列几个部分组成:(1)通用寄存器组:)通用寄存器组:4个个16位数据寄存器位数据寄存器AX、BX、CX、DX和和4个个16位指针寄存器与
4、变址寄存器位指针寄存器与变址寄存器SP、BP和和SI、DI;(2)数据暂存寄存器:暂存数据)数据暂存寄存器:暂存数据;(3)标志寄存器:它反映)标志寄存器:它反映CPU运算的状态特征和存放控制运算的状态特征和存放控制标志;标志;(4)算术逻辑单元)算术逻辑单元ALU:用于算数和逻辑运算。:用于算数和逻辑运算。(5)EU控制电路:它是控制、定时与状态逻辑电路,接收控制电路:它是控制、定时与状态逻辑电路,接收从从BIU中指令队列取来的指令,经过指令译码形成各种定中指令队列取来的指令,经过指令译码形成各种定时控制信号,对时控制信号,对EU的各个部件实现定时操作。的各个部件实现定时操作。8086/80
5、88取指部分与执行部分是分开的。取指部分与执行部分是分开的。在一条指令的执行过程中可以取出下一条(或多条)指令,指令在一条指令的执行过程中可以取出下一条(或多条)指令,指令 在指令队列中排队;在指令队列中排队;在一条指令执行完成后在一条指令执行完成后,就可以立即执行下一条指令,减少就可以立即执行下一条指令,减少CPU为为取指令而等待的时间,提高取指令而等待的时间,提高CPU的利用率和整个运行速度。的利用率和整个运行速度。重迭操作技术:重迭操作技术:一方面提高了整个执行速率,另一方面降低了与之一方面提高了整个执行速率,另一方面降低了与之相配的存储器的存取速度的要求。相配的存储器的存取速度的要求。
6、8086/80888086/8088微处理器微处理器:BIUBIU和和EUEU并行操作,并行操作,取指和执行可以重迭,大大取指和执行可以重迭,大大减少了等待减少了等待取指所需的时间,取指所需的时间,提高提高CPUCPU的利用率的利用率。2020位物理地址的形成位物理地址的形成定义:定义:物理地址:物理地址:存储器的绝对地址(存储器的绝对地址(20位的实际地址)位的实际地址),范范围从围从00000HFFFFFH,是由是由CPU访问存储器时由地址总线发访问存储器时由地址总线发出的地址。出的地址。例:例:20000H 逻辑地址:逻辑地址:由段基址和段内偏移地址组成的地址,段基由段基址和段内偏移地址
7、组成的地址,段基址和段内偏移地址都是址和段内偏移地址都是16位的无符号二进制数,位的无符号二进制数,在程序设计时在程序设计时使用的地址。使用的地址。例:例:8000:0100H CPU访问存储器时,必须先确定所要访问的存储单访问存储器时,必须先确定所要访问的存储单元的物理地址才能取出(或存入)该单元中的内容。元的物理地址才能取出(或存入)该单元中的内容。物理地址计算方法:物理地址计算方法:即把段地址左移即把段地址左移4位再加上偏移地址值形成物理地址,写成:位再加上偏移地址值形成物理地址,写成:物理地址物理地址=16d 段地址段地址+偏移地址。偏移地址。*每个存储单元只有唯一的物理地址。但可由不
8、同的段地址和不同的偏每个存储单元只有唯一的物理地址。但可由不同的段地址和不同的偏 移地址组成。移地址组成。16位段地址16位段地址0000000016位偏移地址16位偏移地址0 015150 0151520位物理地址20位物理地址0 01919+8086/8088的内部寄存器如图2.2所示,它共有13个16位的寄存器和1个标志寄存器。AHALBHBLCHCLDHDLSPSSBPSIESFLAGSDSIPCSDIBX基址寄存器AX累加器CX计数寄存器DX数据寄存器堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器指令指针状态标志寄存器代码段寄存器数据段寄存器堆栈段寄存器扩展段寄存器数据寄存器
9、指针寄存器变址寄存器控制寄存器段寄存器通用寄存器AX累加器,它是算术运算主要寄存器。另外,所有的指令都使用这一寄存器与外部设备传送信息。BX基址寄存器:在计算存储器地址时,常用来存放基准地址.CX计数寄存器:在循环指令中作为一个计数器使用,在数据串操作指令中用于存放数据串元素的个数.一般在双字运算时,把DX和AX组合在一起存放一个双字长数,DX用于存放高位字,AX存放低位字.标志寄存器(标志寄存器(Flag RegisterFlag Register)共有)共有1616位,其中位,其中7 7位位未用。标志寄存器内容如图未用。标志寄存器内容如图2-32-3所示:所示:图图2-3 标志寄存器结构图
10、标志寄存器结构图寄存器寄存器进位标志位Carry Flag奇/偶标志位Parity Flag辅助进位标志位Auxiliary Flag零标志位Zero Flag符号标志位Sign Flag溢出标志位Overflow Flag状态标志位状态标志位控制标志位控制标志位跟踪标志位Trap Flag方向标志位Direction Flag中断允许标志位Interrupt Enable Flagq状态标志状态标志:用来记录程序中运行结果的状态信息作为后续条件转移指用来记录程序中运行结果的状态信息作为后续条件转移指令的转移控制条件。令的转移控制条件。状态标志包括状态标志包括6 6位:位:CF CF、PF P
11、F、AF AF、ZF ZF、SF SF、OF OF。OFOF(Overflow FlagOverflow Flag)溢出标志(一般指补码溢出)溢出标志(一般指补码溢出)OF=1OF=1:在运算过程中,如操作数超过了机器表示的范围称为溢出。:在运算过程中,如操作数超过了机器表示的范围称为溢出。OF=0OF=0:在运算过程中,如操作数未超过机器能表示的范围称为:在运算过程中,如操作数未超过机器能表示的范围称为 不溢出。不溢出。字节允许范围字节允许范围 -128-128+127+127,字运算范围,字运算范围 -32768-32768+32767+32767。SFSF(Sign FlagSign F
12、lag)符号标志)符号标志 ,状态与运算结果最高位相同,状态与运算结果最高位相同 SF=1SF=1:记录运算结果的符号为负。:记录运算结果的符号为负。SF=0SF=0:记录运算结果的符号为正。:记录运算结果的符号为正。ZFZF(Zero FlagZero Flag)零标志)零标志 ZF=1ZF=1:运算结果为:运算结果为0 0。ZF=0ZF=0:运算结果不为:运算结果不为0 0。CFCF(Carry FlagCarry Flag)进位标志)进位标志 CF=1CF=1:运算时最高有效位产生有进(借)位。:运算时最高有效位产生有进(借)位。CF=0CF=0:运算时最高有效位没有产生进(借)位。:运
13、算时最高有效位没有产生进(借)位。DF(Direction Flag)DF(Direction Flag)方向标志位方向标志位 DF=1,DF=1,每次串处理操作后使变址寄存器每次串处理操作后使变址寄存器SISI和和DIDI减量,使串处理减量,使串处理从从高地址向低地址方向处理。高地址向低地址方向处理。DF=0,DF=0,每次串处理操作后使变址寄存器每次串处理操作后使变址寄存器SISI和和DIDI增量增量,使串处理使串处理从从低地址向高地址方向处理。低地址向高地址方向处理。DFDF方向标志位是在串处理指令中控制处理信息的方向用方向标志位是在串处理指令中控制处理信息的方向用的。的。q 控制标志控
14、制标志:对控制标志位进行设置后对控制标志位进行设置后,对其后的操作起控制作用。对其后的操作起控制作用。控制标志位包括控制标志位包括3 3位位:TF:TF、IF IF、DF。跟踪(陷阱)标志跟踪(陷阱)标志TFTF、中断标志、中断标志IF IF、方向标志、方向标志 DF。TF(Trap Flag)TF(Trap Flag)跟踪跟踪(陷阱陷阱)标志位标志位 TF=1,TF=1,每执行一条指令后,自动产生一次内部中断,每执行一条指令后,自动产生一次内部中断,使使CPUCPU处于单步执行指令工作方式,便于进行程序调试,用户处于单步执行指令工作方式,便于进行程序调试,用户能检查程序。能检查程序。TF=0
15、,CPUTF=0,CPU正常工作,不产生陷阱。正常工作,不产生陷阱。IF(Interrupt Flag)中断标志中断标志 位位 IF=1,允许外部可屏蔽中断。允许外部可屏蔽中断。CPU可以响应可屏蔽中断请求。可以响应可屏蔽中断请求。IF=0,关闭中断。关闭中断。CPU禁止响应可屏蔽中断请求。禁止响应可屏蔽中断请求。IF的状态对不可屏蔽中断和内部软中断没有影响。的状态对不可屏蔽中断和内部软中断没有影响。DF(Direction Flag)DF(Direction Flag)方向标志位方向标志位 DF=1,DF=1,每次串处理操作后使变址寄存器每次串处理操作后使变址寄存器SISI和和DIDI减量,
16、使减量,使串处理从高地址向低地址方向处理。串处理从高地址向低地址方向处理。DF=0,DF=0,每次串处理操作后使变址寄存器每次串处理操作后使变址寄存器SISI和和DIDI增量增量,使使串处理从低地址向高地址方向处理。串处理从低地址向高地址方向处理。DFDF方向标志位是在串处理指令中控制处理信息的方方向标志位是在串处理指令中控制处理信息的方向用的。向用的。01111110 00101000 10100110执行结果执行结果1 10 00 00 01 11 10 01 10 00 00 01 10 01 10 00 00 00 01 11 10 00 01 10 00 00 00 01 11 10
17、 00 01 1+0 01 11 11 11 10 01 10 01 10 01 10 01 10 01 10 0标志标志:运算结果最高位为运算结果最高位为0SF=0;运算结果本身运算结果本身0 ZF=0低低8位中位中1的个数为奇数个的个数为奇数个 PF=0;最高位没有进位最高位没有进位 CF=0第三位向第四位无进位第三位向第四位无进位 AF=0;次高位向最高位没有进位次高位向最高位没有进位,最高位向前没有进位,最高位向前没有进位,OF=0。例例2.2:执行两个数的加法,分析对标志位的影响。:执行两个数的加法,分析对标志位的影响。2.2.1 80862.2.1 8086的引脚信号的引脚信号 8
18、0868086与与80888088内部的结构基本相同,内部的结构基本相同,外部采用外部采用4040引脚双列直插式封引脚双列直插式封装。它们的装。它们的4040条引脚线按功能条引脚线按功能可分为可分为5 5类(如图类(如图2.22.2):):1.1.地址地址/数据总线(数据总线(Address Address Data BusData Bus)2.2.地址地址/状态线状态线(Address/StatusAddress/Status)3.3.控制总线(控制总线(Control BusControl Bus)4.4.电源线电源线VccVcc 5.5.地线地线GNDGND图2.2 8086的引脚信号
19、8086/8088有两种工作模式,即:有两种工作模式,即:最小工作模式和最大工作模最小工作模式和最大工作模 式式。最小模式是单处理机模式,最大模式是多处理机模式。两种方式最小模式是单处理机模式,最大模式是多处理机模式。两种方式下,系统的配置是不同的。下,系统的配置是不同的。图2.3 8086/8088最小模式下的系统结构框图一、最小模式由图由图2-3可知,在可知,在8086的最小模的最小模式中,硬件连接上有如下几式中,硬件连接上有如下几个特点:个特点:(1)MN/MX 引脚接引脚接+5V,决定,决定了了8086工作在最小模式。工作在最小模式。(2)有一片)有一片8284A,作为时钟,作为时钟发
20、生器。发生器。(3)有)有8282或或74LS373,用来,用来作为地址锁存器。作为地址锁存器。地址锁存允许信号数据允许信号数据发送/接收信号存储器输入/输出信号 由图由图2-4可知,最大模式可知,最大模式配置和最小模式配置有一个配置和最小模式配置有一个主要的差别:主要的差别:最大模式下多最大模式下多了了8288总线控制器。总线控制器。当系统中所连接的存储当系统中所连接的存储器和外设比较多时,需要增器和外设比较多时,需要增加系统数据总线的驱动能力,加系统数据总线的驱动能力,这时,可选用两片这时,可选用两片8286或或74LS245作为总线收发器。作为总线收发器。图2.4 8086/8088最大
21、模式下的系 统结构框图从取指令到执行完毕指令所需要的时间成为指令周期;从取指令到执行完毕指令所需要的时间成为指令周期;CPUCPU从存储器或输出输入端口存取一个字节(或一个从存储器或输出输入端口存取一个字节(或一个字)所需要的时间称为总线周期字)所需要的时间称为总线周期时钟周期是时钟周期是CPUCPU的基本时间计量单位,他又计算机的的基本时间计量单位,他又计算机的主频决定。比如主频决定。比如80868086主频为主频为f=5MHZ,f=5MHZ,一个时钟周期一个时钟周期t tc c=1/f=1/5=0.2=1/f=1/5=0.2s s图图2-9 8086读总线周期读总线周期图图2-10 808
22、6写总线周期写总线周期返回本节返回本节2.4.1 2.4.2 34H 12H 78H 56H21000H21001H82001H82002H偶地址字偶地址字奇地址字奇地址字2.4.1 被读的字节忽略的字节偶数地址奇数地址忽略的字节被读的字节偶数地址奇数地址读地址中的字节读地址中的字节被读的字节被读的字节偶数地址奇数地址忽略的字节被读的字节忽略的字节偶数地址奇数地址偶数地址奇数地址读地址中的字读地址中的字2.4.2 在存储段划分时,段内地址是连续的,段与段之间是相在存储段划分时,段内地址是连续的,段与段之间是相互独立的。每个段的起始地址称段的基址,段基址必须是能互独立的。每个段的起始地址称段的基
23、址,段基址必须是能被被16整除的那些地址,即整除的那些地址,即20位的段基址的低四位应当是位的段基址的低四位应当是0000。由于段起始地址的低四位为由于段起始地址的低四位为0,所以可用,所以可用20位地址的高位地址的高16位位表示段的基址,存放在段基址寄存器中。段基址寄存器共四表示段的基址,存放在段基址寄存器中。段基址寄存器共四个:个:CS、DS、ES、SS。当前可寻址的存储器段(堆栈当前可寻址的存储器段(堆栈段和附加段重叠)段和附加段重叠)例:假如例:假如20102H地址单元中存放的信息为地址单元中存放的信息为3FH,也就是说也就是说20102H单元中的内容为单元中的内容为3FH。我们可用逻
24、辑地址表示存储器地址单元中存放的信息,假定我们可用逻辑地址表示存储器地址单元中存放的信息,假定该存储器单元对应的是逻辑段该存储器单元对应的是逻辑段DS=2000H,逻辑地址由两部分组,逻辑地址由两部分组成:段基址和偏移地量。成:段基址和偏移地量。段基址是由段寄存器提供的段起始地址高段基址是由段寄存器提供的段起始地址高16位,偏移量为存位,偏移量为存储单元所在的位置距离段的起始地址所偏移的距离(偏移地址储单元所在的位置距离段的起始地址所偏移的距离(偏移地址或称为有效地址)或称为有效地址)可表示为:可表示为:(20102H)=(2000:0102H)=3FH 物理地址物理地址逻辑地址逻辑地址 存储单元内容存储单元内容