微机原理及应用 课件 第三章 认识微处理器_第1页
微机原理及应用 课件 第三章 认识微处理器_第2页
微机原理及应用 课件 第三章 认识微处理器_第3页
微机原理及应用 课件 第三章 认识微处理器_第4页
微机原理及应用 课件 第三章 认识微处理器_第5页
已阅读5页,还剩266页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及应用第三章认识微处理器第一讲微处理器的功能下面我们来学习微处理器的功能微处理器的功能微处理器就是我们说的中央处理单元CPU,在这一章我们要学习CPU的引脚功能和内部结构中央处理单元CPUCPU的引脚功能和内部结构CPU是计算机系统的核心中央处理单元CPU计算机系统的核心它可以根据指令实现各种相应的运算,并且能实现数据的暂存,CPU还能够与存储器以及接口通信计算机系统的核心根据指令实现各种运算实现暂存数据实现与存储器和接口的信息通信大家看这里描述的信息说的其实是CPU内部和外部两个方面,计算机系统的核心根据指令实现各种运算实现暂存数据实现与存储器和接口的信息通信内部外部在CPU内部有运算器和控制器,所以它可以进行运算和一些控制,但是CPU只在自己内部处理还不行,它要去控制其他设备与它协同工作,所以CPU还要与其他的外围的设备进行一个数据的沟通,内部外部运算器控制器控制其他设备与其协同工作与其他外围设备沟通数据这些外部设备就比如存储器或接口内部外部运算器控制器存储器接口CPU的内部主要由运算器,控制器和内部寄存器组构成,这是它的硬件方面,CPU的内部主要由运算器,控制器和内部寄存器组构成,这是它的硬件方面,运算器控制器内部寄存器组硬件方面在软件方面,每一种CPU都会有自己的指令级,那么8088、8086使用的指令集基本相同,所以我们不加区分。关于指令集我们会在后面的章节中给大家介绍指令级软件方面8088、8086指令集基本相同不加区分运算器控制器内部寄存器组硬件方面在进一步展开讨论cpu之前,我们还是简单回顾一下CPU的三大硬件结构,算术逻辑单元(ALU)1控制器2寄存器3首先是ALU,它是算术逻辑单元,也称运算器,算术逻辑单元(ALU)1控制器2寄存器3算术逻辑单元运算器它是算术逻辑单元,也称运算器,它是以加法器为基础,配合其他的逻辑电路可以完成加减乘除的基本运算,并且基于这些基本运算完成一些更复杂的运算以及各种逻辑运算,更高级的ALU还可以完成浮点运算,以加法器为基配合其它逻辑电路完成加、减、乘、除和其他各种逻辑运算ALU能完成浮点运算关于这一点我们展示过奔腾系列CPU的内部结构图,我们已经看到了其中进行浮点运算的部分奔腾关于这一点我们展示过奔腾系列CPU的内部结构图,我们已经看到了其中进行浮点运算的部分奔腾下面一个是控制器,控制器2寄存器3算术逻辑单元(ALU)1指令寄存器IR存放从存储器取出的、将要执行的指令(实为其操作码)控制器又包括三大部分,一个是指令寄存器,它是用来存放从存储器中取出的将要执行的指令然后是指令译码器,指令译码器是对指令寄存器中的指令进行译码,然后确定这个指令应该执行什么样的操作指令译码器ID对指令寄存器IR中的指令进行译码,以确定该指令应执行什么操作最后一个是可编程逻辑阵列PLA,也称为定时与控制电路,它会产生取指令和执行指令所需要的各种微操作的控制信号。由于每一条指令要执行的具体操作是不同的,所以每条指令会对应控制信号的某一种组合,PLA就告诉我们的执行这条指令究竟要执行哪些操作可编程逻辑阵列PLA产生取指令和执行指令所需的各种微操作控制信号。每条指令将对应控制信号的某一种组合,以确定相应的操作序列。定时与控制电路这是控制器的一个完整工作流程,我们有了指令以后,首先要把它取到这个指令寄存器中,然后再交给指令译码器,指令译码完毕以后就发送给可编程逻辑阵列,可编程逻辑阵列分析出要执行这条指令需要哪些具体的微操作。如果微操作还需要存储器或接口参与,那么可编程逻辑阵列会发送控制信号到控制总线上,例如发送读或写的信号,让存储器或接口执行读或写的操作,指令寄存器IR指令译码器ID指令代码可编程逻辑阵列PLA这是控制器的一个完整工作流程,我们有了指令以后,首先要把它取到这个指令寄存器中,然后再交给指令译码器,指令译码完毕以后就发送给可编程逻辑阵列,可编程逻辑阵列分析出要执行这条指令需要哪些具体的微操作。如果微操作还需要存储器或接口参与,那么可编程逻辑阵列会发送控制信号到控制总线上,例如发送读或写的信号,让存储器或接口执行读或写的操作,操作控制信号指令寄存器IR指令译码器ID指令代码控制总线CB可编程逻辑阵列PLAI/O接口RAMROM存储器或接口控制器2寄存器3算术逻辑单元(ALU)1寄存器寄存器是CPU内部的存储单元CPU内部的存储单元由于寄存器是在CPU内部的,所以CPU去读写寄存器的速度是非常快的,相比于内存储器来说,内存储器它是在CPU外部的,所以CPU要读写存储器要经过各种总线,所以呢这个速度会比较慢,比较耗时,CPU内部寄存器速度快CPU外部内存储器速度慢CPU访问寄存器更方便省时CPU内部的寄存器分两种,通用寄存器和专用寄存器,通用寄存器是由程序规定它的用途,专用寄存器是CPU在设计之初就已经固定好的,比如说堆栈指针寄存器和标志寄存器等等,由程序员规定其用途通用寄存器专用寄存器用途固定专用如:堆栈指针寄存器、标志寄存器等寄存器以上这些内容我们在前面已经提到过,这里只是简单回顾一下,下面我们将会重点来介绍微处理器它的外部引脚和主要功能。谢谢观看!微机原理及应用第三章认识微处理器第二讲8088-8086CPU下面我们来学习80888086的CPU8088-8086CPU我们这门课程是以英特尔公司的80x八六的基础产品,8088和8086为背景机展开学习的。由于8088和8086他们的差别比较小,英特尔公司80x86差别较小那我们就本节以8088为主进行介绍,如果没有特别的说明的话,我们介绍的所有内容对于8086都是适用的8086都适用8088和8086都属于第三代CPU。之所以叫8088或8086,他们的区别主要在于芯片的引脚上。第三代CPU芯片引脚8086是英特尔发布的16位芯片,它的内部数据线和外部数据线都是16位的,所以它是真正的16位机英特尔发布的16位芯片内部和外部数据线为16位真正的16位机但是英特尔在发布了8086产品以后,发现市面上很多产品仍然是用八位数据进行传输的,于是因特尔基于这种情况,又发布了8088以兼容现有的产品。8088它的特点就是它的内部数据线是16位的,但是它的外部数据总线是八位的,所以它是准16位机无论8086还是8088,他们都被广泛的应用于各种智能控制系统中,在最小的配置下,只需要四片外围的芯片就可以构成一个应用系统,8088和8086都具有两种工作方式,一种是最小模式,一种是最大模式内部数据线是16位外部数据总线是8位准16位机无论8086还是8088,他们都被广泛的应用于各种智能控制系统中,在最小的配置下,只需要四片外围的芯片就可以构成一个应用系统,四片外围芯片应用系统8088和8086都具有两种工作方式,一种是最小模式,一种是最大模式最小模式最大模式下面我们来比较一下,8086和8088两种芯片,8086和8088的地址引脚是20根,从A0~A19。所不同的是8086有16根数据引脚,就是D0~D15,而8088只有8根数据引脚,就是D0~D7地址引脚是20根,从A0~A1916根数据引脚8根数据引脚由于芯片空间有限,地址总线和数据总线是复用的引脚,地址总线和数据总线是复用的引脚空间有限对于8088来说,它只有八根地址线,所以大家可以看到这里是AD0~AD7,从A8开始就不再是ad了,因为从A8到A15就只有地址线不需要根数据线复用了八根地址线不再是AD只有地址线不需要根数据线复用但是,对于8086来说,它的数据线和地址线要从AD0复用到AD15,因它有20根地址线和16根数据线,所以大家可以看到它是从AD0一直复用到AD15,然后A16~19是没有跟数据线复用,这是第一点大家要注意的区别,20根地址线16根数据线没有跟数据线复用memory第2点就是M/IO这个引脚。这个引脚中M表示memory就是访问存储器的意思。IO就是访问IO端口的意思。那么究竟访问存储器还是IO端口,要看这个引脚是高电平还是低电平。还记得我们在将译码器的时候说过,对于引脚来说,引脚上方的小横杠表示低电平有效,访问存储器M访问IO端口IO引脚是高电平还是低电平引脚上方的小横杠表示低电平有效我们来看8086,它是在io上有小横杠,而8088是在m上有小横杠,因此,同样的电平接入到两个芯片的这个引脚上表示的含义是不相同的。对于8086来说,如果是低电平,那么就是去访问io,但是对于8088来说就是去访问内存储器,这是一个非常大的区别同样的电平接入两个芯片的引脚表示含义不相同对于8086来说,如果是低电平,那么就是去访问io,但是对于8088来说就是去访问内存储器,这是一个非常大的区别低电平访问IO端口低电平访问存储器8088和8086的特点我们再来看8088和8086的特点,它们具有三个特点,第一个是采用了并行流水线的工作方式,通过设置了指令预取队列来实现,关于指令预取队列我们在后面会详细的介绍。第二个是对内存空间实行了分段管理,将内存分成了四个段,并设置了段寄存器,可以方便的实现对1M内存空间的寻址,这是我们在下一章要介绍的重点内容。最后就是他们都支持多处理器系统,也就是系统中可以有多个CPU,而不是只有一个采用并行流水线工作方式通过设置指令预取队列实现01对内存空间实行分段管理将内存分为4个段并设置地址段寄存器,以实现对1MB空间的寻址02支持多处理器系统系统中可以有多个CPU,不只一个03重点内容谢谢观看!微机原理及应用第三章认识微处理器第三讲8088-8086CPU工作模式下面我们来学习8088,8086CPU的工作模式8088-8086CPU工作模式8088和8086既可以工作在最大模式也可以工作在最小模式,最大模式最小模式那么我们要如何告诉8088、8086它现在的工作模式呢?如何告诉8088、8086现在的工作模式?就是通过mnmx这个引脚。这个引脚对于8088和8086来说是相同的相同当此引脚接高电平的时候,说明8088或8086CPU是处于最小工作模式的,当这个引脚是低电平的时候,说明8088或8086CPU是处于最大工作模式的,引脚接高电平时8088或8086CPU最小工作模式引脚接低电平时8088或8086CPU最大工作模式最小工作模式的意思就是整个系统里边只有一个CPU,他的控制信号比较少,都由这一个CPU说了算,所以不存在总线争用的问题,因而也就不需要接总线控制器。最大工作模式的意思是说整个系统中有多个CPU,每个CPU都可能正在使用总线,所以会出现控制信号的来源比较多,而且会存在多个CPU争着使用总线问题,单处理器模式,控制信号较少,一般可不必接总线控制器多处理器模式,控制信号较多,须通过总线控制器与总线相连MN/MX=1(接+5V)由MN/MX引线的状态决定MN/MX=0(接地)最小工作模式最大工作模式这种情况下,就需要有一个专门管理总线的模块,负责决定究竟总线给谁使用,这就是总线控制器,总线控制器专门管理总线的模块决定究竟总线给谁使用最小工作模式最大工作模式因此我们在区分最大模式和最小模式的电路时,最简单的方法就是看系统中是否连接了总线控制器最小工作模式最大工作模式系统是否连接总线控制器下面我们来看最小工作模式。在最小工作模式的系统连接图中只有一个CPU,这个CPU要连接信号发生器,以给CPU一个固定的工作节拍。还有地址锁存器和数据收发器用来将CPU复用的地址和数据信号正确的发送到地址总线和数据总线上。最小工作模式时钟发生器8088CPU••控制总线数据总线地址总线ALEALE:AddressLockEnable给CPU一个固定的工作节拍数据收发地址锁存其他的控制信号就直接发送到控制总线上就好了。这里,我们来重点说明一下地址锁存器和数据收发器最小工作模式时钟发生器8088CPU控制总线数据总线地址总线ALEALE:AddressLockEnable••数据收发地址锁存地址锁存数据收发在介绍引脚的时候,我们知道8088和8086,它们的地址引脚和数据引脚是复用的,也就是他们使用同样的引脚发送地址和数据信息,地址引脚数据引脚复用使用同样的引脚发送地址和数据信息那么如何区分这个引脚上究竟发送的是数据还是地址呢?其实是通过时间来区分的如何区分引脚上究竟发送的是数据还是地址?时间芯片我们知道芯片它不管是读数据还是在写数据,都是有一定的操作流程的,读数据写数据有一定的操作流程它首先要把地址发送出来,当CPU将地址发送出来的时候,他还会配合着让ALE这个引脚有效,这个引脚也叫做地址锁存使能信号最小工作模式时钟发生器8088CPU••控制总线数据总线地址总线ALEALE:AddressLockEnable数据收发地址锁存把地址发送出来地址锁存使能信号当这个信号有效的时候,地址锁存器就是会像一把锁头一样,将此时AD引脚上的数据锁存到地址总线上,一旦锁存地址总线上的值就不会因为AD引脚的值发生变化而变化了。最小工作模式时钟发生器8088CPU••控制总线数据总线地址总线ALEALE:AddressLockEnable数据收发地址锁存信号有效不因AD引脚的值发生变化当CPU要开始发送数据的时候,AD引脚上的值从地址信息切换成了数据信息,这些数据信息不会通过地址锁存器进入地址总线,而是通过数据收发器进入了数据总线最小工作模式时钟发生器8088CPU••控制总线数据总线地址总线ALEALE:AddressLockEnable数据收发地址锁存开始发送数据时数据信息不通过地址锁存器进入地址总线,是通过数据收发器进入数据总线这个时候再结合CPU发出的控制指令,存储器或IO接口就知道CPU究竟是要读数据还是写数据了最小工作模式时钟发生器8088CPU••控制总线数据总线地址总线ALEALE:AddressLockEnable数据收发地址锁存开始发送数据时读数据写数据CPU发出控制指令IO接口存储器这是8086处于最小模式组建的一个系统。我们可以看到这里有负责时钟的芯片,有进行地址锁存的芯片,还有进行数据收发的芯片。请大家注意,这里的控制信号都是直接进入到了控制总线上的,所以这个8086它是处于最小工作模式的80868086最小模式组建系统注意控制信号都是直接进入到控制总线上最小工作模式下面我们再来看一下最大工作模式,在最大工作模式下,系统中会有多个CPU,最大工作模式地址总线数据总线控制总线总线控制器地址锁存8088CPUALE数据收发时钟发生器系统有多个CPU这个时候需要吧控制信号接入到总线控制器中,由总线控制器负责指定现在总线上的控制信号是来自于哪一路CPU。最大工作模式地址总线数据总线控制总线总线控制器地址锁存8088CPUALE数据收发时钟发生器控制信号来自哪一路CPU同样的,由于CPU它的地址和数据是复用的,仍然是需要通过进行地址锁存的控制才能保证引脚上的地址和数据是可以被准确的进行区分的最大工作模式地址总线数据总线控制总线总线控制器地址锁存8088CPUALE数据收发时钟发生器进行地址锁存的控制保证引脚上的地址和数据被准确区分这就是我们说的,最大模式和最小模式的主要区别,就是我们要看系统中有多少个CPU,以及系统中是否有总线控制器最小工作模式最大工作模式主要区别系统中有多少个CPU系统中是否有总线控制器这是8086连接的最大工作模式的示意图。我们可以看到除了时钟,地址锁存和数据收发这些跟前面一样的芯片以外,还有一个8288,它就是总线控制器,80868086最大工作模式示意图总线控制器它也需要一个时钟给他工作节拍,将8288连接到控制总线上,以实现对总线上的控制信号进行监控和管理需要一个时钟给工作节拍将8288连接到控制总线上对总线上的控制信号进行监控和管理谢谢观看!微机原理及应用第三章认识微处理器第四讲8088CPU主要引脚(一)下面我们来学习8088CPU的主要引脚8088CPU主要引脚(一)8088和8086都有40个引脚,属于双列直插式的封装,他们的工作电压是5v40个引脚双列直插式封装工作电压:5v在8088和8086中,有些引脚属于双重定义的,双重定义比如我们前面介绍过的地址和数据引脚,他们采用分时复用的方式进行工作地址引脚数据引脚分时复用可以通过ALE这个引脚加上分时工作一个特性,将AD引脚上的地址和数据区分开来区分AD引脚上的地址和数据由于地址信号和数据信号是复用的,就可以大大的减少芯片所需要的引脚数目,从这张图上可以看到8088和8086的引脚是基本相同的,我们在前边已经给大家介绍了他们的主要差别减少了引脚数目8088与8086的引脚基本相同下面我们来详细的了解一下各引脚的功能各引脚的功能首先来看一下A16到A19这四个引脚首先来看一下A16到A19这四个引脚,它们是地址的高四位,也是复用的引脚,是跟状态引脚复用,状态引脚是指S3到S6状态引脚地址高四位复用引脚这四个引脚的输出是三态输出,包括低电平,高电平和高阻态,也就是悬浮状态低电平三态输出状态引脚地址高四位复用引脚高电平高阻态(悬浮状态)8088在执行指令的过程中,在某一个时刻这四个引脚的输出是地址总线的高四位,此时这四个引脚的信息可以用于CPU对外部设备寻址,在某些时刻,这四个引脚表示CPU处于某种状态,S3到S6是什么含义呢?低电平三态输出高电平高阻态(悬浮状态)输出是地址总线的高四位用于CPU对外部设备寻址S3到S6是什么含义?首先S6它是恒等于0的,S5是中断标志位,S4到S3的组合表示CPU当前使用的段寄存器是哪一个?S6:恒等于0S5:中断标志位S4到S3的组合表示CPU当前使用的段寄存器是哪一个?关于段寄存器的定义我们在后面会给大家介绍,这里大家就知道S3到S4的不同组合表示CPU它正在使用不同的寄存器,这个寄存器跟寻址有关S6:恒等于0S5:中断标志位S3到S4的不同组合表示CPU在使用不同寄存器再来看A8到15,A8到A15是地址总线的引脚,地址总线的引脚由于8088没有D8~D15的引脚,所以A8到A15也没有跟数据总线复用,它们只进行地址信号的输出,没有跟数据总线复用只进行地址信号输出地址总线的引脚再来看AD00到AD7,这些是地址线和数据线复用的引脚,也是三态的输出,我们前面已经给大家介绍了如何区分这些引脚究竟是地址还是数据?地址线和数据线复用的引脚三态的输出如何区分引脚是地址还是数据?可以结合ALE以及DEN的状态ALEDEN当ALE有效的时候,说明这些引脚上它发送的是地址信号,地址锁存器会将这些地址锁存到地址总线上当DEN这个引脚有效的时候,说明这些引脚上发送的是数据信号ALEDEN锁存在地址总线上地址信号数据信号再来看IO/M这个引脚,我们在前面已经给大家介绍过了,他表示的是CPU要去存取内存储器的信息还是与IO接口进行数据的传输,CPU存取内存储器的信息CPU与IO接口传输数据当这个引脚是高电平时,表示CPU要IO接口进行信息的传输,当这个引脚是低电平的时候,表示CPU要跟存储器进行信息的传输CPU和IO接口传输信息高电平CPU和存储器传输信息低电平再来看WR和RD这两个引脚这两个引脚的头上都是带小横杠的,那说明这两个引脚都是低电平有效的低电平有效WR是write的简写,他表示写信号RD是read的简写,他就表示是读信号低电平有效读信号read写信号write所以当WR这个引脚是低电平时,表示CPU要进行写操作CPU要写操作低电平当RD这个引脚是低电平时,表示CPU要进行读操作,那究竟写IO还是存储器或者是读IO还是存储器呢?同学们想一下?对,我们要将WR和RD的状态与IO/m这个引脚的状态结合起来一起看才能确定CPU要读操作低电平是写IO或存储器还是读IO或存储器?当RD这个引脚是低电平时,表示CPU要进行读操作,那究竟写IO还是存储器或者是读IO还是存储器呢?同学们想一下?对,我们要将WR和RD的状态与IO/m这个引脚的状态结合起来一起看才能确定CPU要读操作低电平结合WR和RD的状态与IO/m引脚的状态谢谢观看!微机原理及应用第三章认识微处理器第五讲8088CPU主要引脚(二)下面我们来学习另外几个比较重要的引脚8088CPU主要引脚(二)先来看一下DT/R这个引脚8088CPU主要引脚(二)DT是datatransmit的简写,DR是datareceive的简写DT:datatransmitDR:datareceive8088CPU主要引脚(二)DT/R是复用的引脚,它表示数据发送和接收的控制信号复用引脚数据发送接收控制信号8088CPU主要引脚(二)它输出也是三态,用于指示数据的传送方向指示数据传送方向输出:三态8088CPU主要引脚(二)当DT有效的时候,表示数据是从CPU送往外部的,当DR有效的时候,表示数据是从外部进入到CPU的,它可以用来控制总线收发器的传送方向指示数据传送方向输出:三态数据从CPU送往外部DT有效数据从外部进入CPUDR有效控制总线收发器的传送方向下一个引脚是DEN,它是数据允许信号数据允许信号由于地址总线和数据总线是复用的,所以当DEN有效的时候,表示复用的引脚上,实际传送的是数据信息,也就是AD0~AD7引脚上正在发送D0~D7数据允许信号AD0~AD7引脚上正在发送D0~D7传送数据信息而且数据信息会被锁存在数据锁存器中数据允许信号AD0~AD7引脚上正在发送D0~D7传送数据信息锁存在数据锁存器下面再来看一下,地址锁存使能信号,地址锁存使能信号它会将AD0到A19上的信息锁存在地址总线上将AD0到A19上的信息锁存在地址总线上当它为高电平的时候,表示ad0~ad7上正在发送的是地址信号ad0~ad7上正在发送地址信号高电平Ready信号是输入信号,它是高电平有效的,表示准备好了输入信号准备好了高电平被访问的内存或者io会发出这样的信号给CPU,当这个信号有效时,表示内存或IO已经准备好了,CPU可以对其进行数据访问输入信号准备好了高电平内存或IO已准备好,CPUa可以对其进行数据访问信号有效当这个信号无效的时候,表示内存或IO还没有准备好,CPU就不能对其进行读写操作和访问输入信号准备好了高电平内存或IO未准备好,CPUa不能对其进行读写操作和访问信号无效所以这个信号其实是外部设备向CPU报告他们的状态的信号,当CPU检测到这个引脚从0变到1的时候,说明内存或io准备好了,CPU才开始对这些设备进行访问输入信号向CPU报告状态内存或io已准备好从0变到1下面介绍跟中断相关的引脚,首先是INTR引脚,它的英文是interrupt,就是中断,Interrupt:中断它表示可屏蔽的中断请求信号,是输入信号,还记得屏蔽是什么意思吗?屏蔽就是让CPU感受不到Interrupt:中断输入信号可屏蔽的中断请求信号屏蔽:让CPU感受不到在没有屏蔽的情况下,CPU在每条指令的最后一个机器周期的最后一个时钟周期,会去看一下这个引脚,如果这个引脚为高电平,那就是有效的,那么CPU它就可能会去执行外部设备的中断请求引脚为高电平则有效,CPU执行外部设备的中断请求没有屏蔽如果CPU屏蔽了外部中断,那么这个引脚即使有效,CPU也不会去相应这个中断。CPU可以通过指令屏蔽掉外部中断,这个操作也叫关中断。引脚为高电平则有效,CPU执行外部设备的中断请求没有屏蔽即使引脚有效,CPU也不会响应中断有屏蔽关中断:CPU通过指令屏蔽掉外部中断下面一个引脚是INTA,它的英文是interruptacknowledgement,意思是中断响应,它是输出信号,中断响应interruptacknowledgement输出信号当CPU在INTR上收到的这个中断请求信号后,如果他要响应这个中断就要将INTA这个引脚置成低电平,表示CPU要响应INTR的请求了,它可用于外部中断源的中断类型码的选通信号CPU收到中断请求信号CPU响应INTR的请求将INTA置成低电平可用于外部中断源的中断类型码的选通信号再来看一下nonmaskableinterrupt,NMI,它是不可屏蔽的中断请求信号,也是输入信号中断请求信号输入信号从这个引脚来的外部中断请求,CPU是不能用软件对它进行屏蔽的,CPU在执行完它当前的指令以后,必须去响应该中断请求,这就是不可屏蔽的含义CPU不能用软件屏蔽它CPU必须响应中断请求谢谢观看!微机原理及应用第三章认识微处理器第六讲8088CPU内部结构下面我们来学习一下8088的内部结构8088CPU内部结构8088的内部结构如这张图所示。其实这张图看起来并不复杂,对吗?这是我们为什么要以80X86为原型机来讲解CPU的原因。就是因为他们的结构比较简单,同学们容易理解,像其他更先进的CPU,它的内部结构太复杂了,同学们学习起来会非常困难8088的内部结构图并不复杂8088结构较简单易理解更先进的CPU内部结构复杂不易理解businterfaceunitexecutionunit在8088的内部,其实我们可以把它从中间分开看成两部分,左边的叫执行单元英文是executionunit,简写成EU。右边叫总线接口单元,英文是businterfaceunit,简写成BIU执行单元总线接口单元EUBIU从字面上我们可以这么理解。EU是CPU执行各种指令的地方,而BIU是CPU跟外部设备进行通信的通道EUBIUCPU执行各种指令的地方CPU跟外部设备进行通信的通道首先来看一下执行单元,它里面包括了运算器,就是像马蹄形的这个部分。八个通用寄存器,就是这上面8个长方形的框。一个标志寄存器,它在ALU的下面,写着FLAGS的这个地方和EU部分的控制电路,在跟BIU邻近的这个地方。执行单元的功能,我们可以跟它的内部器件对应着看。运算器是进行指令的计算和执行的地方。八个通用寄存器可以用来暂存中间运算结果。而标志寄存器可以用来保存运算的特征。控制电路是用来控制究竟是要取指令还是去执行指令等构成执行单元功能运算器8个通用寄存器1个标志寄存器EU部分控制电路指令的计算和执行暂存中间运算结果保存运算的特征控制取或执行指令总线接口单元的功能是从内存中取出指令到指令预取队列中,并且负责跟内存或者是输入输出接口之间进行数据的传送。如果执行到了转移指令,那么意味着现在保存在指令预取队列中的指令可能都不是将要执行的治理,那么BIU会把指令预取队列的内容清空,也就是复位,然后再从转移指令指示的新的地址取指令。取到指令后传给执行指令的单元进行执行。指令预取队列是80X86系列的创新,总线接口单元功能从内存中取指令到指令预取队列负责与内存或输入/输出接口之间的数据传送在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行80X86系列的创新功能在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行它是CPU能够进行并行流水线工作的非常重要的基础,我们在下一节会给大家重点的介绍总线接口单元从内存中取指令到指令预取队列负责与内存或输入/输出接口之间的数据传送指令预取队列是并行流水线工作的基础功能在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行在BIU这个部分除了指令预取队列以外,还有几个长方形的框,标记着段寄存器,这些是专用寄存器,其中IP是指令指针寄存器,它告诉我们目标指令的位置再跟着老师网上看,你可以看到一个倒的马蹄形的模块,它是地址加法器,究竟是怎么相加的我们在下一章会给大家介绍,但是大家要知道,这个地址加法器它的输出就是20位的地址信息,被传输到地址引脚上。总线接口单元从内存中取指令到指令预取队列负责与内存或输入/输出接口之间的数据传送指令预取队列是并行流水线工作的基础指令指针寄存器目标指令的位置功能在执行转移程序时,BIU使指令预取队列复位,从指定的新地址取指令,并立即传给执行单元执行再跟着老师网上看,你可以看到一个倒的马蹄形的模块,它是地址加法器,总线接口单元从内存中取指令到指令预取队列负责与内存或输入/输出接口之间的数据传送指令预取队列是并行流水线工作的基础地址加法器究竟是怎么相加的我们在下一章会给大家介绍,但是大家要知道,这个地址加法器它的输出就是20位的地址信息,被传输到地址引脚上。地址加法器是怎么相加?地址加法器的输出是20位的地址信息,被传输到地址引脚上。谢谢观看!微机原理及应用第三章认识微处理器第七讲指令预取队列这一节我们来学习指令预取队列指令预取队列首先来了解一下为什么需要指令预取队列,为什么需要指令预取队列?因为这要涉及到传送地址,数据这些信息,要使用地址总线和数据总线等,因此CPU和内存之间通信的速度要远远低于CPU内部处理的速度传送地址传送数据地址总线和数据总线CPU执行完指令要等待很长时间下一条指令到达才继续工作拖慢运行时间和工作效率这会导致CPU执行完了指令要等待很长时间,等下一条指令到达后才能继续工作,这严重拖慢了CPU的运行时间和工作效率。那要如何解决这个问题呢?如何解决这个问题?当然,我们可以想办法提升CPU与内存之间通信的速率,但这会大幅度提升成本CPU内存大幅度提升成本通信速率那么工程师们想到的办法,就是用指令预取队列,在EU和BIU之间做一个缓冲。工程师指令预取队列EUBIUBIU可以预先将多条指令读进来按先来后到的顺序存放在指令预取队列中。这个队列执行的规则是先进先出。就是先进来的指令先从队列中拿出去执行。这样EU就不必等待BIU读取指令,而可以一直从队列中取指令并执行了BIUEU将多条指令读进来按先来后到的顺序存放指令预取队列不必等待BIU读取指令,从队列中取指令并执行先进来的指令先从队列中拿出去执行先进先出因此,我们说指令预取队列保证EU和BIU两个部分可以同时进行工作。最重要的是有了指令预取队列以后,我们才真正实现了指令的并行执行BIUEU指令预取队列同时进行并行执行我们在前面提到过,要想实现指令的并行执行,要把取指令,分析指令和执行指令交给不同的人去做想实现指令的并行执行,要把取指令,分析指令和执行指令交给不同的人去做在8088、8086出现之前,也就是在没有指令预取队列的时候,CPU是用串行的方式来进行指令操作的,8088、8086出现前,没有指令预取队列时CPU用串行的方式进行指令操作取指指令流水线先取指令,然后如果需要取操作数的话,再去取操作数,最后再执行,执行完了以后把数据存储下来,再去取下一条指令,这就是串行的方式。这种串行方式的工作效率会比较低8088、8086出现前,没有指令预取队列时CPU用串行的方式进行指令操作执行存数取数串行方式工作效率会比较低有了指令预取队列,EU和BIU各司其职,实现并行的执行方式。这种方式可以大大提升CPU处理指令的效率BIUEU指令预取队列各司其职并行执行提升CPU处理指令的效率负责指令的执行由于取指令是事先进行,有时间差在并行执行方式中,BIU是CPU跟外部通信的一个通道,他负责从内存中取出指令,并送入到指令预取队列中。如果需要的话它再从内存中取操作数再送到EU部分执行。EU就负责指令的执行。而且由于取指令是事先就进行的,有个时间差的问题,所以EU也不需要再等等BIU了EUBIU负责从内存取指送入指令流队列从内存取操作数送至EU部份去执行8086/8088CPU我们来看这张图,BIU一直在取指令,EU一直在执行指令,如果需要取操作数的话,BIU会再去取个操作数。所以总线可以一直处于繁忙的状态如需取操作数,BIU会再去取个操作数因为取指令和执行指令由不同的模块来负责,所以我们说他们在空间上是分开的。所以在时间上他们是可以被同时执行的,也就是取指令和执行指令可以同时进行了,当然取的指令和执行的指令不是同一个指令哈。这就是指令的并行执行BIU&EU取指令和执行指令由不同模块负责在空间上是分开的,故在时间上可采用重叠操作技术(取的指令和执行的指令不是同一个指令)这就是指令的并行执行BIU取指1取指2取指3取指4取指5得到数据取指6EU等待执行1执行2执行3执行4指令的并行执行8088和8086首次在CPU中采用了指令流水线的结构,使他们成为了CPU发展史上的一个里程碑。采用指令流水线的结构CPU发展史上的里程碑随着技术的发展,现在我们使用的CPU为了加速,cpu中不止有指令预取队列还加入了更多新的技术。请感兴趣的同学,自行了解一下。现在使用的CPU为了加速,不止有指令预取队列还加入更多新的技术。谢谢观看!微机原理及应用第三章认识微处理器第七讲指令预取队列这一节我们来学习指令预取队列指令预取队列首先来了解一下为什么需要指令预取队列,为什么需要指令预取队列?因为这要涉及到传送地址,数据这些信息,要使用地址总线和数据总线等,因此CPU和内存之间通信的速度要远远低于CPU内部处理的速度传送地址传送数据地址总线和数据总线CPU执行完指令要等待很长时间下一条指令到达才继续工作拖慢运行时间和工作效率这会导致CPU执行完了指令要等待很长时间,等下一条指令到达后才能继续工作,这严重拖慢了CPU的运行时间和工作效率。那要如何解决这个问题呢?如何解决这个问题?当然,我们可以想办法提升CPU与内存之间通信的速率,但这会大幅度提升成本CPU内存大幅度提升成本通信速率那么工程师们想到的办法,就是用指令预取队列,在EU和BIU之间做一个缓冲。工程师指令预取队列EUBIUBIU可以预先将多条指令读进来按先来后到的顺序存放在指令预取队列中。这个队列执行的规则是先进先出。就是先进来的指令先从队列中拿出去执行。这样EU就不必等待BIU读取指令,而可以一直从队列中取指令并执行了BIUEU将多条指令读进来按先来后到的顺序存放指令预取队列不必等待BIU读取指令,从队列中取指令并执行先进来的指令先从队列中拿出去执行先进先出因此,我们说指令预取队列保证EU和BIU两个部分可以同时进行工作。最重要的是有了指令预取队列以后,我们才真正实现了指令的并行执行BIUEU指令预取队列同时进行并行执行我们在前面提到过,要想实现指令的并行执行,要把取指令,分析指令和执行指令交给不同的人去做想实现指令的并行执行,要把取指令,分析指令和执行指令交给不同的人去做在8088、8086出现之前,也就是在没有指令预取队列的时候,CPU是用串行的方式来进行指令操作的,8088、8086出现前,没有指令预取队列时CPU用串行的方式进行指令操作取指指令流水线先取指令,然后如果需要取操作数的话,再去取操作数,最后再执行,执行完了以后把数据存储下来,再去取下一条指令,这就是串行的方式。这种串行方式的工作效率会比较低8088、8086出现前,没有指令预取队列时CPU用串行的方式进行指令操作执行存数取数串行方式工作效率会比较低有了指令预取队列,EU和BIU各司其职,实现并行的执行方式。这种方式可以大大提升CPU处理指令的效率BIUEU指令预取队列各司其职并行执行提升CPU处理指令的效率负责指令的执行由于取指令是事先进行,有时间差在并行执行方式中,BIU是CPU跟外部通信的一个通道,他负责从内存中取出指令,并送入到指令预取队列中。如果需要的话它再从内存中取操作数再送到EU部分执行。EU就负责指令的执行。而且由于取指令是事先就进行的,有个时间差的问题,所以EU也不需要再等等BIU了EUBIU负责从内存取指送入指令流队列从内存取操作数送至EU部份去执行8086/8088CPU我们来看这张图,BIU一直在取指令,EU一直在执行指令,如果需要取操作数的话,BIU会再去取个操作数。所以总线可以一直处于繁忙的状态如需取操作数,BIU会再去取个操作数因为取指令和执行指令由不同的模块来负责,所以我们说他们在空间上是分开的。所以在时间上他们是可以被同时执行的,也就是取指令和执行指令可以同时进行了,当然取的指令和执行的指令不是同一个指令哈。这就是指令的并行执行BIU&EU取指令和执行指令由不同模块负责在空间上是分开的,故在时间上可采用重叠操作技术(取的指令和执行的指令不是同一个指令)这就是指令的并行执行BIU取指1取指2取指3取指4取指5得到数据取指6EU等待执行1执行2执行3执行4指令的并行执行8088和8086首次在CPU中采用了指令流水线的结构,使他们成为了CPU发展史上的一个里程碑。采用指令流水线的结构CPU发展史上的里程碑随着技术的发展,现在我们使用的CPU为了加速,cpu中不止有指令预取队列还加入了更多新的技术。请感兴趣的同学,自行了解一下。现在使用的CPU为了加速,不止有指令预取队列还加入更多新的技术。谢谢观看!微机原理及应用第三章认识微处理器第七讲指令预取队列这一节我们来学习指令预取队列指令预取队列首先来了解一下为什么需要指令预取队列,为什么需要指令预取队列?主要的原因是CPU处理指令的速度比较快,但是从CPU从内存取指令或操作数的速度比较慢,因为这要涉及到传送地址,数据这些信息,要使用地址总线和数据总线等,因此CPU和内存之间通信的速度要远远低于CPU内部处理的速度传送地址传送数据地址总线和数据总线CPU执行完指令要等待很长时间下一条指令到达才继续工作拖慢运行时间和工作效率这会导致CPU执行完了指令要等待很长时间,等下一条指令到达后才能继续工作,这严重拖慢了CPU的运行时间和工作效率。那要如何解决这个问题呢?如何解决这个问题?当然,我们可以想办法提升CPU与内存之间通信的速率,但这会大幅度提升成本CPU内存大幅度提升成本通信速率那么工程师们想到的办法,就是用指令预取队列,在EU和BIU之间做一个缓冲。工程师指令预取队列EUBIUBIU可以预先将多条指令读进来按先来后到的顺序存放在指令预取队列中。这个队列执行的规则是先进先出。就是先进来的指令先从队列中拿出去执行。这样EU就不必等待BIU读取指令,而可以一直从队列中取指令并执行了BIUEU将多条指令读进来按先来后到的顺序存放指令预取队列不必等待BIU读取指令,从队列中取指令并执行先进来的指令先从队列中拿出去执行先进先出因此,我们说指令预取队列保证EU和BIU两个部分可以同时进行工作。最重要的是有了指令预取队列以后,我们才真正实现了指令的并行执行BIUEU指令预取队列同时进行并行执行我们在前面提到过,要想实现指令的并行执行,要把取指令,分析指令和执行指令交给不同的人去做想实现指令的并行执行,要把取指令,分析指令和执行指令交给不同的人去做在8088、8086出现之前,也就是在没有指令预取队列的时候,CPU是用串行的方式来进行指令操作的,8088、8086出现前,没有指令预取队列时CPU用串行的方式进行指令操作取指指令流水线先取指令,然后如果需要取操作数的话,再去取操作数,最后再执行,执行完了以后把数据存储下来,再去取下一条指令,这就是串行的方式。这种串行方式的工作效率会比较低8088、8086出现前,没有指令预取队列时CPU用串行的方式进行指令操作执行存数取数串行方式工作效率会比较低有了指令预取队列,EU和BIU各司其职,实现并行的执行方式。这种方式可以大大提升CPU处理指令的效率BIUEU指令预取队列各司其职并行执行提升CPU处理指令的效率负责指令的执行由于取指令是事先进行,有时间差在并行执行方式中,BIU是CPU跟外部通信的一个通道,他负责从内存中取出指令,并送入到指令预取队列中。如果需要的话它再从内存中取操作数再送到EU部分执行。EU就负责指令的执行。而且由于取指令是事先就进行的,有个时间差的问题,所以EU也不需要再等等BIU了EUBIU负责从内存取指送入指令流队列从内存取操作数送至EU部份去执行8086/8088CPU我们来看这张图,BIU一直在取指令,EU一直在执行指令,如果需要取操作数的话,BIU会再去取个操作数。所以总线可以一直处于繁忙的状态如需取操作数,BIU会再去取个操作数因为取指令和执行指令由不同的模块来负责,所以我们说他们在空间上是分开的。所以在时间上他们是可以被同时执行的,也就是取指令和执行指令可以同时进行了,当然取的指令和执行的指令不是同一个指令哈。这就是指令的并行执行BIU&EU取指令和执行指令由不同模块负责在空间上是分开的,故在时间上可采用重叠操作技术(取的指令和执行的指令不是同一个指令)这就是指令的并行执行BIU取指1取指2取指3取指4取指5得到数据取指6EU等待执行1执行2执行3执行4指令的并行执行8088和8086首次在CPU中采用了指令流水线的结构,使他们成为了CPU发展史上的一个里程碑。采用指令流水线的结构CPU发展史上的里程碑随着技术的发展,现在我们使用的CPU为了加速,cpu中不止有指令预取队列还加入了更多新的技术。请感兴趣的同学,自行了解一下。现在使用的CPU为了加速,不止有指令预取队列还加入更多新的技术。谢谢观看!微机原理及应用第三章认识微处理器第八讲8088CPU的通用寄存器下面我们来学习8088CPU的通用寄存器8088CPU的通用寄存器在8088的内部有14个,16位的寄存器,我们把它们分成两类,一类是通用寄存器,一类是专用寄存器,左边是通用寄存器,一共有八个,这八个通用寄存器都在8088内部的EU这个部分中,我们可以把这八个通用寄存器再细分成三类,包括数据寄存器AX、BX、CX和DX共4个,两个指针寄存器SP和BP,还有两个变址寄存器SI和DI14个16位的寄存器通用寄存器专用寄存器AHALBHBLCHCLDHDLAXBXCXDX堆栈指针寄存器基址指针寄存器SPBP指针寄存器SIDI源变址寄存器目的变址寄存器变址寄存器数据寄存器IP指令指针FLAGS状态标志控制寄存器CSDSSSES段寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器首先我们来看一下数据寄存器,数据寄存器是用来存放参与运算的数据或者运算的结果,这里的每一个数据寄存器都是16位的,但是每一个16位的寄存器又可以分成两个独立的八位寄存器来使用数据寄存器用于存放运算数据或运算结果每个16位寄存器均可分别作为2个独立的8位寄存器使用比如AX,我们可以把它分成两个八位的寄存器,其中它的低八位,我们把它叫做AL寄存器,它的高八位,我们把它叫做AH寄存器。所以当AX用来存储一个16位的数据的时候,它是作为一个整体来看待的,但是如果把它分开,用来存放8位的数据,那你就要注意数据是存放在了AL还是AH中,除此以外,我们在来看看这些寄存器的名字,其实他们的名字跟他们的功能是直接相关的AX16AH8AL8低八位高八位存储时作为整体注意数据存放于AL或AH中寄存器的名字与其功能直接相关AX是累加器,常用在加、减乘除等各种运算中AX16AH8AL8累加器

