1、第第2章章 80 x86计算机组织结构计算机组织结构学习目标学习目标u了解计算机系统的主要组成部分;u熟悉8086各类寄存器的用途;u熟悉标志寄存器各标志位的意义。u 掌握存储器地址分段的方法以及存储单元物理地址的形成方法;2.1 80 x86 微处理器微处理器 80X86微处理器系列是美国Intel公司从20世纪70年代开始研制的微处理器的总称 8086是1978年Intel公司推出的16位微处理器。(1)8086有16位数据总线,处理器与外部传送数据时,一次可传送16位二进制数。(2)8086有20位地址总线,寻址空间提高到1M字节。(3)8086采用了流水线技术,可以实现处理器的内部操作
2、与存储器或I/O接口之间的数据传送操作重叠进行,从而提高了处理器的性能。Intel公司在1982年推出了80286微处理器,它仍然是16位结构。80286的内部及外部数据总线都是16位的,但它的地址线是24位的,可寻址16M字节的存储空间。80286有两种工作方式,即实模式和保护模式:实模式与8086工作方式相同,但速度比8086快。保护模式除了仍具有16M字节的存储器物理地址空间外,她还能为每个任务提供1G字节的虚拟存储器地址空间。保护方式把操作系统及各任务所分配到的地址空间隔离开,避免程序之间的相互干扰,保证系统在多任务环境下正常工作。80386是1985年研制出的一个32位微处理器,内部
3、及外部数据总线均为32位,地址线也为32位,因此它可处理4G(232)字节的物理存储空间。1989年Intel公司又研制出新一代的微处理器80486,80486芯片内除了有一个与80386相同结构的主处理器外,还集成了一个浮点处理部件FPU以及一个8K字节的高速缓冲存储器(cache),使80486的计算速度和总体性能比80386有了明显的提高。1993年Intel公司又推出了Pentium微处理器,此后几乎每两年就推出一个新型号。由此可见,微处理器芯片的发展速度是非常快的。在微处理器的发展过程中,芯片主频越来越快,寻址空间越来越大,数据和地址总线也越来越宽,加之许多体系结构方面的改进措施,如
4、流水线结构、存储器层次结构等,使微计算机的性能大大提高,其应用领域也更加广泛。2.2 基于微处理器的基于微处理器的 计算机系统的构成计算机系统的构成硬件:硬件:中央处理机中央处理机 CPU总线控制 逻辑接 口接 口存储器存储器大容量存储器I/O设备I/O子系统子系统系统总线系统总线.软件:软件:系统软件 应用软件2.3 中央处理器中央处理器 CPU组成:算术逻辑部件ALU:算术和逻辑运算 控制器:负责全机的控制作用 寄存器:暂存数据8086/8088寄存器组:寄存器组:数据寄存器数据寄存器:指针及变址寄存器指针及变址寄存器:SP、BP、SI、DI段寄存器段寄存器:CS、DS、SS、ES控制寄存
5、器控制寄存器:IP(即(即PC)、)、FLAGS AX BX CX DX AH AL BH BL CH CL DH DL 高8位 低8位标志寄存器标志寄存器(FLAGS/PSW)15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 条件码标志:控制标志:OF 溢出标志 DF 方向标志 SF 符号标志 IF 中断标志ZF 零标志 TF 陷阱标志CF 进位标志AF 辅助进位标志PF 奇偶标志OF DF IF TF SF ZF AF PF CF例:ADD AX,BX JO/JC ERROR?通用寄存器组通用寄存器组(数据寄存器组)(数据寄存器组):AX,BX,CX,DXAX,B
6、X,CX,DX。用来暂时存放计算过程中所用到。用来暂时存放计算过程中所用到的操作数,结果或信息。的操作数,结果或信息。它们都可以字(它们都可以字(1616位)或字节(位)或字节(8 8位)形式访问,位)形式访问,比如:比如:AX,AH,AL,BX,CX,DX,DH,DLAX,AH,AL,BX,CX,DX,DH,DL。这些都是通用寄存器又可用于各自的专用这些都是通用寄存器又可用于各自的专用寄存器寄存器。AX:AX:累加器,算术运算的主要寄存器累加器,算术运算的主要寄存器.所有的所有的I/OI/O指令都通过它与外设传送信息。指令都通过它与外设传送信息。BX:BX:在计算存储器地址时,经常用作基址寄
7、存器。在计算存储器地址时,经常用作基址寄存器。CX:CX:在循环(在循环(Loop)Loop)和串处理指令中用作隐含的和串处理指令中用作隐含的计数器。计数器。DX:DX:一般在做双字长运算时把一般在做双字长运算时把DXDX和和AXAX组合在一起组合在一起存放一个双字长数,存放一个双字长数,DXDX放高放高1616位;对某些位;对某些I/OI/O操操作,作,DXDX可用来存放可用来存放I/OI/O的端口地址。的端口地址。指针和变址寄存器:指针和变址寄存器:SP、BP、SI、DI四个四个16位寄存器可以象数据寄存器位寄存器可以象数据寄存器一样在运算过程中存放操作数,但它们只能以字一样在运算过程中存
8、放操作数,但它们只能以字(16位)为单位使用。位)为单位使用。在存储器寻址时,提供偏移地址。因此,可称为指在存储器寻址时,提供偏移地址。因此,可称为指针或变址寄存器。针或变址寄存器。SP称为堆栈指针寄存器,用来指出栈顶的偏移地址。称为堆栈指针寄存器,用来指出栈顶的偏移地址。BP称为基址指针寄存器,在寻址时作为基地址寄存器使称为基址指针寄存器,在寻址时作为基地址寄存器使用,但它必须与堆栈段寄存器用,但它必须与堆栈段寄存器SS联用来确定堆栈段中的联用来确定堆栈段中的存储单元地址。存储单元地址。SI为源变址寄存器,在串处理指令中,为源变址寄存器,在串处理指令中,SI作为隐含的源作为隐含的源变址寄存器
9、与变址寄存器与DS联用,以确定数据段中的存储单元地址,联用,以确定数据段中的存储单元地址,并有自动增量和自动减量的变址功能。并有自动增量和自动减量的变址功能。DI为目的变址寄存器,在串处理指令中,为目的变址寄存器,在串处理指令中,DI和附加段寄和附加段寄存器存器ES联用,以达到在附加段中寻址的目的,然后联用,以达到在附加段中寻址的目的,然后DI自自动增量或减量。动增量或减量。BP,SP:BP,SP:堆栈指针寄存器,堆栈指针寄存器,SP+SSSP+SS在在RAMRAM中建立堆栈,并通过栈顶来存取堆中建立堆栈,并通过栈顶来存取堆栈中的数据。栈中的数据。BP+SSBP+SS不通过栈顶存取堆栈中某单元
10、的信息。不通过栈顶存取堆栈中某单元的信息。段寄存器:段寄存器:CS:CS:代码段寄存器代码段寄存器 DS:DS:数据段寄存器数据段寄存器SS:SS:堆栈段寄存器堆栈段寄存器 ES:ES:附加段寄存器附加段寄存器1616位寄存器位寄存器,用来标识当前代码段用来标识当前代码段,数据段数据段,堆栈段和附加段。堆栈段和附加段。功能:主要是使功能:主要是使8088CPU8088CPU对对IBM PCIBM PC内存的不内存的不同段进行读写。同段进行读写。控制寄存器:控制寄存器:IPIP和和PSWPSWIPIP指令指针寄存器(即指令指针寄存器(即PCPC,存放代码段中,存放代码段中的偏移地址),在程序执行
11、过程中,它始终指的偏移地址),在程序执行过程中,它始终指向下一条指令的首地址,它与向下一条指令的首地址,它与CSCS寄存器联用取寄存器联用取得确定的下一条指令在存储器中的物理地址,得确定的下一条指令在存储器中的物理地址,控制器可取得下一条执行指令,控制器一旦取控制器可取得下一条执行指令,控制器一旦取得这条指令。就马上修改得这条指令。就马上修改IPIP的内容,使之指向的内容,使之指向下一条指令的首地址。下一条指令的首地址。PSWPSW程序状态字寄存器(标志寄存器)(程序状态字寄存器(标志寄存器)(1616位)由条件标志和位)由条件标志和控制标志构成。控制标志构成。OF DFIFTFSFZFAFP
12、FCF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0条件码标识:条件码标识:条件码标识(条件码标识(6 6个),用来记录程序运行和状态信息。这些个),用来记录程序运行和状态信息。这些信息往往作为条件转移指令的控制条件。信息往往作为条件转移指令的控制条件。OF OF 溢出标志溢出标志 OF=0:-128=B=127OF=0:-128=B=127 -32768=W=+32767 -32768=W=+32767;否则否则 OF=1OF=1SF SF 符号标志符号标志 与运算结果的最高位相同与运算
13、结果的最高位相同ZF ZF 零标志零标志 ZF=1ZF=1:结果为:结果为0 0;否则;否则ZF=0ZF=0AF AF 辅助进位标志辅助进位标志 中间位向高位进位或借位中间位向高位进位或借位 时,时,AF=1AF=1;否则;否则 AF=0 AF=0 PF PF 奇偶标志奇偶标志 操作数中操作数中1 1的个数为偶的个数为偶 PF=1 PF=1 CF CF 进位标志进位标志 CF=1CF=1:最高有效位有进位:最高有效位有进位注意:注意:解有符号数的算术运算,必须根据解有符号数的算术运算,必须根据OFOF是是“1”1”还是还是“0”0”决定是否溢出。决定是否溢出。对于无符号的算术运算,必须根据对于
14、无符号的算术运算,必须根据CFCF是是“1”1”还是还是“0”0”来决定是否溢出。来决定是否溢出。进位和溢出是两个不同性质的标志不要混淆进位和溢出是两个不同性质的标志不要混淆确定确定CFCF和和OFOF的值:的值:字节(字节(-1-1)+(-1-1)=-2=-2的有符号数运算的有符号数运算 11 11 11 1111 11 11 11 +11 11 11 11 CF=1 +11 11 11 11 CF=1 OF=0 OF=0 无溢出无溢出 1 11 11 11 101 11 11 11 10(150)+(150)=300(150)+(150)=300的无符号数运算(根据的无符号数运算(根据CF
15、CF判断)判断)1001 0110 1001 0110 +1001 0110 CF=1 +1001 0110 CF=1 有溢出有溢出 1 0010 1100 OF=0 1 0010 1100 OF=0(+100)+(+100)=200(+100)+(+100)=200的有符号数运算(根据的有符号数运算(根据OFOF判断)判断)0110 0100 0110 0100 +0110 0100 CF=0 +0110 0100 CF=0 0 1100 1000 OF=1 0 1100 1000 OF=1 有溢出有溢出控制标志控制标志:DF DF 方向标志方向标志 DF=1(DOWNDF=1(DOWN方向
16、减量方向减量)DF=0(UP DF=0(UP方向增量方向增量)IF IF 中断标志中断标志 IF=1(CPUIF=1(CPU响应外部中断请求响应外部中断请求)STISTI(D D)IF=0(CPU IF=0(CPU不响应外部中断请求不响应外部中断请求)CLICLI (D D)TF TF 追踪标志追踪标志 TF=1TF=1(CPUCPU单步操作)单步操作)TF=0(TF=0(连续操作连续操作)80 x86的寄存器结构的寄存器结构80 x86的程序可见寄存器组的程序可见寄存器组通用寄存器通用寄存器专用寄存器专用寄存器段寄存器段寄存器 AH AX AL AH AX AL BH BX BL BH BX
17、 BL CH CX CL CH CX CL DH DX DL DH DX DL SP SP BP BP SI SI DI DI IP IP FLAGS FLAGS CS CS DS DS SS SS ES ES8086/8086/8088/8088/8028680286 寄寄 存存 器器EAXEAXEBXEBXECXECXEDXEDXESPESPEBPEBPESIESIEDIEDIEIPEIP EFLAGS EFLAGS FSFSGSGS 31 16 15 8 7 0OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF 8086/8088OFOF DFDF
18、IFIF TFTF SFSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNT 80286 RFRF OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNTVMVM 80386 RFRF OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNTVMVMACAC 80486 RFRF OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNTVMVMACACIDID VIPVIPVIFVIF31 30 29
19、28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0Pentium80 x86的标志寄存器的标志寄存器 (P.23)IOPL:I/O特权级特权级 VIP:虚拟中断未决标志:虚拟中断未决标志 NT:嵌套任务标志嵌套任务标志 VIF:虚拟中断标志:虚拟中断标志 RF:重新启动标志重新启动标志 VM:虚拟:虚拟8086模式位模式位
20、AC:对准检查方式位对准检查方式位 ID:标识标志标识标志 寄存器与存储器的比较:寄存器与存储器的比较:寄寄 存存 器器 存存 储储 器器 在在CPU内部内部 在在CPU外部外部访问速度快访问速度快 访问速度慢访问速度慢容量小,成本高容量小,成本高 容量大,成本低容量大,成本低用名字表示用名字表示 用地址表示用地址表示没有地址没有地址 地址可用各种方式形成地址可用各种方式形成2.4 存储器存储器8086存储单元的存储单元的地址地址和和内容内容:存储器以字节(8 bit)为编程单位 每个字节单元都有唯一的地址编码 地址用无符号整数来表示(编程用十六进制表示)一个字要占用相继的两个字节 低位字节存
21、入低地址,高位字节存入高地址 字单元地址用它的低地址来表示 机器以偶地址访问(读/写)存储器计算机存储信息的基本单位是位、字节和字。计算机存储信息的基本单位是位、字节和字。在在80868086的的1616位系统中,每位是一个二进制数,一位系统中,每位是一个二进制数,一位可存储一个二进制数位可存储一个二进制数0 0或或1 1,每,每8 8位组成一个字节,位组成一个字节,两个字节组成一个字。两个字节组成一个字。4个字节组成一个双字。个字节组成一个双字。8个字节组成一个个字节组成一个4字。字。在存储器里以字节为单位存储信息,为了正确在存储器里以字节为单位存储信息,为了正确存放或取得信息,每一个字节单
22、元给一个存储存放或取得信息,每一个字节单元给一个存储器地址。器地址。地址从地址从0 0开始编号,顺序的每次加开始编号,顺序的每次加11无符号无符号的二进制数,一般以十六进制方式书写。的二进制数,一般以十六进制方式书写。1616位二进制可标识多少单元的地址:位二进制可标识多少单元的地址:2 216 16 个。个。则则1616位(一个字长)可表示的地址范围有位(一个字长)可表示的地址范围有0-0-6553565535 1024=1k=21024=1k=21010为存储器容量的基本单位,那么为存储器容量的基本单位,那么6553565535个字节单元的存储器容量为个字节单元的存储器容量为64k64k
23、(2 210+610+6=2=21010*2 26 6=64=64*2 21010)地址编号的范围(十六进制表示)地址编号的范围(十六进制表示)0000H-FFFFH0000H-FFFFH一个存储单元中存放的信息为该存储单元的内容,一个存储单元中存放的信息为该存储单元的内容,字的存入如图所示:低字节存入低地址字的存入如图所示:低字节存入低地址(0010)0010)w w=1234H 0010H=1234H 0010H(0010)0010)b b=34H 0011H=34H 0011H3412如果用如果用x x表示地址;那么(表示地址;那么(x)x)表示该单元的内容。表示该单元的内容。(0010
24、)=1234H 0010H(0010)=1234H 0010H (0010)=(1234)=2F1EH (0010)=(1234)=2F1EH 12342F1E1234H同一个地址既可看作字节单元的地址,又同一个地址既可看作字节单元的地址,又可作为字单元的地址。可作为字单元的地址。机器里访问存储器(要求存数或取数)都机器里访问存储器(要求存数或取数)都是以字为单位进行的。即:机器是以偶地址是以字为单位进行的。即:机器是以偶地址访问存储器的,这样,对于奇地址的字单元,访问存储器的,这样,对于奇地址的字单元,要取一个字需要访问二次存储器。要取一个字需要访问二次存储器。存储器分段存储器分段由于由于8
25、086/80888086/8088有有2020条地址线,且存储器是以条地址线,且存储器是以字节为单位,故其直接寻址能力可达字节为单位,故其直接寻址能力可达1MB1MB(2 22020字节),而字节),而8088CPU8088CPU内部的内部的EUEU只能进行只能进行1616位运位运算,与地址有关的寄存器也都是算,与地址有关的寄存器也都是1616位,位,那么如那么如何得到何得到2020位地址?位地址?地址分段的范围地址分段的范围 00000H-FFFFFH00000H-FFFFFH存储器的分段:存储器的分段:20 根地址线:地址范围 00000H FFFFFH(1MB)机器字长16位:仅能表示地
26、址范围 0000H FFFFH (64KB)小段:每16个字节为一小段(因为规定段的首地址必须能够被16整除),共有64K个小段 小段的首地址 00000 H 0000F H 00010 H 0001F H 00020 H 0002F H FFFF0 H FFFFF H 段起始地址:小段首地址段的大小:64K 范围内的任意字节(最大为64k)物理地址:物理地址:是由是由8086的地址引线送出的的地址引线送出的20位地址码,可位地址码,可写成写成5位的十六进制数。位的十六进制数。逻辑地址:段地址逻辑地址:段地址+偏移地址偏移地址段首地址(段地址):可用段首地址(段地址):可用1616位表示。位表
27、示。段内相对于段首地址的偏移值(偏移地址):段内相对于段首地址的偏移值(偏移地址):1616位表示。位表示。存储器的逻辑地址与物理地址存储器的逻辑地址与物理地址 10011111 00100110 01001000逻辑地址逻辑地址段地址段地址:偏移地址偏移地址 1000:0000H 1000:0001H1000:0002H1000:0003H1000:0004H1000:0005H 物理地址物理地址10000H10001H10002H10003H 10004H10005H 10000011 01011100 10100010字节内容(10000H)9FH;(10001H)26H字内容 (100
28、00H)269FH;(10001H)4826H访问两次内存段地址放入段寄存器段地址放入段寄存器CSCS,DSDS,SSSS,ESES2020位物理地址的计算方法为:将段地址后添位物理地址的计算方法为:将段地址后添加加4 4位零,再加上偏移地址值。位零,再加上偏移地址值。1616*段地址段地址+偏移地址偏移地址=物理地址物理地址 1616位段地址位段地址 00000000 +16 +16位偏移地址位偏移地址 20 20位物理地址位物理地址例:(DS)=2100H,(BX)=0500H (PA)=21000H+0500H =21500H 不存储器的存储器的逻辑逻辑分段:分段:存储器存储器64KB代
29、码01500H42000H1CD00H0150H4200H1CD0H段寄存器段寄存器CSDSSSES64KB堆栈64KB数据 64KB附加数据B0000HB000H一般情况下,各段在存储器中的分配是由操作系统负责的,但是,也允许程序员用操作命令来指定所需占用的内存区。存储器存储器 8KB代码 2KB数据 256堆栈02000H04800H04000H0200H0400H0480HCSDSSS优点优点:允许程序在存储器内重定位;允许程序在存储器内重定位;允许实模式程序在保护模式下运行;允许实模式程序在保护模式下运行;有利于程序和数据的分离。有利于程序和数据的分离。支持多任务处理功能支持多任务处理
30、功能支持虚拟存储器特性支持虚拟存储器特性 保护模式下的保护模式下的80 x86保护模式下的存储器寻址保护模式下的存储器寻址 所选存储单元所选存储单元 描描 述述 符符64描述符表描述符表所选段所选段存存 储储 器器段基地址段基地址32选择器选择器16偏移地址偏移地址 32逻辑地址逻辑地址45 CPUMEMI/O设备设备总线总线I/O接口接口2.5 外部设备外部设备 外部设备与主机(CPU 和存储器)的通信是通过外设接口(Interface)进行的,每个接口包括一组寄存器。数据寄存器:存放外设和主机间传送的数据状态寄存器:保存外设或接口的状态信息命令寄存器:保存CPU发给外设或接口的控制命令外设接口中的每一个寄存器都分配有一个称为I/O端口的地址编码。编址的方法有两种:统一编址和独立编址47IBM PC机采用独立编址,I/O端口地址允许设置8位端口(40H,80H)和16位端口(实际使用10位,301H,303H)。不同长度的地址访问格式不同八位地址可以直接访问:IN AL,80H16位地址:MOV DX,301H IN AL,DX 对不同型号的计算机及其接口,I/O端口的编码有时不完全相同。ARM系统采用统一编址。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。