32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx

上传人:b****5 文档编号:21499141 上传时间:2023-01-30 格式:DOCX 页数:21 大小:410.35KB
下载 相关 举报
32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx_第1页
第1页 / 共21页
32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx_第2页
第2页 / 共21页
32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx_第3页
第3页 / 共21页
32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx_第4页
第4页 / 共21页
32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx

《32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx》由会员分享,可在线阅读,更多相关《32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

32位微型计算机接口技术及应用 第三章基于微处理器的微机系统软件模型文档格式.docx

这样,在程序设计期间就可以使用微处理器模型中的寄存器,并用指令来操作它们。

因此,微机系统软件模型,又可以叫做程序设计模型。

微机系统软件模型所描述的对象包括微处理器的寄存器模型、存储器模型和I/O地址空间模型。

这些都是用户可以用程序的方法访问和使用的微机系统资源,而那些用户不可以用程序的方法访问与使用的硬件资源(如微处理器的运算部件,流水线等)则不属于微机系统软件模型的范围。

3.1微机系统软件模型概述

1.研究微机系统软件模型的意义

首先,从编程的观点来看待微机系统的硬件资源,可以简化对内部硬件细节的了解。

例如,对微处理器,就只需着重了解它的可编程的寄存器的功能、使用方法,而对微处理器的内部电路结构不必在意。

其次,使用微处理器的汇编语言编程,也必须从软件的观点去了解微处理器及其存储器子系统和I/O子系统的操作。

掌握软件模型中寄存器的功能和使用方法、存储器的分段与分页机制和访问方法,以及I/O端口的读/写方法,对汇编语言程序设计至关重要。

其三,由于微处理器的活动(操作)都是靠软件来驱动的,用户编什么样的程序就可以使微处理器产生什么样的活动(操作)。

所以,用户对微机的应用,实际上是通过自己的程序来实现的。

其四,从兼容性来看,强调功能上、逻辑上兼容,而不强调物理上的兼容即内部电路细节上的兼容,采用软件模型也是适合的。

微处理器从8086到Pentium都具有向上兼容的特点。

即使是一些外围芯片,目前,也都是把许多原来具有独立功能的芯片集成在一个叫芯片组的大芯片中,如南桥芯片组。

虽然这些芯片组在内部结构上和原来单个外围支持芯片的结构完全不同,但从逻辑的和功能的观点,即从软件编程的观点,它们与原来的芯片是一样的,是兼容的。

总之,随着新技术的采用和集成度的提高,微处理器的功能越来越强大,内部结构也越来越复杂,外部的引脚也越来越多,相关的存储器系统及外围支持芯片组也越来越复杂,而且.这种趋势还会持续下去。

在这种情况下,利用软件模型(或程序设计模型)来了解、学习和应用微机系统中的微处理器、存储器和I/O系统,不能不说是一种可行的方法。

2.微处理器软件模型的兼容性

不同的微处理器,其内部设置的寄存器不同,软件模型也就有所差别。

从8086直到Pentium微处理器都有各自的软件模型。

早期的8086、8088和80286是16位微处理器,只使用其中的8位或16位寄存器。

后来的80386、80486和Pentium是32位微处理器,可使用其中的8位、16位、32位乃至48位的寄存器,并且增加了一些具有新功能的寄存器。

但是,后来的微处理器的软件模型与早期的微处理器的软件模型完全兼容。

微处理器软件模型的兼容性,使得先前的一些应用程序能够在后来的微机系统中运行。

下面分别对软件模型中的微处理器的寄存器、存储器和I/O空间进行讨论,发展到32位微处理器之后,微处理器有实模式和保护模式之分,相应地也有实模式和保护模式两种软件模型。

3.2实模式下微处理器的寄存器模型

32位微处理器的实模式寄存器模型如图3.1所示。

图中,不打阴影的部分表示在实模式下编程使用的寄存器,包括:

4个通用寄存器(AX、BX、CX和DX);

6个段寄存器(CS、DS、SS、ES、FS和GS);

2个指针寄存器(BP和SP);