Accumulator用于各种运算中BX是基址寄存器,它通常可以用来存放跟地址相关的信息AX16AH8AL8累加器

Accumulator基址寄存器BaseBXBHBL用于存放跟地址相关的信息CX是计数寄存器,CX可以用来计数AX16AH8AL8累加器

Accumulator基址寄存器BaseBXBHBL计数寄存器CountCXCHCL用于计数DX是数据寄存器,常用于存放数据AX16AH8AL8累加器

Accumulator基址寄存器BaseBXBHBL计数寄存器CountCXCHCL数据寄存器DataDXDHDL用于存放数据四个数据寄存器除了存放算术或逻辑单元的操作数以外,他们还有各自特有的用途,也就是在某一种场景下,我们只能使用这个寄存器,使用其他的寄存器会出错四个数据寄存器除存放算术或逻辑单元操作数外,还有各自用途比如说AX可以存放算术或逻辑运算的操作数,它的一个特殊的应用场景就是在输入输出指令中,也就是In或者out指令中,我们只能用AX跟外部接口进行信息的传输,Bx它常用于存放访问内存的基地址,Cx是在循环或者串操作的时候用做计数器,在使用寄存器间接寻址的输入输出指令中,我们使用dx来存放输入输出端口的端口号或者端口地址AXBXDXCX存放算术或逻辑运算的操作数寄存器间接寻址的I/O指令中,用来存放输入输出端口的端口号或端口地址常用于存放访问内存时的基地址在循环或串操作时用做计数器凡IN或OUT指令均必须用累加器与外部接口传送信息再来看两个指针寄存器,SP和BP指针寄存器SPBP首先来看SP,SP的英文是stackpointer,它的中文含义是堆栈指针寄存器,它主要用于在堆栈中做指针指针寄存器SP堆栈指针寄存器stackpointer用于在堆栈中做指针我们首先来看一下堆栈,堆栈是我们在内存中开辟的一个特定区域●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区这个区域是用来临时存放数据的,堆栈的一个特点就是他是先进后出的结构●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区用于临时存放数据结构:先进后出如果这个堆栈它是空的话,那么它的栈顶和它的栈底是重合的●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区栈顶栈底重合堆栈:空当这个堆栈满的时候,它的栈顶就会指向他这个堆栈段的首地址,至于堆栈的首地址,我们可以通过特定的方式来计算,关于这一点我们在介绍段基址的再详细说明●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区栈顶栈底重合堆栈:空栈顶指向堆栈段的首地址堆栈:满堆栈的首地址可通过特定方式计算现在我们知道SP是指向这个堆栈段的栈顶的,那么sp的值究竟是多少呢?●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区sp的值是多少?它的值其实就是它当前指向的堆栈最上面的这个数据,到堆栈的起始地址的距离,我们也跟这个距离叫偏移量,●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区偏移量举个例子大家会比较好理解,我们把堆栈看成是一个装衣服的整理箱,这个整理箱有个盖子,这个盖子指向的就是这个堆栈段的起始地址,●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区这个整理箱的底部就是这个堆栈段的栈底●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区当我们往这个箱子里面放衣服的时候,最上面的这件衣服就是堆栈的栈顶的位置,SP就指向这个位置●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区基址指针寄存器,BP,base,pointer,它可以指向堆栈的任何一个单元BPbasepointer可指向堆栈的任何一个单元基址指针寄存器在这张图中是1000h,而BP就要灵活得多,●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区它可以指向堆栈里面存放的任何一个数据,比如它指向的这个数据的地址是23000h那么BP的值就是3000h●

