250 likes | 503 Views
见教材 2.3 ~ 2.4. 第 2 章 8086/8088 系统硬件结构. 2.1 8086 CPU 的结构特点 2.2 8086 寄存器结构 2.3 8086/8088 的内部结构. 2.1 8086 CPU 的结构特点. 1 、 8086 在结构上引入了两个重要概念: 并行流水线 和 存储器分段 ,并在 Intel 系列微处理器的升级换代中一直被沿用和发展。 对内存空间实行分段管理: 每段大小为 16B ~ 64KB 用段地址和段内偏移实现对 1MB 空间的寻址 设置段基址寄存器指示段的首地址
E N D
见教材2.3~2.4 第2章 8086/8088系统硬件结构 • 2.1 8086 CPU的结构特点 • 2.2 8086寄存器结构 • 2.3 8086/8088的内部结构
2.1 8086 CPU的结构特点 • 1、8086在结构上引入了两个重要概念:并行流水线和存储器分段,并在Intel系列微处理器的升级换代中一直被沿用和发展。 • 对内存空间实行分段管理: • 每段大小为16B~64KB • 用段地址和段内偏移实现对1MB空间的寻址 • 设置段基址寄存器指示段的首地址 • 2、 8086数据总线和低16位地址总线采用分时复用方式。 • 3、支持多处理器系统。 • 80486DX以后的CPU均将数学协处理器作为标准部件集成到CPU内部。
EU BIU
2.2 8086寄存器结构 • 在8086/8088CPU中,可把寄存器分成通用寄存器和专用寄存器两大类。 一、通用寄存器组 • 通用寄存器组包括4个数据寄存器AX、BX、CX、DX;4个地址指针寄存器SP、BP、SI、DI。 1、数据寄存器:用来存放操作数及中间结果的通用寄存器。 • 16位寄存器:AX,BX,CX,DX,SP,BP,SI,DI • 8位寄存器:AH,AL,BH,BL,CH,CL,DH,DL • 有些寄存器有特殊功能
数据寄存器特有的习惯用法 • AX(AL):累加器,多用于存放中间运算结果。所有I/O指令必须都通过累加器与接口传送信息 。 • BX:基址寄存器,在间接寻址中用于存放基地址。 • CX:计数寄存器,用于在循环或串操作指令中存 放循环次数或重复次数。 • DX:数据寄存器,在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。
2、地址指针寄存器 • 用于存放操作数的地址,编程时通过修改寄存器的内容达到修改地址的目的。 • SP:堆栈指针,指示堆栈段(SS)中的栈顶位置,专门用于数据进栈和出栈的位置指示。 • BP:基址指针,指示堆栈段中一个数据区中的基址位置。 • BX:基址寄存器。在间接寻址中用于存放基地址。 • 变址寄存器:常用于指令的变址寻址。在串操作指令中,用SI存放源操作数的偏移地址,用DI存放目标操作数的偏移地址。 • SI:源变址寄存器 • DI:目标变址寄存器
二、专用寄存器 • 专用寄存器包括指令指针寄存器IP、标志寄存器FLAGS,以及4个段基址寄存器CS、DS、SS、ES。 1、段(基址)寄存器 • 用于存放4个当前可寻址的段基址——段的起始地址。 • 8086/8088CPU对可寻址的1MB空间划分为多个逻辑段,每个逻辑段小于64KB,段内地址是连续的。 • CS指示当前的代码段,用于存放指令代码; • DS指示当前的数据段,用来存放操作数; • ES指示当前的附加段,用来存放操作数; • SS指示当前的堆栈段,用于存放返回地址,保存寄存器内容。
. . 60000H 60001H 60002H 60003H 60004H . . . F0H 物理地址 12H 1BH 08H 物理地址 • CPU送到AB上的20位的地址称为物理(实际)地址。 • 存储器的操作完全基于物理地址。 • 问题: • 8086/8088的内部总线和内部寄存器均为16位,如何生成20位地址? • 解决:存储器分段
低地址 段基址 段i-1 最大64KB 段基址 段i 段基址 段i+1 段基址 高地址 存储器分段 • 有效地址EA:正在使用的存储单元的地址与所在段的基地址的偏移量称为段内偏移量或者称为有效地址EA。
逻辑地址与物理地址 • 段基地址和段内偏移组成了逻辑地址 段地址 偏移地址(偏移量) 格式为:段地址:偏移地址 60000H 60002H 00H 段首地址 12H × × × • • • × × × 0 0 0 0 段基地址(16位) 物理地址=段基地址×16+偏移地址
15 0 段内偏移地址 19 5 4~0 段寄存器 0000 段地址左移4位 ∑ 19 0 20位物理地址 物理地址的形成
10550H CS CS 250A0H DS 2EF00H ES 8FF00H SS [例]:已知CS=1055H,DS=250AH, ES=2EF0H,SS=8FF0H。 DS段有一操作数,其偏移地址=0204H 1)画出各段在内存中的分布 2)指出各段首地址 3)该操作数的物理地址=? 解: 各段分布及段首址见右图所示。 操作数的物理地址为: 250AH×10H+0204H = 252A4H
逻辑地址与物理地址 (1)对存储器的任一位置的访问都是在该位置所在的段基址下进行的。 • 如访问一个地址C85F:109A对应的物理地址为C85F0+109A=C968AH (2)同一个实际地址可以采取不同的逻辑地址形式表示,即不同段可以相互重叠。 • 例如:地址12345H可以表示为1200:0345或1230:0045
为了方便编写程序,4个段寄存器是隐含使用的,但也允许段超越。为了方便编写程序,4个段寄存器是隐含使用的,但也允许段超越。 表2.1 段寄存器使用约定
2、标志寄存器 16位标志寄存器FLAGs 用来反映系统的状态及指令执行的结果。 • SF:符号标志位,若算术运算的结果为负,SF置“1”,否则清零。 • OF:溢出标志位,有符号数算术运算结果产生溢出OF置“1”,否则清零。 • PF:奇偶标志位,逻辑运算中低8位所含1的个数为偶数则PF置“1”,否则清零。 (1)状态标志位 • CF:进位标志,若运算结果最高位产生进位或借位,则CF置“1”,否则置“0” • AF:辅助进位标志,若低字节的第4位上产生一个进位或借位,则AF置“1”,否则置“0”。 • ZF:零标志位,若运算结果为零,则ZF置“1”,否则清零。
(2)控制标志位 • DF:方向标志位 • DF=1串操作指令以递减顺序处理数据串;DF=0以递增顺序处理数据串。 • IF:中断允许位 • 若IF=1,CPU允许接受外部可屏蔽中断请求,即开中断;IF=0关中断 • TF:跟踪标志位 • TF=1处理器处于单步工作方式,每执行完一条指令产生一个软件中断;TF=0正常工作。
3、指令指针寄存器IP • IP始终指向当前代码段(CS)所要取出的下一条指令的地址。每取出一个字节指令后,IP自动加1。可以用转移指令、调用指令及中断和复位等改变IP值。 • IP只能与CS寄存器相互结合,才能形成指令的真正的物理地址。
补充内容,仅供参考 2.3 8086/8088的内部结构 • 8086/8088CPU内部的两大功能结构为总线接口单元BIU(Bus Interface Unit)和指令执行单元EU(Execution Unit)。
一、EU • EU单元负责指令的执行,由算术逻辑单元ALU、标志寄存器FLAGs、通用寄存器及EU控制器等组成,主要进行16位的各种运算及有效地址的计算。 • EU不与计算机系统总线(外部总线)相关,而从BIU中的指令队列取得指令。这个指令队列中,存放着BIU预先由存储器中取出的若干个字节的指令(8088为4个字节,8086为6个字节长队列)。
二、BIU • BIU单元用来实现EU的所有总线操作。它由地址加法器,段寄存器CS、DS、SS、ES,指令指针IP,指令队列缓冲器和总线控制逻辑组成。 • BIU负责CPU与存储器或外部设备之间的信息交换。
在8086/8088中,由于BIU和EU是分开独立工作的,所以取指令和执行可以同时进行。在8086/8088中,由于BIU和EU是分开独立工作的,所以取指令和执行可以同时进行。 • 将取指令部分和执行指令部分分开的好处是,在EU执行指令的过程中,BIU可以取出多条指令放入指令流队列中。当EU执行完一条指令后,就可以立即执行下一条指令,从而减少了CPU为取指令而等待的时间,提高了运算的速度。
8位微机指令执行过程 EU与BIU并行工作情形