2个变址寄存器(SI和DI);

1个指令指针(IP);

1个标志寄存器(FLAGS);

1个控制寄存器CR0。

下面分别介绍各寄存器的作用与格式。

1.通用寄存器

实模式的4个通用寄存器是累加器寄存器(A)、基址寄存器(B)、计数寄存器(C)、数据寄存器(D)。

它们作为16位使用时在寄存器名后加X,如16位的累加器AX;

作为32位使用时则在寄存器名前加E,如扩展的累加器EAX;

作为8位使用时则分高、低字节寄存器,用字母H、L区别,如将A寄存器的高位字节表示为AH,而低位字节表示为AL。

在实模式下,使用16位或8位数据寄存器。

4个寄存器各自具有不同的功能。

A寄存器主要用于存放程序执行过程中的一些中间结果,以及存放I/O数据。

C寄存器在串、循环、循环移位和移位操作中用作计数寄存器,以统计被移位或循环移位的次数(位数)。

数据寄存器D也能存放地址信息,如存放I/O端口地址。

2.段寄存器

段寄存器是为了存储器分段的需要而设置的,用于存放段基址,所有段寄存器都是16位的。

因此,段基址必须是16B的整数倍,并且段和段之间可以是连续的、相邻的、独立的或部分重合的。

系统中可以同时有6个段被激活而处于工作状态,即:

1个代码段、1个堆栈段和4个数据段(DS、ES、FS和GS)同时激活,一起工作。

因此,需要6个段寄存器来存放这6个段的基地址.它们是代码段寄存器(CS)、堆栈段寄存器(SS)、数据段寄存器(DS、ES、FS和GS)。

这些寄存器中保存的值称为当前段寄存器值。

段寄存器内的数值可以由程序员通过软件加以改变。

因此,程序要访问存储器的哪一段,只需将该段的段基址写入相关段寄存器。

例如,要选用存储器中不同数据段空间的数据,只要改变数据段寄存器(DS、ES、FS和GS)中的数值即可。

同样,当执行段间调用指令使程序发生转移时,就需要改变代码段寄存器CS的数值。

一段内存,既可以作代码的存储空间,也可以作数据的存储空间,还可以作堆栈空间,主要是由微处理器中的段寄存器来指定。

例如由CS与IP指定为代码的存储空间,由DS与偏移指定为数据的存储空间,由SS与SP指定为堆栈存储空间。

3.指令指针

实模式的指令指针IP为16位,它指示存储器中当前代码段内的偏移量,即代码与代码段段基址的距离。

实模式下由微处理器把IP的偏移量和CS的当前值组合成指令代码的地址,

故要访问代码的地址为CS:

IP。

可见,指令指针是存放程序代码的偏移地址的,而不是存放数据的。

4.指针和变址寄存器

由于有些指令(算术、逻辑指令)的操作数在数据寄存器中,另一些指令(串指令)的操作数不在数据寄存器中,而在存储器内,因此,需要有一些能够确定操作数在存储器中的位置的寄存器。

指针寄存器和变址寄存器就是用于存放偏移量地址,而不是存放数据的寄存器。

它们分别以指针方式或变址方式选中存储器的64KB段内的具体存储单元。

指针寄存器(SP和BP)用于选取堆栈段内的具体存储单元,即指针寄存器的值指向堆栈段的栈顶或栈内的具体存储单元,而变址寄存器(SI和DI)用于选取数据段内的具体存储单元,即变址寄存器的值指向存储器数据段或附加段内的存储单元。

所以,如果要访问存储器堆栈存储区,只要把SP或BP内的数值与堆栈段寄存器SS中内容合并成存储器物理地址即可。

其中,栈顶指针SP与SS组合起来(SS:

SP)形成20位地址指针,指向堆栈的顶部(TOS);

基址指针BP与SS组合起来(SS:

BP)形成20位地址指针,指向堆栈内的存储单元。

实模式下,BP经常用于读取堆栈内一些参数,传递给子程序,因而成为子程序参数传递的一种常用方法。

