1、1,微机原理及应用,张元涛 重庆科技学院电气与信息工程学院,2,第2章 微型计算机中的微处理器,重点掌握的知识 (1)掌握8086/8088CPU的内部结构 (2)掌握寄存器结构 (3)掌握存储器的组织特点以及物理地址的计算方法 (4)掌握I/O端口的编址方式 (5)掌握最大最小两种工作模式配置,3,第1主题问题 8086/8088CPU的编程结构,主要内容:,8086/8088CPU的内部结构 8086/8088CPU的寄存器结构,4,8086/8088CPU的内部结构,8086/8088 CPU的内部结构基本相同 均由两个独立的工作部件组成 一个称为执行部件(EU) 一个称为总线接口部件 (BIU),5,8086/8088CPU的内部结构,8088CPU外部数据总线为8位、指令队列为4字节,寄存器是中央处理器内的组成部份寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。 指令:确定运算与操作 数据:运算或读写操作的对象 地址:标记和确定内存空间中具体的存储位置,指令队列的设置使指令的取出与执行并行进行,以提高了程序的运行速度,地址加法器的作用是根据段寄存器存放的段
2、基地址与EU送出的16为偏移地址计算得到20位的实际地址,输出输入控制电路实现总线控制,决定读或写、对内存或对I/O接口,取指令、指令译码、产生并传送操作信号,6,算术逻辑单元(运算器) 8个通用寄存器 1个标志寄存器 EU部分控制电路,执行部件EU的组成及作用,取指令,指令译码 执行指令,完成运算,7,总线接口部件BIU的组成及作用,地址加法器 6字节指令队列缓冲器 4个16位段寄存器 16位指令指针寄存器 输入输出控制电路,计算20位的存储器地址 完成CPU与内存间以及CPU与I/O接口间的信息传送分两种情况: 预取指令时:利用CPU执行指令而总线空闲,从内存中取出指令放入指令队列(等待CPU取走) EU执行指令时:按EU的指令,向内存或I/O接口写运算结果,从内存或I/O接口取数据 控制外部总线,保证各种信息的正确传送,8,指令队列缓冲器,指令队列缓冲器 8086 的指令队列为6个字节 8088 的指令队列为4个字节 指令队列缓冲器的指令存放状态 顺序指令执行:指令队列存放紧接在执行指令后面的那一条指令 执行转移指令:立即清除指令队列中的内容,从新的地址取入指令,并立即送往执行单
3、元,然后再从新单元开始重新填满队列,实现CPU的流水线处理操作,9,8086/8088CPU的内部(编程用)寄存器,包括14个16位的寄存器 4个数据寄存器(AX,BX,CX,DX) 4个段寄存器(CS,DS,ES,SS) 2个地址指针寄存器(BP,SP) 2个变址寄存器(SI,DI) 2个控制寄存器(IP,FLAGS),10,1. 数据寄存器,含4个16位寄存器,也可分别作为2个8位的字节寄存器使用;常用来存放参与运算的操作数或运算结果 AX(Accumulator)(AH、AL)累加寄存器 常用于数据运算或与外设交换数据 BX(Base)(BH、BL)基址寄存器 在间接寻址中用于存放内存的基地址 CX(Count)(CH、CL) 计数寄存器 在循环、移位等操作中用于计数 DX(Data)(DH、DL) 数据寄存器 常用于数据的传送或配合AX进行双字节运算,11,2. 段寄存器,4个16位段寄存器,用于存放各逻辑段的段基地址;不可互换的使用 CS(Code Segment ):代码段寄存器 用于存放当前执行程序所在段的段基地址 DS(Data Segment ):数据段寄存器 用于存
4、放当前使用数据所在段的段基地址 ES(Extra Segment ):附加段寄存器 用于存放当前附加数据段的段基地址 SS(Stack Segment ):堆栈段寄存器 用于存放当前堆栈段的段基地址,12,3. 地址指针寄存器,常用于存放段内寻址时的偏移地址 SP:堆栈指针寄存器,存放当前堆栈段中栈顶的偏移地址 BP:基址指针寄存器,存放位于堆栈中的某个存储单元的偏移地址 在寻址操作时一般均与SS搭配使用,13,4. 变址寄存器,SI:源变址寄存器 DI:目标变址寄存器 变址寄存器常用于指令的间接寻址或相对寻址;存放当前数据段中某一个存储单元的偏移地址 与DS配合使用 用SI存放源操作数的偏移地址 用DI存放目标操作数的偏移地址,14,IP寄存器 指令指针寄存器,存放下一次要取出执行的指令的偏移地址 与CS结合使用构成真正的指令物理地址(CS*16+IP) 用户不能直接更新使用,只能由系统自动更新,5. 指令指针寄存器,15,部分寄存器一般用途示意,代码段,段基地址CS,某指令地址IP,数据段或附加数据段,段基地址DS或ES,某数据地址DI,某数据地址SI,堆栈段,段基地址SS,堆栈顶
5、地址SP,栈内某数据地址BP,16,6. 标志寄存器,FR(FLAGS) 状态标志寄存器 8086/8088CPU设有一个16位的状态标志寄存器;使用其中的9位作为状态标志位和控制标志位 6个状态标志(也称为条件码)-寄存ALU运算结果的状态信息 3个控制标志-寄存CPU的工作状态信息,17,标志寄存器图示,溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0,方向标志DF位用来决定在“数据串操作”指令执行时的步进方向;DF=1表示由高字节向低字节方向进行称为递减方式,中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断请求,以及CPU内部产生的中断请求;IF=1表示开中断,状态控制标志TF位用来控制CPU是正常(TF=0)执行,还是单步(TF=1)执行,符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。对于有符号数就反映运算结果的正负号。运算结果为正数时,SF的值为0,零标志ZF用来反映
6、运算结果是否为0。如果运算结果为0,则其值为1,在运算过程中,如果发生低4位向高4位的进位或借位时,辅助进位标志AF的值将被置为1,奇偶标志PF用于标志运算结果的低8位中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,此时其值为1,18,标志寄存器置位问题,状态标志位由ALU运算的结果置位 控制标志位需要在程序中用专门的指令置位,19,运算对标志位的影响的例,20,第2主题问题 8086/8088的存储器组织,主要内容:,存储器组织 8086存储器的分体结构 存储器的分段和物理地址的形成,21,存储器的组织,在存储器中,以字节为单位存取数据 存储地址即为存储单元编号,称为地址 8086/8088提供20条地址总线,可寻址的存储空间为220=1MB 每个存储单元的地址均为20位(但一般用5个十六进制数书写) 地址范围为:00000H-0FFFFFH,22,字节数据与字数据的存储,存储在一个存储单元中的数据称为字节数据 字节数据的存储:按顺序存放 其存储单元的地址,叫做该字节数据的存储地
7、址 需要存储在相邻两个存储单元中的数据称为一个“字”,叫做字数据 字数据的存储:低字节存于低地址单元,高字节存于高地址单元 存放该字数据低字节的存储单元的地址,叫做该字数据的存储地址,23,存储器中数据的存储方式,00A22H,00B06H,00B07H,03A03H,03A04H,字数据3A0DH的存储地址为:00B06H,字数据325EH的存储地址为:03A03H,24,规则字与非规则字,存放一个字数据的低字节地址如果是偶数地址,则称为“规则字” 存放一个字数据的低字节地址如果是奇数地址,则称为“非规则字” 存取“规则字”与“非规则字”,其操作过程不同(即所使用的总线周期数不同),25,在8086系统中,将其可寻址的1 MB存储器分为两个存储体;即奇地址存储体和偶地址存储体,各为512 KB,8086存储器的分体结构,26,奇地址存储体与系统高8位数据总线相连,偶地址存储体与系统低8位数据总线相连 奇高偶低 读/写偶地址体时,数据从低8位数据总线上传送 读/写奇地址体时,数据从高8位数据总线上传送 特别提示:关注BHE、A0和SEL信号,8086存储器的分体结构,27,8086存储
8、器的分体结构,8086CPU是按16位结构设计,可以通过两个存储体直接读/写一个字数据;也可以只从一个存储体中读/写一个8位的字节数据 SEL为奇偶地址存储体的“片选”信号 奇偶地址存储体的选择由BHE信号和A0决定 所以读/写字数据或字节数据就会有几种不同的情况,28,存储器的分段和物理地址的形成,8086/ 8088 的地址总线(AB)为20位 直接寻址范围是 220 = 1 MB个存储单元 但是: 8086/ 8088 的寄存器、ALU都是16位,送出的也只能是16位的地址数据 最多表示 216 = 64 KB 个地址编号 就是说:16位的寄存器和ALU不能直接存放和处理20位的地址数据,29,存储器的逻辑分段,CPU对存储器实行“分段”管理 即将存储空间分为若干逻辑段,每个逻辑段长度64 KB;16位的总线足可以管理和标记它 某存储单元的实际地址用段的基本地址(段基址)加该存储单元在该段中的相对位置(偏移地址)共同表示,30,比喻,假设 教室内有200个座位,都编有3位数的号码 必须按号入座 但,入场卷上的编号只能是两位数 解决的办法 将全部座位先分为两个区域;各区域的编号用两
9、位数编制(如10、20) 各区域可容纳100人,编号为00-99 你的实际座位号应为:区域号*10+座位号,31,存储器的逻辑分段原则,逻辑段的划分原则上不受限制 各段之间可连续、可分开、可部分重叠、还可完全重叠 但要求:段的分配只能从地址低4位均为0的内存单元开始,32,存储器分段图示,最大64KB,最小16B,33,存储器分段例,34,段首地址、段基地址和偏移地址,60002H,12H,60000H,0 0 0 0,段基地址(16位),段首地址(20位), , ,偏移地址=0002H,每个段都从低4位为0的存储单元开始 段首地址的高16位称为段基地址 偏移地址为相对于段首地址的偏移量,00H,一定为0,35,地址存储与寄存器,基址或变址寄存器,存储相应的偏移地址,段寄存器,存储各段的段基本地址,36,存储器地址的两种表示方式,物理地址和逻辑地址是两种存储单元地址的表示和标记方法 物理地址:存储单元所具有的实际地址 由20位二进制代码构成 逻辑地址:在程序中(指令中)书写和使用的地址 由两部分构成 段基地址 :偏移地址,37,物理地址的形成方式,由逻辑地址(即段基地址和偏移地址)通过计算,转换得到,38,例: 假设 ( DS)=3200H 若指令中给出的偏移地址: 1050H,物理地址 = 3200H10H +1050H = 33050H,逻辑地址到物理地址的变换例,BIU中的地址加法器,实现逻辑地址到物理地址的变换,左移1位,39,例,在内存中某数据区内,连续存放27个字数据。首字的存储地址为 BA00H:1BA0H。计算该数据区的首末存储单元的物理地址 首地址为:BA00H*10H+1BA0H=BBBA0H 末地址为:BBBA0H+35H(27*2-1)=BBBD5H 最后一个字数据的存储地址=BBBD5H-01H=BBBD4H,40,第3主题问题 8086/8088的I/O组织,CPU与外部设备通过I/O接口芯片连接 每个I/O接口芯片上都有若干个寄存器;通过寄存器与外设交换数据信息 寄存器可以是8位的,交换字节数据 也可以两个相邻8位寄存器合并为一个16位使用,交换字数据 称接口中的寄存
《微机原理幻灯片第2章》由会员F****n分享,可在线阅读,更多相关《微机原理幻灯片第2章》请在金锄头文库上搜索。