第二章8086系统结构案例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在8086中,某些通用寄存器用作专门用途。例如, 串指令中必须用CX寄存器作为计数寄存器,存放串的长 度,同样,AX、BX、DX寄存器又可分别称为累加器、基 址寄存器及数据寄存器。
2.指针和变址寄存器
8086/8088CPU中,有一组4个16位寄存器,它们是基 址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI 和目的变址寄存器DI。 这组寄存器存放的内容是某一段内地址偏移量,用 来形成操作数地址,主要在堆栈操作和变址运算中使用。 BP和SP寄存器称为指针寄存器,与SS联用,为访问现行 堆栈段提供方便。通常BP寄存器在间接寻址中使用,操 作数在堆栈段中,由SS段寄存器与BP组合形成操作数地 址。即BP中存放现行堆栈段中一个数据区的“基址” 的偏移量,所以称BP寄存器为基址指针。
SP寄存器在堆栈操作中使用,PUSH和POP指令是从SP 寄存器得到现行堆栈段的段内地址偏移量,所以称SP寄 存器为堆栈指针,SP始终指向栈顶。 寄存器SI和DI称为变址寄存器,通常与DS一起使 用,为访问现行数据段提供段内地址偏移量。 在串指令中,其中源操作数的偏移量存放在SI中, 目的操作数的偏移量存放在DI中,SI与DI的作用不能互 换,否则传送地址相反。 在串指令中,SI、DI均为隐含寻址,此时,SI和DS 联用,DI和ES联用。
含有偶数个1时,PF=1;否则PF=0。
AF(Auxiliary carry Flag)——辅助进位标志位。当执行一个
加法(或减法)运算,结果的低4位向高4位有进位(或借位)时,
AF=1;否则AF=0。一般用在BCD码运算中,判断是否需要十进 制调整。
ZF(Zero Flag)——全零标志位。若当前的运算结果为零, ZF=1;否则ZF=0。 SF(Sign Flag)——符号标志位。它和运算结果的最高位相同。 OF(Overflow Flag)——溢出标志位。当运算过程中产生溢 出时,OF=1;否则OF=0。
例2.1 代码段寄存器CS存放当前 代码段基地址,IP指令指针寄存器 存放了下一条要执行指令的段内偏 移地址,其中CS=20பைடு நூலகம்0H,IP=003AH. 通过组合,形成20位存储单元的寻 址地址为2003AH 。
代码段内存放可执行的指令代码,数据段和附加段 内存放操作的数据,通常操作数在现行数据段中,而在 串指令中,目的操作数指明必须在现行附加段中。堆栈 段开辟为程序执行中所要用的堆栈区,采用先进后出的 方式访问它。 各个段寄存器指明了一个规定的现行段,各段寄存 器不可互换使用。程序较小时,代码段、数据段、堆栈 段可放在一个段内,即包含在64KB之内,而当程序或数 据量较大时,超过了64KB,可以定义多个代码段或数据 段、堆栈段、附加段。 现行段由段寄存器指明段地址,使用中可以修改段 寄存器内容,指向其它段。有时为了明确起见,可在指 令前加上段超越的前缀字,以指定操作数所在段。
5.标志寄存器PSW
标志寄存器是一个16位的寄存器,8086共使用了9个有效 位,格式如图2.3所示。其中的6位是状态标志位: CF、PF 、 AF、ZF、CF和OF。 3位为控制标志位: TF、IF和DF。状态标 志位是当一些指令执行后,表征所产生数据的一些特征。而控 制标志位则可以由程序写入,以达到控制处理机状态或程序执 行方式的表征。
(2)16位指令指针寄存器IP:存放下一条要执行指令的 偏移地址。 (3)20位物理地址加法器:将16位逻辑地址变换成存储 器读/写所需要的20位物理地址,实际上完成地址加法 操作。 (4)6字节指令队列:预放6字节的指令代码。 (5)总线控制逻辑:发出总线控制信号。
2.指令执行部件EU 指令执行部件EU完成指令译码和执行指令的工作。 它由以下几个部分组成: (1)算术逻辑运算单元ALU:完成8位或16位的二进制运 算,16位暂存器可暂存参加运算的操作数。 (2)标志寄存器PSW:存放ALU运算结果特征。 (3)寄存器组:4个通用16位寄存器AX、BX、CX、DX,其 中AX又称累加器。4个专用16位寄存器:源变址寄存器 SI、目的变址寄存器DI、堆栈指针寄存器SP、基址指 针寄存器BP。 (4)EU控制器:取指令控制和时序控制部件。
4.指令指针寄存器
8086/8088CPU中设置了一个16位指令指针寄存器 IP,用来存放将要执行的下一条指令在现行代码段中的 偏移地址。程序运行中,它由BIU自动将其修改,使IP始 终指向下一条将要执行的指令的地址,因此它是用来 控制指令序列的执行流程的。8086程序不能直接访问 IP,但可以通过某些指令修改IP的内容。例如,当遇到 中断指令或调用子程序指令时,8086自动调整IP的内 容,将IP中下一条将要执行的指令地址偏移量入栈保 护,待中断程序执行完毕或子程序返回时,可将保护的 内容从堆栈中弹出到IP,使主程序继续运行。在跳转指 令时,则将新的跳转目标地址送入IP,改变它的内容, 实现了程序的转移。
微型计算机工作时,总是先从存储器中取指令,需要的话再取操作数, 然后执行指令,送结果。通常8位机是串行执行的,而16位机可并行操作。 8086 CPU由总线接口部件BIU和指令执行部件EU组成,BIU和EU的操作 是并行的。总线接口部件BIU完成取指令,读操作数,送结果,所有与外部 的操作由其完成。而指令执行部件EU从BIU的指令队列中取出指令,执行指 令,不必访问存储器或I/O端口。若需要访问存储器或I/O端口,也是由EU 向BIU发出访问所需要的地址,在BIU中形成物理地址,然后访问存储器或 I/O端口,取得操作数送到EU,或送结果到指定的内存单元或I/O端口。这种 并行工作方式,大大提高了系统工作效率。
2.1.2寄存器结构
寄存器用来存放运算过程中所需要的操作数地址、 操作数及中间结果。 8086微处理器内部包含有4组16位寄存器,它们分别 是通用寄存器组,指针和变址寄存器,段寄存器,指令 指针及标志位寄存器。如图2.2所示。
2. 8086 CPU的内部寄存器
数据寄存器 AX AH AL SP 指针与变址寄存器 堆栈指针寄存器
溢 出 标 志
中 断 允 许
1-结果为0 0-结果不为0
半 进 借 位 标 志
奇 偶 标 志
进 借 位 标 志
1-有进、借位
0-无进、借位
1-低4位向高4位有进、借位 0-低4位向高4位无进、借位
(1) 6个状态标志位的功能分别叙述如下: CF(Carry Flag)——进位标志位。当执行一个加法(或减法)运 算,最高位产生进位(或借位)时,CF为1;否则为0。 PF(Parity Flag)——奇偶标志位。该标志位反映运算结果低 8位中“1”的个数是偶数还是奇数。当指令执行结果的低8位中
D15
D14
D13
D12
D11 OF
D10 DF
D9 IF
D8 TF
D7 SF
D6 ZF
D5
D4 AF
D3
D2 PF
D1
D0 CF
图2.3 标志寄存器格式
1-低8位有偶数个1
D15
OF DF IF TF SF ZF 方 向 标 志 单 步 中 断
符 号 标 志
0-低8位有奇数个1
D0
CF
AF
PF
零 标 志
这样,24脚~31脚的8条引脚在两种工作模式中具有
不同的功能。
2.2.1 8086/8088CPU在最小模式中引脚定义
8086CPU采用双列直插式的封装形式,具有40条引 脚,见图2.4。它采用分时复用的地址/数据总线,所以有 一部分引脚具有双重功能,即在不同时钟周期内,引脚
标志寄存器 执行单元 (EU)
总线接口单元 (BIU)
图2.1 8086 CPU内部结构示意图
1.总线接口部件BIU 总线接口部件BIU是8086CPU与外部(存储器和I/O 端口)的接口,它提供了16位双向数据总线和20位地址 总线,完成所有外部总线操作。 BIU具有下列功能:地址形成、取指令、指令排队, 读/写操作数和总线控制。它由下列各部分组成: (1)16位段地址寄存器: CS-代码段寄存器 DS-数据段寄存器 ES-附加段寄存器 SS-堆栈段寄存器
3.段寄存器
8086/8088CPU可直接寻址1MB的存储器空间,直接 寻址需要20位地址码,而所有内部寄存器都是16位的, 只能直接寻址64KB,因此采用分段技术来解决。将1MB的 存储空间分成若干逻辑段,每段最长64KB,这些逻辑段 在整个存储空间中可浮动。 8086/8088CPU内部设置了4个16位段寄存器,它们分 别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器 SS、附加段寄存器ES,由它们给出相应逻辑段的首地 址,称为“段基址”。 段基址与段内偏移地址组合形成20位物理地址,段 内偏移地址可存放在寄存器中,也可存放在存储器中 。
BX
CX DX
BH
CH DH 段寄存器
BL
CL DL
BP
SI DI
基址寄存器
源变址寄存器 目的变址寄存器
指令指针与标志寄存器
CS DS ES SS
代码段寄存器 数据段寄存器 附加段寄存器 堆栈段寄存器
IP FLAGS
指令指针寄存器 标志位寄存器
图2.2 8086 CPU内部寄存器
1.通用寄存器组 8086/8088CPU在指令执行部件EU中有4个16位通用寄 存器,它们是AX、BX、CX和DX,用以存放16位数据或地址 。也可分为8个8位寄存器来使用,低8位是AL、BL、CL和 DL,高8位为AH、BH、CH和DH,只能存放8位数据,不能 存放地址。
(2) 3个控制标志位用来控制CPU的操作,由指令进行置位
和复位。 DF(Direction Flag)——方向标志位。它用以指定字符串处 理时的方向,当该位置“1”时,字符串以递减顺序处理,即地 址以从高到低顺序递减。反之,则以递增顺序处理。 IF(Interrupt enable Flag)——中断标志位。它用来控制8086 是否允许接收外部中断请求。若IF=1,允许CPU响应外部中断, 反之则不响应外部中断。 注意:IF的状态不影响非屏蔽中断请求(NMI)和CPU内部中断请 求。
TF(Trap Flag)——单步标志位。它是为调试程序而设定的 控制位。当该位置“1”时,8086 CPU处于单步状态,此时CPU 每执行完一条指令就自动产生一次内部中断,使用户能逐条跟 踪程序进行调试。当该位复位后,CPU恢复正常工作。
例2.2 将5394H与-777FH两数相加,并说 明其标志位状态: 0101 0011 1001 0100 + 1000 1000 1000 0001 ————————————— 1101 1100 0001 0101 运算结果为-23EBH,并置标志位为 CF=0,PF=0,AF=0,ZF=0,SF=1,OF=0。
∑ AH BH CH DH SI DI SP BP 16 位内部总线 8位 AL BL CL DL AX BX CX DX IP CS DS SS ES 内部暂存器
20 位地址总线 16 位总线
通 用 寄 存 器 组
运算暂存器
总线 控制 逻辑 电路
8086 总线
指令队列缓冲器 ALU EU 控制电路 1 2 3 4 5 6
第2章 8086系统结构
2.1 8086CPU结构 2.2 8086CPU的引脚及其功能 2.3 8086存储器组织 2.4 8086系统配置
2.1 8086CPU结构
Inter 8086CPU是16位微处理器,它有16根数据线和20根地 址线,直接寻址空间为 220 ,即1MB。8088CPU内部结构与8086 基本相同但对外数据总线只有8条,称为准16位微处理器。 2.1.1 8086CPU的内部结构
本节主要内容讲解视 频
2.2 8086CPUD 引脚及其功能
8086/8088CPU根据它的基本性能,应包括20条地址 线,16条数据线,加上控制信号,电源和地线,芯片的引 脚比较多。但由于制造工艺的限制,8086/8088CPU芯片 采用40条引脚的双列直插式封装,因此部分引脚采用了 分时复用的方式。 另外8086/8088CPU可以工作在两种工作模式(最小模 式和最大模式),最小模式用于单机系统。系统中所需要 的控制信号全部由8086直接提供。最大模式用于多处理 机系统,系统中所需要的控制信号由总线控制器8288提 供。
2.指针和变址寄存器
8086/8088CPU中,有一组4个16位寄存器,它们是基 址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI 和目的变址寄存器DI。 这组寄存器存放的内容是某一段内地址偏移量,用 来形成操作数地址,主要在堆栈操作和变址运算中使用。 BP和SP寄存器称为指针寄存器,与SS联用,为访问现行 堆栈段提供方便。通常BP寄存器在间接寻址中使用,操 作数在堆栈段中,由SS段寄存器与BP组合形成操作数地 址。即BP中存放现行堆栈段中一个数据区的“基址” 的偏移量,所以称BP寄存器为基址指针。
SP寄存器在堆栈操作中使用,PUSH和POP指令是从SP 寄存器得到现行堆栈段的段内地址偏移量,所以称SP寄 存器为堆栈指针,SP始终指向栈顶。 寄存器SI和DI称为变址寄存器,通常与DS一起使 用,为访问现行数据段提供段内地址偏移量。 在串指令中,其中源操作数的偏移量存放在SI中, 目的操作数的偏移量存放在DI中,SI与DI的作用不能互 换,否则传送地址相反。 在串指令中,SI、DI均为隐含寻址,此时,SI和DS 联用,DI和ES联用。
含有偶数个1时,PF=1;否则PF=0。
AF(Auxiliary carry Flag)——辅助进位标志位。当执行一个
加法(或减法)运算,结果的低4位向高4位有进位(或借位)时,
AF=1;否则AF=0。一般用在BCD码运算中,判断是否需要十进 制调整。
ZF(Zero Flag)——全零标志位。若当前的运算结果为零, ZF=1;否则ZF=0。 SF(Sign Flag)——符号标志位。它和运算结果的最高位相同。 OF(Overflow Flag)——溢出标志位。当运算过程中产生溢 出时,OF=1;否则OF=0。
例2.1 代码段寄存器CS存放当前 代码段基地址,IP指令指针寄存器 存放了下一条要执行指令的段内偏 移地址,其中CS=20பைடு நூலகம்0H,IP=003AH. 通过组合,形成20位存储单元的寻 址地址为2003AH 。
代码段内存放可执行的指令代码,数据段和附加段 内存放操作的数据,通常操作数在现行数据段中,而在 串指令中,目的操作数指明必须在现行附加段中。堆栈 段开辟为程序执行中所要用的堆栈区,采用先进后出的 方式访问它。 各个段寄存器指明了一个规定的现行段,各段寄存 器不可互换使用。程序较小时,代码段、数据段、堆栈 段可放在一个段内,即包含在64KB之内,而当程序或数 据量较大时,超过了64KB,可以定义多个代码段或数据 段、堆栈段、附加段。 现行段由段寄存器指明段地址,使用中可以修改段 寄存器内容,指向其它段。有时为了明确起见,可在指 令前加上段超越的前缀字,以指定操作数所在段。
5.标志寄存器PSW
标志寄存器是一个16位的寄存器,8086共使用了9个有效 位,格式如图2.3所示。其中的6位是状态标志位: CF、PF 、 AF、ZF、CF和OF。 3位为控制标志位: TF、IF和DF。状态标 志位是当一些指令执行后,表征所产生数据的一些特征。而控 制标志位则可以由程序写入,以达到控制处理机状态或程序执 行方式的表征。
(2)16位指令指针寄存器IP:存放下一条要执行指令的 偏移地址。 (3)20位物理地址加法器:将16位逻辑地址变换成存储 器读/写所需要的20位物理地址,实际上完成地址加法 操作。 (4)6字节指令队列:预放6字节的指令代码。 (5)总线控制逻辑:发出总线控制信号。
2.指令执行部件EU 指令执行部件EU完成指令译码和执行指令的工作。 它由以下几个部分组成: (1)算术逻辑运算单元ALU:完成8位或16位的二进制运 算,16位暂存器可暂存参加运算的操作数。 (2)标志寄存器PSW:存放ALU运算结果特征。 (3)寄存器组:4个通用16位寄存器AX、BX、CX、DX,其 中AX又称累加器。4个专用16位寄存器:源变址寄存器 SI、目的变址寄存器DI、堆栈指针寄存器SP、基址指 针寄存器BP。 (4)EU控制器:取指令控制和时序控制部件。
4.指令指针寄存器
8086/8088CPU中设置了一个16位指令指针寄存器 IP,用来存放将要执行的下一条指令在现行代码段中的 偏移地址。程序运行中,它由BIU自动将其修改,使IP始 终指向下一条将要执行的指令的地址,因此它是用来 控制指令序列的执行流程的。8086程序不能直接访问 IP,但可以通过某些指令修改IP的内容。例如,当遇到 中断指令或调用子程序指令时,8086自动调整IP的内 容,将IP中下一条将要执行的指令地址偏移量入栈保 护,待中断程序执行完毕或子程序返回时,可将保护的 内容从堆栈中弹出到IP,使主程序继续运行。在跳转指 令时,则将新的跳转目标地址送入IP,改变它的内容, 实现了程序的转移。
微型计算机工作时,总是先从存储器中取指令,需要的话再取操作数, 然后执行指令,送结果。通常8位机是串行执行的,而16位机可并行操作。 8086 CPU由总线接口部件BIU和指令执行部件EU组成,BIU和EU的操作 是并行的。总线接口部件BIU完成取指令,读操作数,送结果,所有与外部 的操作由其完成。而指令执行部件EU从BIU的指令队列中取出指令,执行指 令,不必访问存储器或I/O端口。若需要访问存储器或I/O端口,也是由EU 向BIU发出访问所需要的地址,在BIU中形成物理地址,然后访问存储器或 I/O端口,取得操作数送到EU,或送结果到指定的内存单元或I/O端口。这种 并行工作方式,大大提高了系统工作效率。
2.1.2寄存器结构
寄存器用来存放运算过程中所需要的操作数地址、 操作数及中间结果。 8086微处理器内部包含有4组16位寄存器,它们分别 是通用寄存器组,指针和变址寄存器,段寄存器,指令 指针及标志位寄存器。如图2.2所示。
2. 8086 CPU的内部寄存器
数据寄存器 AX AH AL SP 指针与变址寄存器 堆栈指针寄存器
溢 出 标 志
中 断 允 许
1-结果为0 0-结果不为0
半 进 借 位 标 志
奇 偶 标 志
进 借 位 标 志
1-有进、借位
0-无进、借位
1-低4位向高4位有进、借位 0-低4位向高4位无进、借位
(1) 6个状态标志位的功能分别叙述如下: CF(Carry Flag)——进位标志位。当执行一个加法(或减法)运 算,最高位产生进位(或借位)时,CF为1;否则为0。 PF(Parity Flag)——奇偶标志位。该标志位反映运算结果低 8位中“1”的个数是偶数还是奇数。当指令执行结果的低8位中
D15
D14
D13
D12
D11 OF
D10 DF
D9 IF
D8 TF
D7 SF
D6 ZF
D5
D4 AF
D3
D2 PF
D1
D0 CF
图2.3 标志寄存器格式
1-低8位有偶数个1
D15
OF DF IF TF SF ZF 方 向 标 志 单 步 中 断
符 号 标 志
0-低8位有奇数个1
D0
CF
AF
PF
零 标 志
这样,24脚~31脚的8条引脚在两种工作模式中具有
不同的功能。
2.2.1 8086/8088CPU在最小模式中引脚定义
8086CPU采用双列直插式的封装形式,具有40条引 脚,见图2.4。它采用分时复用的地址/数据总线,所以有 一部分引脚具有双重功能,即在不同时钟周期内,引脚
标志寄存器 执行单元 (EU)
总线接口单元 (BIU)
图2.1 8086 CPU内部结构示意图
1.总线接口部件BIU 总线接口部件BIU是8086CPU与外部(存储器和I/O 端口)的接口,它提供了16位双向数据总线和20位地址 总线,完成所有外部总线操作。 BIU具有下列功能:地址形成、取指令、指令排队, 读/写操作数和总线控制。它由下列各部分组成: (1)16位段地址寄存器: CS-代码段寄存器 DS-数据段寄存器 ES-附加段寄存器 SS-堆栈段寄存器
3.段寄存器
8086/8088CPU可直接寻址1MB的存储器空间,直接 寻址需要20位地址码,而所有内部寄存器都是16位的, 只能直接寻址64KB,因此采用分段技术来解决。将1MB的 存储空间分成若干逻辑段,每段最长64KB,这些逻辑段 在整个存储空间中可浮动。 8086/8088CPU内部设置了4个16位段寄存器,它们分 别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器 SS、附加段寄存器ES,由它们给出相应逻辑段的首地 址,称为“段基址”。 段基址与段内偏移地址组合形成20位物理地址,段 内偏移地址可存放在寄存器中,也可存放在存储器中 。
BX
CX DX
BH
CH DH 段寄存器
BL
CL DL
BP
SI DI
基址寄存器
源变址寄存器 目的变址寄存器
指令指针与标志寄存器
CS DS ES SS
代码段寄存器 数据段寄存器 附加段寄存器 堆栈段寄存器
IP FLAGS
指令指针寄存器 标志位寄存器
图2.2 8086 CPU内部寄存器
1.通用寄存器组 8086/8088CPU在指令执行部件EU中有4个16位通用寄 存器,它们是AX、BX、CX和DX,用以存放16位数据或地址 。也可分为8个8位寄存器来使用,低8位是AL、BL、CL和 DL,高8位为AH、BH、CH和DH,只能存放8位数据,不能 存放地址。
(2) 3个控制标志位用来控制CPU的操作,由指令进行置位
和复位。 DF(Direction Flag)——方向标志位。它用以指定字符串处 理时的方向,当该位置“1”时,字符串以递减顺序处理,即地 址以从高到低顺序递减。反之,则以递增顺序处理。 IF(Interrupt enable Flag)——中断标志位。它用来控制8086 是否允许接收外部中断请求。若IF=1,允许CPU响应外部中断, 反之则不响应外部中断。 注意:IF的状态不影响非屏蔽中断请求(NMI)和CPU内部中断请 求。
TF(Trap Flag)——单步标志位。它是为调试程序而设定的 控制位。当该位置“1”时,8086 CPU处于单步状态,此时CPU 每执行完一条指令就自动产生一次内部中断,使用户能逐条跟 踪程序进行调试。当该位复位后,CPU恢复正常工作。
例2.2 将5394H与-777FH两数相加,并说 明其标志位状态: 0101 0011 1001 0100 + 1000 1000 1000 0001 ————————————— 1101 1100 0001 0101 运算结果为-23EBH,并置标志位为 CF=0,PF=0,AF=0,ZF=0,SF=1,OF=0。
∑ AH BH CH DH SI DI SP BP 16 位内部总线 8位 AL BL CL DL AX BX CX DX IP CS DS SS ES 内部暂存器
20 位地址总线 16 位总线
通 用 寄 存 器 组
运算暂存器
总线 控制 逻辑 电路
8086 总线
指令队列缓冲器 ALU EU 控制电路 1 2 3 4 5 6
第2章 8086系统结构
2.1 8086CPU结构 2.2 8086CPU的引脚及其功能 2.3 8086存储器组织 2.4 8086系统配置
2.1 8086CPU结构
Inter 8086CPU是16位微处理器,它有16根数据线和20根地 址线,直接寻址空间为 220 ,即1MB。8088CPU内部结构与8086 基本相同但对外数据总线只有8条,称为准16位微处理器。 2.1.1 8086CPU的内部结构
本节主要内容讲解视 频
2.2 8086CPUD 引脚及其功能
8086/8088CPU根据它的基本性能,应包括20条地址 线,16条数据线,加上控制信号,电源和地线,芯片的引 脚比较多。但由于制造工艺的限制,8086/8088CPU芯片 采用40条引脚的双列直插式封装,因此部分引脚采用了 分时复用的方式。 另外8086/8088CPU可以工作在两种工作模式(最小模 式和最大模式),最小模式用于单机系统。系统中所需要 的控制信号全部由8086直接提供。最大模式用于多处理 机系统,系统中所需要的控制信号由总线控制器8288提 供。