为此,子程序内应包括使用基址寻址的指令,该指令将从堆栈里读出参数值。

另外两个变址寄存器SI和DI用于存放数据段的偏移地址。

在指令中包含变址时,SI用于保存源操作数用的偏移量地址,DI用于保存目标操作数用的偏移地址。

5.标志寄存器

图3.2给出了80X86-Pentium微处理器中的标志寄存器。

标志寄存器(FLAGS)是一个32位的寄存器,用于指示微处理器的状态并控制它的工作。

标志寄存器在实模式下只使用9位,如图3.3所示。

它包括状态标志与控制标志两类。

状态标志的逻辑状态取决于指令执行的结果,是自动产生的,其他指令可以使用这些标志来决定是否使程序发生转移,因此,有的书上把这类状态位叫做条件码,如条件转移指令。

控制标志是在程序中使用专门指令设置的,不是自动产生的,用来控制一些操作,如中断的开与关、地址的加与减的方向等。

(1)6位状态标志的作用

●进位标志CF(carryflag)当执行算术指令时,若其结果的最高位有进位或借位,则将CF置1;

否则,将CF复位。

●奇偶标志PF(Parityflag)当操作结果中有偶数个1时,置1;

否则,置0。

●辅助进位标志AF(auxiliarycarryflag)在8位、16位或32位二进制数内,若其较低字节中有低位半字节向高位半字节进位,或高位半字节借位给低位半字节,则将AF置1,否则,AF复位。

●零标志ZF(zeroflag)如果算术或逻辑运算结果为0,则将ZF置15否则,ZF复位。

●符号标志SF(signflag)记录运算结果的符号,若结果为负,则SF置1;

●溢出标志OF(overflowflag)在运算时,若带符号的结果超出机器能够表示的范围,则OF置1;

(2)3位控制标志的作用

●陷阱标志TF(trapflag)用于设置陷阱中断,若TF设置为1,则在执行指令时产生单步中断,即CPU进入单步方式:

它执行一条指令后就跳到一个专用服务程序上去,检查指令执行情况,用于程序调试。

●中断允许标志IF(interruptflag)当IF置1时,允许中断请求;

当IF置0时,禁止中断请求。

●方向标志DF(Directionflag)决定串操作的方向。

当DF置1时,串指令自动按减地址执行,即串数据传输过程是从高地址到低地址;

当DF置0时,串指令按增加地址执行,即串数据传输过程是从低地址到高地址,即:

在串处理时控制变址寄存器SI和DI递增或递减方式。

至于每次递增或递减多少,则取决于每次传输的是字节或字或双字。

若是字节,则加/减1;

若是字,则加/减2;

若是双字,则加/减4。

3.3保护模式下微处理器的寄存器模型

32位微处理器保护模式的寄存器模型如图3.4所示。

图3.4的保护模式寄存器模型是图3.1中所示的实模式寄存器集的一个超集。

比较这两个图,可发现保护模式寄存器模型除了实模式中使用过的寄存器之外,新增了4个系统地址寄存器GDTR、IDTR、LDTR、TR和4个控制寄存器CR0~CR3。

另外,一些寄存器的功能也得到了扩展,例如,指令指针为EIP,长度为32位;

标志寄存器EFLAGS的更多位得到了利用。

下面分别讨论新增加的和扩展了的寄存器的功能和格式。

它们在分段和分页存储器管理中的使用方法将在第6章讨论。

3.3.1系统地址寄存器

在保护模式下,微处理器内部新增加了4个寄存器GDTR、IDTR、LDTR和TR,这些寄存器是为了提供地址信息在确定全局描述符表GDT、中断描述符表IDT、局部描述符表LDT和任务状态段TSS等4种表格在存储器中的位置的,故把它们叫做系统地址寄存器。

1.全局描述符表寄存器

全局描述符表寄存器GDTR用来在存储器地址空间中定位一个全局描述符表GDT。

GDTR的格式,如表3.1所示。

从表3.1可以看到,GDTR长48位,由这个48位地址作为指针,直接指定GDT表在存储器空间的位置。