●●●

●●●

●●●

●●●

●●●

●●SP1000HSS20000H1000HBP3000H堆栈段起始地址栈底栈顶21000H栈中某单元23000H堆栈RAM区指向堆栈里存放的任何一个数据最后看一下变址寄存器,变址寄存器包括SI和DI,变址寄存器SIDISI是sourceindex就是源索引变址寄存器SIDI源索引源索引sourceindexsourceindexDI是destinationindex就是目标索引变址寄存器目标索引destinationindexSIDI所以这两个寄存器,他们当然可以用于存储数据,但是它们更常用在串操作指令中。变址寄存器SIDI用于存储数据用于串操作指令中通常,我们只能用SI指向源串,用DI指向目的串变址寄存器SIDI指向源串指向目的串然后我们就可以在源和目的之间传输信息,这是变址寄存器比较特殊的用法变址寄存器SIDI指向源串指向目的串在源和目的之间传输信息谢谢观看!微机原理及应用第三章认识微处理器第九讲8088CPU的专用寄存器14个16位的寄存器8088CPU的专用寄存器8088内部有14个,16位寄存器其中有六个专用寄存器我们还可以将这六个专用寄存器细分成两个控制寄存器和四个段寄存器这里的控制寄存器包括指令指针寄存器和状态标志寄存器四个段寄存器分别是代码段,数据段,堆栈段和附加段寄存器通用寄存器专用寄存器AHALBHBLCHCLDHDLAXBXCXDX堆栈指针寄存器基址指针寄存器SPBPSIDI源变址寄存器目的变址寄存器IP指令指针FLAGS状态标志控制寄存器CSDSSSES代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器段寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器指令指针状态标志指针寄存器变址寄存器数据寄存器代码段寄存器CodeSegment首先来看一下段寄存器,段寄存器包括代码段,数据段,堆栈段和附加段。段寄存器数据段寄存器DateSegment堆栈段寄存器StackSegment附加段寄存器ExtraSegment他们的简写分别是CS,ds、ss和es。CS段寄存器代码段寄存器CodeSegment数据段寄存器DateSegment堆栈段寄存器StackSegment附加段寄存器ExtraSegmentDSSSES这些英文简写同学们要记清楚,因为在后续提到段基址的时候都是这样的写法写的CS段寄存器代码段寄存器CodeSegment数据段寄存器DateSegment堆栈段寄存器StackSegment附加段寄存器ExtraSegmentDSSSES缩写与段基址的写法一致段寄存器是用来干嘛的呢?它们是用来存放段基址的,段寄存器用于存放段基址什么叫段基址?大家可以把它理解成一个内存空间段的起始地址段寄存器用于存放段基址内存空间段的起始地址那么顾名思义,我们知道内存中至少有四种不同的段,分别是代码段,数据段,堆栈段和附加段。代码段寄存器CodeSegment段寄存器数据段寄存器DateSegment堆栈段寄存器StackSegment附加段寄存器ExtraSegment代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器再顾名思义一下,代码段应该是用来存放代码的,数据段应该是用来存放数据的,堆栈段是用来存放堆栈的。段寄存器存放代码代码段寄存器CodeSegment数据段寄存器DateSegment堆栈段寄存器StackSegment附加段寄存器ExtraSegment存放数据存放堆栈CS那么CS存放的就是代码段的基地址,它告诉我们了代码段的起始地址在哪里,因此CS,DS,SS和ES是专用寄存器段寄存器存放代码代码段寄存器CodeSegmentCS存放代码段的基地址代码段的起始地址在哪里数据段寄存器DateSegment堆栈段寄存器StackSegment附加段寄存器ExtraSegment存放数据存放堆栈DSSSES那么CS存放的就是代码段的基地址,它告诉我们了代码段的起始地址在哪里,因此CS,DS,SS和ES是专用寄存器段寄存器CS数据段寄存器DateSegment堆栈段寄存器StackSegment附加段寄存器ExtraSegment存放数据存放堆栈DSSSES专用寄存器再来看一下控制寄存器,首先来看一下指令指针寄存器IP,IP我们在前面已经提到过多次了,它是用来存放待取的下一条指令的第一个操作码的偏移量控制寄存器指令指针寄存器InstructionPointerIP存放待取的下一条指令第一个操作码的偏移量这句话不太好理解,老师把它翻译一下,IP其实就是指向下一条指令的地址。下一条指令一定是存放在代码段里的,那么IP告诉我们从代码段的段基址开始要走多少个存储空间的距离才能到达下一条指令,这个距离也叫偏移量IP指向下一条指令的地址,下一条指令一定存放在代码段里从代码段的段基址开始要走多少个存储空间的距离到达下一条指令(这个距离也叫偏移量)那我们在取指令的时候,既要知道CS的值,又要知道IP的值,我们才能通过CS和IP计算出来下一条指令的准确地址,然后去那个位置把它取出来,取指令时CSIP计算出下一条指令的准确地址去那个位置把它取出来我们用户程序是不能访问IP这个值的,IP的值会基于程序的运行进行自动修改。我们在讲解指令的时候,请同学们注意IP值是如何自动修改的用户程序不得直接访问IPIp的值会基于程序的运行进行自动修改我们在讲解指令的时候,请同学们注意IP值是如何自动修改的注意IP值是如何自动修改还有一个控制寄存器是标志寄存器flagregister,也有人把它写成FLAG,这里我们把它简写成FR,控制寄存器标志寄存器FlagRegisterFLAGFR它不是我们通常意义下的寄存器,不是通常意义下的寄存器我们通常意义下的寄存器就是把这个寄存器看成是一个16位的存储空间,用它来存储数据的,但是FR它比较特殊的是,它是按位,来存储的,也就是说,寄存器把这个寄存器看成16位的存储空间,用之存储数据FR比较特殊,是按位存储它里面其实定义了16个位,也叫标志位,这16个标志位之间是没有相互关系的,每个位都有自己特定的含义,这是标志寄存器它比较特殊的一点,FR定义16个位标志位标志位之间无相互关系每个位有自己特定含义具体来说,在16个位中,英特尔只定义了其中的九位,其他的位它并没有公开告诉我们怎么使用,这九位里边有六位状态位和三位控制位,它们反映了我们刚刚完成的算数运算或者逻辑运算的结果的状态,英特尔97这九位里边有六位状态位和三位控制位,它们反映了我们刚刚完成的算数运算或者逻辑运算的结果的状态,英特尔9六位状态位三位控制位反映算数运算或逻辑运算结果的状态我们在下一节中的会给大家详细的介绍这个标志寄存器里的各位标志寄存器里的各位标志寄存器里的各位谢谢观看!微机原理及应用第三章认识微处理器第十讲8088CPU的标志寄存器下面我们来学习8088CPU的标志寄存器8088CPU的标志寄存器我们在前面已经提到标志寄存器中有九个位已经定义了,下面我们来学习一下各个位的含义…OFDFIFTFSFZFAFPFCF151143210控制位1-溢出Overflow1-减量Direction1-允许Interrupt1-单步Trap1-负Sign1-零Zero1-有AuxiliaryCarry/Borrow1-偶Parity1-有Carry/Borrow首先来看第一个cf标志位cf标志位是进位标志位它表示我们刚刚计算的结果是否有进位或者借位产生如果有进位或借位,CF就为1,如果没有,cf就为0在执行循环移位指令的时候,也会影响到CF的状态,请大家注意…1531控制位11OF1-溢出OverflowDF1-减量DirectionIF1-允许InterruptTF1-单步TrapSF1-负SignZF1-零Zero4AF1-有AuxiliaryCarry/Borrow2PF1-偶Parity0CF1-有Carry/Borrow首先来看第一个cf标志位,cf标志位是进位标志位,它表示我们刚刚计算的结果是否有进位或者借位产生,如果有进位或借位,CF就为1,如果没有,cf就为0,在执行循环移位指令的时候,也会影响到CF的状态,请大家注意…1531控制位11OF1-溢出OverflowDF1-减量DirectionIF1-允许InterruptTF1-单步TrapSF1-负SignZF1-零Zero4AF1-有AuxiliaryCarry/Borrow2PF1-偶Parity0CF1-有Car

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论