版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第2章微机系统中的微处理器内容提要
8086的内部结构
8086的寄存器结构
8086的存储器组织
8086的I/O组织
8086的寻址方式高档微处理器的寄存器结构和存储器组织简介
2常用术语(1)位(bit):计算机处理的最小数据单位,只能为“0”或“1”,缩写为b千位(Kilobit):代表210位,即1024位,缩写Kb兆位(Megabit):代表220位,即1024×1024位,缩写Mb千兆位(Gigabit):代表230位,即1024Mb位,缩写Gb兆兆位(Terabit):代表240位,即1024Gb位,缩写Tb3常用术语(2)字节(Byte):计算机中存储器容量的基本单位,一个字节由8位二进制数据组成,Byte通常缩写为B,同样有KB、MB、GB、TB字(Word):不同的场合有不同的含义,软件上通常指2个字节,硬件上一般指处理器外部数据总线的宽度字长:计算机运算部件直接能处理的二进制数据的位数。字长越长,计算机的处理能力越强,运算精度越高,指令功能越强,可寻址的存储空间也越大4常用术语(3)CPU主频:主振频率,CPU内部的时钟频率,是CPU进行运算时的工作频率。一般来说,主频越高,一个时钟周期里完成的指令数也越多,CPU的运算速度也就越快。但由于内部结构不同,并非所有时钟频率相同的CPU性能也一样。
5§2.18086的内部结构8086CPU从功能上来说分成两大部分:
总线接口单元BIU(BusInterfaceUnit)
执行单元EU(ExecutionUnit)BIU的作用:负责对存储器的访问以及与I/O设备之间的信息传送。EU的作用:负责指令的执行。6
通用寄存器8086CPU功能框图
执行单元AHALBHBL
CLCHDHDLSPBPDISICSDSSSES
IP
内部寄存器
总线
控制
逻辑
AX
BXCXDX暂存器ALU
标志寄存器
外部总线8086总线(16位)
指令队列8086为6字节ALU数据总线(16位)EU控制器总线接口单元(BIU)
地址加法器(20位)数据总线(16位)
段寄存器指令指针(EU)123456队列总线(8位)
地址总线78086的功能结构总线接口单元(BIU)BIU包括4个段寄存器、指令指针IP(PC)、指令队列寄存器(IR)、完成与EU通讯的内部寄存器、地址加法器和总线控制逻辑。它的任务是执行总线周期,完成CPU与存储器和I/O设备之间信息的传送。具体地讲,就是取指令时,从存储器指定地址取出指令送入指令队列排队;执行指令时,根据EU命令对指定存储单元或I/O端口存取数据。88086CPU与存储器、I/O设备的连接高位决定接口,2或3个低位选择端口CPU数据线控制线地址线接口地址存储器中的字节0101…I/O接口I/O端口…I/O设备高位决定模块存储器模块98086的功能结构执行单元(EU)EU由算术逻辑单元ALU、暂存器、标志寄存器(FLAGS)、通用寄存器组和EU控制器构成。它的任务执行指令,进行全部的算术逻辑运算,完成偏移地址的计算,向BIU提供指令执行结果的数据和访问存储器需要的偏移地址,并对通用寄存器和标志寄存器进行管理。16位的ALU总线和8位队列总线用于EU内部和EU与BIU之间的通信。108086的指令流水线(1)一条指令的执行过程:取指令取操作数(如果需要)执行指令写入存储器8086出现以前,以上指令串行执行取指1执行1存结果1取指2执行2取指3执行3取操作数3CPUBUS忙忙忙忙忙闲闲闲8086以前的处理器118086的指令流水线(2)8086内部有BIU、EU两个独立单元,可独立完成总线操作和执行指令的任务,即两个单元可重叠操作流水线就是两次重叠或多次重叠操作忙8086处理器执行1执行2执行3执行3执行4取指1取指2存结果1取指3取操作数3取指4存结果3取指5忙忙忙忙忙忙忙忙EUBUSBIU思考以8086为例,说明微处理器的基本功能。书上P12图2.2中画出的地址总线为什么是单向的?数据总线为什么是双向的?1213§2.2
8086的寄存器结构8086CPU内部具有14个16位寄存器,用于提供参与运算的数据、控制指令执行和对指令及操作数寻址。基本分为通用寄存器组、控制寄存器组和段寄存器组。通用寄存器组
8个16位通用寄存器组成,这些寄存器分为两组:数据寄存器及地址指针和变址寄存器。148086的寄存器结构(1)BHBLAHALCHCLDHDL堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器通用寄存器控制寄存器指令指针寄存器状态标志寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器段寄存器AXBXCXDXSPBPDISICSDSSSESIPFLAGS158086的寄存器结构(2)1、数据寄存器4个数据寄存器:累加器AX,基址寄存器BX,计数寄存器CX,数据寄存器DX特点:可分为高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。这两组8位寄存器能分别寻址。这样,可以将数据寄存器当作一个16位寄存器,也可用作两个8位寄存器可用来存放8位或16位二进制操作数,这些操作数可以是参加运算的操作数、中间结果或操作数地址大多数算数和逻辑运算指令可以使用这些寄存器168086的寄存器结构(3)2、地址指针和变址寄存器4个:堆栈指针SP,基址指针BP,源变址寄存器SI,目的变址寄存器DI特点:这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数和有效地址SP,BP用于堆栈操作,SP用来确定堆栈在内存中的地址,BP用来存放在现行堆栈段的一个数据区的“基址”SI,DI用于变址操作,存放变址地址这4个寄存器也可用作数据寄存器17通用寄存器的特定用法188086的寄存器结构(4)3、指令指针IP16位专用寄存器,保存下一条要执行的指令的偏移地址当BIU从内存中取出一个指令字节后,IP自动加1,指向下一个字节IP指向的是指令地址的段内地址偏移量,又称偏移地址或有效地址程序员不能对IP进行存取操作,程序中的转移指令、返回指令以及中断处理能对IP进行操作198086的寄存器结构(5)4、标志寄存器FLAGS1514131211109876543210
CFPFAFZFSFTFIFDFOF16位,其中有6个状态位,3个控制位
6个状态位有:CF、PF、AF、ZF、SF、OF3个控制位有:IF、DF、TF208086的寄存器结构(6)标志寄存器FLAGS(状态位)进位标志CF,反映算术运算后,最高位(字节操作为D7,字操作为D15)出现进位或借位的情况,有则为“1”奇偶标志PF,反映操作结果的低八位中“1”的个数的情况,若为偶数,则PF=1辅助进位标志AF,反映一个8位量的低4位向高4位有无进位或借位的情况,有则置“1”零标志ZF,反映运算结果是否为0的情况,结果为0,ZF置为“1”,否则为“0”218086的寄存器结构(7)符号标志SF,反映运算结果的符号情况,若结果为负数,SF为“1”,否则为“0”。SF的取值与运算结果最高位(字节操作为D7,字操作为D15)一致。溢出标志OF,反映带符号数运算结果是否超过机器所能表示的数值范围的情况,对字节运算为-128~+127,对字运算为-32768~+32767。若超过上述范围则称为“溢出”,OF=1,否则为“0”。228086的寄存器结构(8)标志寄存器FLAGS(控制位)方向标志DF,在进行字符串操作时,每执行一条串操作指令,对地址要进行一次调整,由DF决定地址是增还是减。若DF=1,则为减量;DF=0,则为增量。中断允许标志IF,表示系统是否允许外部可屏蔽中断。若IF=1,表示允许中断,IF=0,表示不允许中断。IF对不可屏蔽中断及内部中断请求不起作用。跟踪标志TF,当TF=1时,CPU每执行完一条指令,便自动产生一个内部中断,对程序进行逐条检查,常用于程序的调试。238086的寄存器结构(9)5、段寄存器内存中通常存放三种信息:代码(指令):计算机执行何种操作数据(字符、数值):程序处理的对象堆栈信息:保存返回地址和中间结果为清晰起见,这三类信息分别存放在各自的存储区域内(存储系统中的不同存储段)8086系统中把可直接寻址的1M字节内存空间分为称作段的逻辑区域,每个段的物理长度为64K字节。每个段的起始地址的有关值存放在称为段寄存器的4个16位寄存器中248086的寄存器结构(10)4个段寄存器为代码段寄存器CS:指向当前的代码段,指令由此段取出数据段寄存器DS:指向当前数据段,通常用来存放程序变量堆栈段寄存器SS:指向当前的堆栈段,堆栈操作所需的就是该段存储单元的内容附加段寄存器ES:指向当前附加段,通常也用来存储数据思考8086内部有哪些程序可见的寄存器?其主要作用是什么?2526§2.3
8086的存储器组织(1)存储器组织8086CPU有20条地址线,可配置1MB的存储器,地址编号为00000H-FFFFFH存储空间按字节(8位)进行组织,每个存储单元存储一个字节的数据,若存放“字”数据(16位),则存放在相邻两个存储单元之中,高字节存放在高地址单元,低字节存放在低地址单元00000HFFFFFH00001H00002H00003HFFFFEH存储器278086的存储器组织(2)8086允许字从任何地址开始。字的地址为偶地址时,称字的存储是对准的,CPU访问时需要一个总线周期;若字的地址为奇地址时,称字的存储是未对准的,CPU访问需要两个总线周期。
高字节低字节1587060280H60281H60282H288086的存储器组织(3)存储器分段8086CPU寄存器皆为16位,内部ALU只能进行16位运算,因此,8086CPU对地址只能进行16位运算,寻址范围216=65536(64K)字节。所以引入分段概念,以获得20位地址一个段是存储器的一个逻辑单位,其长度可达64KB,每个段都由连续的存储单元构成,是存储器中独立的可分别寻址的单位每段第一个字节的位置称为“段起始地址”,可由软件指定段起始地址:必须能被16整除(即XXXX0H)几个段可以相互重叠,也可指向同一空间298086的存储器组织(4)段基址与段内偏移量8086与存储器之间所有信息的交换都要使用20位的物理地址,而程序中所涉及到的地址都是16位的逻辑地址,对所给定的任一存储单元而言,有两部分逻辑地址:
“段地址”:一个段的起始地址的高16位,也称“段基址”。
“段内偏移量”:段内一个存储单元的地址相对于段起始地址的距离,也称“有效地址EA”,“偏移地址”。段地址存放在段寄存器CS、DS、SS、ES中段内偏移量由IP、SP、SI、DI、BX、BP以及相应寄存器的组合而组成308086的存储器组织(5)逻辑地址与物理地址在具有地址变换机构的计算机中,有两种存储器地址:
逻辑地址:允许在程序中编排的地址物理地址:信息在存储器中实际存放地址在8086系统中,每个存储单元也都认为有这两类地址318086的存储器组织(6)物理地址的形成存储单元的20位物理地址是通过将16位的段基址左移4位,再加上16位的偏移地址而形成的,即
物理地址=段基址*10H+段内偏移量例如:6000:0280的物理地址为60280H8086CPU中BIU单元的地址加法器可用来完成物理地址的计算328086的存储器组织(7)信息的分段存储与段寄存器的关系表各种类型访问存储器时的地址成分内存访问类型默认段寄存器可指定段寄存器段内偏移地址来源123456取指令堆栈操作源串目的串BP用作基址寻址一般数据存取CSSSDSESSSDS无无CS、ES、SS无CS、ES、DSCS、ES、SSIPSPSIDI按寻址方式计算得到的有效地址按寻址方式计算得到的有效地址338086的存储器组织(8)段寄存器的使用约定任何类型访问存储器时,其段地址要么由默认段寄存器提供,要么由“指定”的段寄存器提供。段寄存器DS、ES和SS的内容是用传送指令置入的,但任何传送型指令不能向段寄存器CS置入数,但一些指令可以设置和影响CS的内容,如:ASSUME伪指令、JMP、CALL、RET、INT和IRET。表中前四项指明了一个16位的指针寄存器或变址寄存器作为段内偏移地址的来源,其它都要按指令码规定的寻址方式求得。思考什么是逻辑地址?什么是物理地址?如何由逻辑地址求物理地址?3435§2.48086的I/O组织I/O接口是保证信息和数据在CPU和I/O设备之间正常传送的电路。I/O端口是I/O接口内的寄存器,跟存储单元相同,也是以字节为单位编址,一个I/O端口有唯一的I/O地址相对应。8086地址总线的低16位用来对8位I/O端口寻址,所以8086的I/O地址空间为64K,可以访问64K个I/O端口与存储器类似,任何两个地址连续的8位I/O端口,都可以当作一个16位I/O端口,类似于存储器的字。对8086CPU来说,也象存储器的字那样,要实现奇地址的16位I/O端口输入输出,都必须访问两次。368086CPU与存储器、I/O设备的连接高位决定接口,2或3个低位选择端口CPU数据线控制线地址线接口地址存储器中的字节0101…I/O接口I/O端口…I/O设备高位决定模块存储器模块37由于存储器划分为模块,所以存储器地址的高几位可用来选择模块,其余低位则用来标识该模块内的字节或字。同样,利用I/O地址中的高位来标识I/O接口,而用2或3个低位来选择该接口内的I/O端口。存储器和I/O端口的组织(1)38地址总线的条数就是二进制地址码的位数,它能够表示的不同地址的集合称为地址空间。存储单元和I/O端口在同一地址空间,这种方法称为统一编址,它们的存取指令是一样的;而两者在两个独立的地址空间,它们的地址码的位数不同,采用的存取指令是不一样的,这种方法称为独立编址。地址码的位数决定了地址空间的大小。若地址码共n位,则可以有2n个地址。对于单地址空间的CPU的处理器,则存储器和I/O端口合在一起的空间容量为2n个字节。对于独立空间的来说,地址总线的条数决定了存储器地址空间的容量;地址总线中用于I/O端口编址的条数决定I/O地址空间的容量。存储器和I/O端口的组织(2)39
例如在8086CPU系统中,地址总线的条数为20条,则存储器的最大容量为220,即1MB字节;它的地址总线的低16位用来对I/O端口编址,则I/O地址空间的容量为216,即64K个I/O端口地址。存储器和I/O端口的组织(3)40§2.5
8086的寻址方式寻址方式:指令中用于说明操作数地址的方法寻址方式分为数据寻址方式和转移地址寻址方式数据寻址方式通常有8种:1、立即寻址2、寄存器寻址3、直接寻址4、寄存器间接寻址5、寄存器相对寻址6、基址变址寻址7、基址变址且相对寻址8、隐含寻址41立即寻址存储器……9ABC……1234……F5……1000……代码段数据段MOVAX,1000HAXAHAL100030000H31000H31001H32000H32001H
操作数为立即数,直接存放在代码段中42寄存器寻址AX12A6HBX12A6H
操作数在寄存器中。对于16位数据,寄存器可以是8个通用寄存器中的任意一个(AX、BX、CX、DX、SI、DI、SP、BP)。对于8位数据,寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。例如:MOVAX,BX43直接寻址存储器……9ABC……1234……F5……1000……代码段数据段30000H31000H31001H32000H32001HMOVAX,[1000H]AXAHAL1234DS30000100031000物理地址
操作数在内存单元中指令码中直接给出数据的偏移地址44寄存器间接寻址(1)
操作数在内存单元中数据的偏移地址由指定的寄存器给出:BX,SI或DIEA=(BX)(SI)(DI)45寄存器间接寻址(2)存储器……9ABC……1234……F5…………代码段数据段30000H31000H31001H32000H32001HMOVAX,[BX]AXAHAL1234DS30000100031000物理地址BX操作数46寄存器相对寻址(1)
操作数在内存单元中数据的偏移地址是位移量和一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容之和EA=(BX)(BP)(SI)(DI)+8位disp16位disp47寄存器相对寻址(2)存储器……9ABC……1234……F5……0500……代码段数据段30000H31000H31001H32000H32001HMOVAX,disp[SI]AXAHAL1234DS300000B0031000物理地址SI操作数0500disp48基址变址寻址(1)
操作数在内存单元中数据的偏移地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和EA=(BX)(BP)+(SI)(DI)49基址变址寻址(2)存储器……9ABC……1234……F5…………代码段数据段30000H31000H31001H32000H32001HMOVAX,[BX][SI]DS30000100032000物理地址BX操作数1000SIAXAHAL9ABC50基址变址且相对寻址(1)
操作数在内存单元中。数据的偏移地址是位移量,一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容三部分之和。+EA=(BX)(BP)+(SI)(DI)8位disp16位disp51基址变址且相对寻址(2)存储器……9ABC……1234……F5……0500……代码段数据段30000H31000H31001H32000H32001HMOVAX,disp[BX][SI]DS30000100032000物理地址BX操作数0B00SIAXAHAL9ABC0500disp52隐含寻址有些指令码中不包含指明操作数地址的部分,而其操作码本身隐含地说明了操作数地址。例如:
MUL
CL;其操作为(AX)←(AL)×(CL)在这里,AL操作数并没有在指令中指明,是由操作码本身隐含地说明了53
若(BX)=0158H,(DI)=10A5H,位移量=1B57H,(DS)=2100H,(SS)=1100H,(BP)=0100H,段寄存器按默认段寄存器,则相对于各种寻址方式的有效地址和物理地址是:⑴直接寻址:
EA=1B57H物理地址=(DS)×10H+EA=21000H+1B57H=22B57H⑵寄存器间接寻址(假设寄存器为BX):
EA=0158H物理地址=(DS)×10H+EA=21000H+0158H=21158H例题54
⑶寄存器相对寻址(假设寄存器为BP)
EA=0100H+1B57H=1C57H物理地址=(SS)×10H+EA=11000H+1C57H=12C57H⑷基址变址寻址(假设寄存器为BX和DI)
EA=0158H+10A5H=11FDH物理地址=(DS)×10H+EA=21000H+11FDH=221FDH⑸基址变址且相对寻址(假设寄存器为BP和DI)
EA=0100H+10A5H+1B57H=2CFCH物理地址=(SS)×10H+EA=11000H+2CFCH=13CFCH55转移地址的寻址方式指令是按顺序存放在存储器中的,其执行顺序是由代码段寄存器CS和指令指针IP的内容决定的。在正常的情况下,BIU自动修改IP的内容,使它指向下一条指令。程序转移指令通过改变IP和CS的内容,就可以改变程序的正常执行顺序。转移地址的寻址方式有4种:⒈段内直接寻址2.段内间接寻址3.段间直接寻址4.段间间接寻址56段内直接寻址JMP指令的操作数部分直接给出目标单元指令所在存储单元的地址的形成:
CS*10H+(IP)
(IP)=(IP)+disp(8位或者16位)例如:...JMPABC1...ABC1:……...57段内间接寻址JMP指令转移的目标地址在某一个通用寄存器中或者在某一个字存储单元中指令所在存储单元的地址的形成:
CS*10H+(IP)
(IP)←EA(存在寄存器或存储器单元中)例如:JMPCX或者JMPWORDPTR[BX]58段间直接寻址指令码中直接给出16位的段地址和16位的有效地址。指令所在存储单元的地址的形成:
(IP)←EA(指令)
(CS)←段地址(指令)例如:COSEG1SEGMENT...JMPFARPTRTRAGET...COSEG1ENDSCOSEG2SEGMENT...TRAGET:--------------------...COSEG2ENDS59段间间接寻址段间间接寻址和段内间接寻址相似,要得到的转移地址包括16位段地址和16位有效地址,使用地址连续的4个存储单元存储指令所在存储单元的地址的形成:
(IP)←EA(存储单元的前两个字节)
(CS)←段地址(存储单元的后两个字节)例如:JMPDWORDPTRADDR[BX]或者
JMPDWORDPTR[BX][SI]60§2.7
高档微处理器的寄存器结构和存储器组织简介
和8086内部的寄存器结构和存储器组织相比,高档微处理器的寄存器结构和存储器组织具有以下特点:使高档微处理器具有更强的数据处理能力;高档微处理器支持多任务操作系统。61AHALBHBLCHCLDHDLSPBPDISIIPFLAGSCSDSESSSFSGSEAXEBXECXEDXESPEBPEDIESIEIPEFLAGS31160高档微处理器的寄存器结构62高档微处理器的访问存储器机制奔腾微处理器可以访问的存储器空间为4GB;采用虚拟存储技术,还可以大大扩展存储空间。63实模式与保护模式80286及以上的高档微处理器都可以工作于实模式或保护模式,而8086只能工作于实模式;实模式下微处理器只能访问地址低端的1MB存储空间,所以地址低端的1MB存储区称为实模式存储器、常规存储区或DOS存储器系统;DOS要求处理器工作于实模式,而且各种微处理器在任何情况下每次加电或复位后都默认以实模式开始;Windows工作于保护模式,只有保护模式才允许访问低端的1MB存储区和高于1MB以上的存储区。64保护模式下的存储器寻址机制保护模式下访问存储器的地址仍由两部分合成,即偏移地址和基地址;其基地址不再直接是段寄存器保存的段地址,而是由段寄存器和对应的描述符寄存器联合提供的。选择符选择符选择符选择符选择符选择符15012位属性32位基地址20位边界段描述符高速缓冲寄存器段寄存器65保护模式下的存储器寻址机制保护模式下的段寄存器保存的不再是段地址,而是提供找到段地址的选择符;与选择符密切相关的概念是段描述符,描述符表和描述符寄存器。66段描述符段描述符是对段进行说明的固定格式的连续8个字节信息;其中包括32位的段地址(基地址),20位的段界限,其余12位是属性位(标志位和控制位);32位段地址意味着4GB存储空间的任何一个单元地址都可以被指定为段的开始;段的界限指明该段的最大偏移量,即段的长度或段内的容量(最大为220=1M)。67描述符表和描述符索引表描述符表是在存储器中定义的用于存储描述符的特殊用途的段;有三种描述符表:全局描述符表局部描述符表中断描述符表每个表最多存放213个描述符,每个描述符8个字节,所以每个表占用存储器空间为64KB;每个描述符分配一个13位的索引号,索引号乘以8得到这个描述符在描述符表中的开始地址;每个描述符在描述符表中的地址是用索引号经换算得到的。68段寄存器、选择符和描述符寄存器6个16位段寄存器中的每一个都对应有一个64位描述符寄存器;段寄存器由程序置入段选择符,16位选择符中的13位是指明该段的描述符在描述符表中地址的索引号;一旦程序向某个段寄存器置入段选择符,将自动地把描述符表中被选定的64位描述符传入对应的描述符寄存器;描述符寄存器和段寄存器是“共生的”,但却不能用指令读写内容,是程序不可见的。69第3章结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论