其中,GDTR的高32位基地址Base,指示GDT在存储器中的开始位置。

32位基址允许把GDT定位在线性地址空间的任何地方。

GDTR的低16位指示GDT的段限长Limit,它规定了GDT按字节计算的大小(Limit的值要比实际表小1。

例如,如果Limit=00FFH,则表长为256B)。

16位段限长允许GDT表最大可达65536B,因而最多能容纳8192个描述符(每个描述符长8B),实际应用中根据需要来确定GDT的长度。

2.中断描述符表寄存器

中断描述符表寄存器IDTR用来在存储器中定位一个中断描述符表IDT。

IDTR的格式如表3.1所示。

IDTR也是48位长,由这个48位地址指针,直接指定IDT在存储器空间的位置。

其中,IDTR的高4个字节基地址Base,用于指示IDT在存储器中的起始地址,32位基地址允许IDT定位在线性地址空间的任何地方。

IDTR的低2个字节指示IDT的段限长Limit,以定义表的大小(表的实际大小等于Limit+1个字节)。

可定义IDT的最大长度为65536字节长,但系统只支持256个中断和异常,所以,实际上IDT最大长度是2KB,以字节为单位的段界限为7FFH。

3.局部描述符表寄存器

局部描述符表寄存器LDTR并不直接指示局部描述符表LDT在存储器中的位置,因此,它的格式与GDTR和IDTR都不同,LDTR的格式如表3.2所示。

LDTR是16位长。

这个16位的值是一个选择子,它指向存放在GDT中的LDT的描述符。

选择子不能直接定位LDT,只有描述符才能定位LDT。

因此,当向LDTR中装入一个选择子时,相应的LDT的描述符就自动从GDT中读出来并装人LDTR的高速缓冲寄存器中(见表3.2右侧的虚线柜)。

真正的LDT描述符就在这个高速缓冲寄存器中。

它是64位的,其中32位的Base值指示LDT在存储器的起始地址,16位的Limit值指示LDT的大小,还有12位的Attribute值说明LDT的属性。

可见,LDT需要2次定位。

首先.利用LDTR中的选择子,在GDT中找到LDT的描述符,然后,利用LDT的描述符,来定位LDT在存储器中的位置。

4.任务状态段寄存器

任务状态段寄存器TR与LDTR类似,也不能直接指定任务状态段TSS在存储器空间的位置。

其格式如表3.2所示。

TR是16位长。

这个16位的值也是一个选择子,不过这个选择子是用来指示TSS段的描述符在GDT表中的位置的。

找到了TSS段的描述符,通过描述符就能够指定TSS段在存储器空间的位置。

因此,当选择子装入TR时,相应的TSS段的描述符就自动从全局描述符表GDT中读出并装入TR的高速缓冲寄存器中(见表3.2右侧的虚线框)。

这个高速缓冲寄存器为64位,它提供了TSS段的32位起始地址Base和TSS段的16位Limit以及TSS段的12位属性Attribute。

可见,TSS段也需要2次定位。

首先,利用TR中的选择子,在GDT中找到TSS段的描述符,然后,利用TSS段的描述符,来定位TSS段在存储器中的位置。

3.3.2控制寄存器

保护模式新增加的4个32位的控制寄存器CR0、CR1、CR2和CR3,是为了控制微处理器的工作方式和分段管理机制及分页管理机制,其格式如表3.3所示。

1.控制寄存器CR0

CR0的主要功能是选择微处理器的工作方式和存储器的管理模式。

各位的含义如下。

(1)保护模式允许位PE

PE位控制微处理器是进入实模式还是进入保护模式,因此又叫做微处理器工作模式控制位。

PE置0,为实模式,PE置1,为保护模式。

系统开机或重启时PE清零,微处理器处于实模式。

若要进入保护模式,则必须通过程序将PE置为1。

(2)分页管理启用位PG

PG控制禁止还是启用分页管理机制。

PG置0,禁止使用分页机制,此时由分段机制形成的线性地址就作为物理地址;

PG置1,启用分页机制,此时线性地址还不是物理地址,线性地址必须经分页转换才能形成物理地址。

表3.4列出了微处理器的工作方式与PE/PG的选择。

由于PG=1且PB=0是非法组合,即实模式下不能使用分页管理,只有保护模式下才有分页,因此,当用PG为1和PE为0的值装入CR0寄存器将引起通用保护异常。

(3)协处理器操作控制位(MP、EM、TS、ET)

CR0中的位1~位4分别标记为MP(算术存在位)、EM(模拟位)、TS(任务切换位)、ET(扩展类型位),它们控制浮点协处理器的操作。

2.控制寄存器CR2

CR2由分页管理机制使用,用于报告发生页故障时的出错信息。

如果某页不在存储器中,则在页转换时会发生缺页故障,此时,微处理器把引起页故障的线性地址保存在CR2中。

操作系统中的页故障处理程序通过检查CR2的内容,就可查出是线性地址空间中的哪一页引起的故障。

3.控制寄存器CR3

CR3也由分页管理机制使用,用于保存页表目录的起始物理地址。

在确定页表目录在存储器空间的位置时,需要使用页表目录的基地址,CR3的高20位就是提供页表目录的基地址的,故称页表目录的基地址寄存器PDBR。

由于基地址仅高20位有效,低12位不用,所以,向CR3中装入一个页表目录的起始物理地址(基地址)时,低12位必须为0;

而从CR3中取值时,低12位被忽略。

3.3.3改变功能的寄存器

前面曾指出过,一些在实模式和保护模式下部可用的寄存器在切换到保护模式时会发生变化。

1.段寄存器

段寄存器在保护模式下称为段选择子寄存器,仍然是16位,其值不再是段基址而是选择子。

选择子并不直接指定存储器地址,它选择一个定义存储器段的段基址、大小和属性的描述符。

选择子的格式及作用,将在第5章讨论。

值得指出的是,在保护模式下,每个段寄存器都有一个相应的高速缓冲寄存器,它对一般编程人员是不可见的。

2.标志寄存

在保护模式下标志寄存器EFLAGS长度扩充到32位,新增加了5位,如图3.2所示。

这些位只有在保护模式下才处于活动状态。

例如,输入/输出特权级码IOPL、嵌套任务标志NT、恢复标志RF,以及V86模式标志VM。

●IOPL(2位)用来指定最大输入/输出特权级。

如果IOPL值为00,则只有在最高特权级0级才能访问I/O操作。

如果IOPL为11,则I/O允许较低的特权级访问。

●NT指明当前任务是否嵌套,即是否被别的任务调用。

该位在发生任务嵌套时自动设置,并且只能用软件复位。

●VM指明当VM位为1时.微处理器就处于V86模式。

此时,其当前特权级由微处理器自动设置为3。

由于微处理器没有提供直接改变VM标志位的指令,并且只有当前特权级CPL=0时,对VM的改变才有效,所以V86模式与保护模式的切换不能简单地通过改变VM位而进行。

●RF恢复标志,与调试寄存器断点或单步操作一起使用。

●AC对准检查标志,当AC=1,且程序运行特权为3时,对存储器访问边界进行对准检查。

●VIF虚拟中断标志,在虚拟方式下中断标志只对Pentium机有效。

●VIP虚拟中断暂挂标志,为Pentium微处理器提供有关虚拟模式中断的信息。

它用于多任务环境下,给操作系统提供虚拟中断标志和中断暂挂信息。

●ID标识标志,指示Pentium微处理器支持CPUID指令。

CPUID指令为系统提供有关Pentium微处理器的信息,如版本、制造商等。

3.3.4程序不可见寄存器

32位微处理器中包含了一些不直接被应用程序访问的“程序不可见的寄存器”,又叫程序不可见高速缓冲寄存器(并不是微处理器中的一级或二级高速缓冲存储器cache),是用来保存描述符的。

一个描述符包含段基地址、段限长和段属性共8个字节64位长,因此,程序不可见高速缓冲寄存器也是8个字节。

6个段寄存器和任务寄存器TR,以及局部描述符表寄存器LDTR部分配了一个程序不可见高速缓冲寄存器,如图3.5中的虚线框所示。

既然用户在编程时,见不到也用不到这些高速缓冲寄存器,那它们在系统中又如何发挥作用呢?

原来,每当用户在程序中向段寄存器(或TR、LDTR寄存器)装入一个新的选择子时,微处理器就会自动访问描述符表,从表中读取一个描述符,并把描述符装入该段寄存器对应的程序不可见高速缓冲寄存器内。

这个描述符一直保存在这里,并在访问存储器段时使用,直到段的选择子再次变化为止。

这就使得微处理器在重复访问一个内存段时,不必每次都花时间到存储器中去查找描述符表,而是直接快速地从程序不可见寄存器中读取和使用描述符,因此称之为高速缓冲寄存器。

可见,程序不可见寄存器是用来提供段描述符,以便指定存储段(代码段、数据段和堆栈段)、TSS段及LDT段在存储器空间的具体位置的重要资源。

虽然它们在程序中不出现,而由微处理器在内部直接操作,但它们对定位与访问保护模式存储器的作用是不可忽视的。

例如,为了定位与访问局部描述符表LDT,在程序中只需将LDT的选择子装入局部描述符表寄存器LDTR,如同选择子装入段寄存器一样。

这个选择子会自动访问全局描述符表GDT,从中读出LDT的描述符,并且将局部描述符表LDT的基地址、段界限和访问权限装入LDTR高速缓冲存储区。

又如,为了定位与访问任务状态段,在程序中只需将TSS的选择子装入任务寄存器TR,如同选择子装入段寄存器一样。

这个选择子会自动访问全局描述符表.从中读出TSS的描述符,并且将任务状态段TSS的基地址、段界限和访问权限装入LDTR高速缓冲寄存器。

至于为什么要把描述符以隐蔽的方式存放在程序不可见高速缓冲寄存器中,而不放在显式的段寄存器中,其原因也许是为了使32位微处理器在保护模式下指令书写格式与在实模式下指令书写格式保持一致,都是向段寄存器写16位数据。

虽然这16位数据的含义不同,在保护模式下写的是选择子,实模式下写的是段基地址,但是由于不可见高速缓冲寄存器的存在,当向段寄存器写人选择子时,也就同时向高速缓冲寄存器写入了描述符,有了描述符也就等于有了段基地址。

高速缓冲寄存器是64位长,分3个字段(域),包括32位段基址,20位段限长和12位段属性。

高速缓冲寄存器各字段的定义域格式如图3.6所示。

3.4实模式存储器模型

存储器软件模型是从软件编程的角度去看存储器是什么样子的,也就是用户在编程时只考虑如何使用存储器,而不考虑它的硬件细节。

存储器软件模型的内容包括:

存储器空间、存储器的分段与分页、存储器的寻址、存储器物理地址的形成等。

3.4.1实模式下存储器地址空间和数据组织

本节讨论实模式存储器模型,保护模式存储器模型在下一节讨论。

1.实模式下存储器地址空间

32位微处理器在实模式下,支持1MB存储器,从软件观点看这1MB的存储器是由00000H~FFFFFH地址编码(编号)的空间,地址从0开始编号,顺序地每次加1。

直到1048575为止。

数据以字节为单位存储在连续的地址码所组织的空间内,但可以连续两个字节(字长)和连续4个字节(双字长)来访问存储空间。

实模式的1MB存储空间都可以被用户访问,不过根据安排有些地址空间有专门用途,专用存储空间不能存储程序中的数据或指令,如00000H~003FFH区域专门用于存放中断向量表。

通用区域可以存储程序的指令或数据,通用区域的范围是400H~FFFFFH。

2.实模式下存储器的数据组织

存储单元可以存放数字、字符、指令等信息。

一个存储单元中存放的信息称为该存储单元的内容。

如图3.7中所示的4号地址单元中存放的信息为34H,也就是说4号地址单元中的内容为34H,则表示为(0004)=34H。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1