电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

通用寄存器地址方案设置办法

2017-09-11 20:10分类:电子技术 阅读:

 

一、8086/8088 16位cpu的寄存器组:
1、通用寄存器:
AX(accumulator,AH|AL):累加器
BX(base,BH|BL):基址寄存器
CX(counter):计数器
DX(data):双字长运算时寄存高位字,也用来寄存I/O的端口地址
SP(stack pointer):椎栈指针寄存器
BP(base pointer):基址指针寄存器
DI(destination index):意图变址寄存器
SI(source index):源变址寄存器
2、专用寄存器:
IP(instruction pointer):指令指针寄存器
FLAGS:象征寄存器,又称程序情况字寄存器(PSW:program status word)
注:IP和FLAGS又称为操控寄存器,SP、BP、SI、DI和IP又称为指针及变址寄存器,通用寄存器中除指针及变址寄存品外的别的有些又名做数据寄存器。
3、段寄存器:
CS(code segment):代码段寄存器
DS(data segment):数据段寄存器
SS(stack segment):仓库段寄存器
ES(extra segment):附加数据段寄存器
二、80386及往后的80x86版别的寄存器
1、通用寄存器(32位,低16位和8086的通用寄存器一同):
EAX、EBX、ECX、EDX、ESP、EBP、EDI、ESI
2、专用寄存器
A、指令指针寄存器(32位):EIP。
B、象征寄存器(32位):EFLAGS

各象征位的解说如下:
CF:(Carry Flag)进位象征
PF:奇偶象征
AF:(Assistant Flag)辅佐进位象征
ZF:零象征
SF:符号象征
TF:圈套象征
IF:接连象征
DF:方向象征
OF:溢出象征
IOPL:输入输出象征
NT:(Nested Task)嵌套使命象征,为1时标明其时施行的使命嵌套于另一使射中,施行完该使命后,要回来到正本的使射中去。
RF:(Restart Flag)重启象征,用来操控是不是承受调试缺点,RF=0时表进承受,RF=1时标明疏忽。假定你的程序每一条指令都被成功施行,那么RF会被清0,而当承受一个非调试缺点时,处理器置RF=1。
VM:(Virtual Machine)虚拟8086办法,用软件办法仿照8086办法,容很多个1MB巨细的段存储于存储器中施行。VM=0标明作业在通常的保护办法下,VM=1标明作业在8086办法下。
AC:(Alignment Check)对齐查看,置位该象征和操控寄存器CR0的AM象征则启用对内存引证的对齐查看,铲除这两个象征则禁用对齐查看。当引证一个没有对齐的操作数时,将会发作一个对齐查看反常,比方在奇地址引证一个字地址或在不是4的倍数的地址引证一个双字地址。对齐查看反常只在用户态(3特权)下发作。默许特权为0的内存引证,比方段描绘符表的装载,并不发作这个反常,虽然一样的操作在用户态会发作反常。对齐查看反常用于查看数据的对齐,当处理器之间交流数据时这很有用,交流数据需求悉数的数据对齐。对齐查看反常可供解说程序运用。让某些指针不对齐就好比做上分外符号,这么就无需对每个指针都进行查看,只在用到的时分,对这些分外指针进行处理就能够了。
VIF:(Virtual Interrupt)虚拟接连,是IF的一个虚拟映像,和VIP一同运用,当操控寄存器CR4中VME或PVI象征为1且IOPL小于3时,处理器只辨认VIF象征(VME用来启用虚拟8086拓宽,PVI象征用来启用保护办法下的虚拟接连)。
VIP:(Virtual Interrupt Pending)虚拟接连等候。置1标明有一个正在等候处理的接连,置0标明没有等候处理的接连,该象征和VIF一同运用。处理器读取该象征但向来不批改它。当VME象征或许操控寄存器CR4中的PVI象征置1且IOPL小于3时,处理器只辨认VIP象征。
ID:(Identification)辨认,置1或0标明是不是支撑CPUID指令。
3、段寄存器:CS、DS、ES、SS、FS、GS(悉数是16位寄存器,其间FS和GS都是附加段)
80386往后的CPU段寄存器里边寄存的都是挑选子,用于从GDT或LDT里边挑选段描绘符,挑选子构造如下:

各象征位解说如下:
RPL(0-1):恳求优先级
TI:Table Indicator,用于指定是从GDT里挑选描绘符仍是从LDT里挑选描绘符
Index:挑选的描绘符在描绘符表里的偏移。
这些段寄存器都有与之对应的不行见cache寄存器(段描绘符寄存器,留神差异于段描绘符表寄存器),用于存储与挑选子对应的段描绘符,当段寄存器内容发作改动时,与之对应的段描绘符寄存器内容将会从段描绘符表中加载,然后容许一次加载,屡次拜访这个段描绘符。
挑选子对应的段描绘符构造如下:

描绘符构造描绘如下:
低4字节0-15位:段限长的0-15位
低4字节16-31位:段基址的0-15位
高4字节0-7位:段基址的16-23位
高4字节8-11位:TYPE:用行指定段或门(Gate)的类型、阐明段的拜访品种以及段的拓宽方向。该字段的解说依托于描绘符类型象征S指明是一个运用(代码或数据)描绘符仍是一单个系描绘符。TYPE字段的编码对代码、数据或体系描绘符都纷歧样,如下图:

S为1时(数据段或代码段)时type值阐明:
第11位E位:可施行位,用于挑选数据段或代码段,E为0时标明数据(或仓库)段,E为1时标明代码段。
第10位X位:数据段时标明拓宽方向,X=0向上拓宽,X=1时向下拓宽。代码段时优先级疏忽。
第9位R/W位:数据段时是不是容许写或不容许写,代码段时标明是不是容许读。
第8位A位:已拜访位,段被拜访时被置位为1,用于追寻哪些段被拜访过。S为0时(体系段)type值阐明:0:无效,1:80286使命情况段,2:LDT,3:80286的使命情况段,4:80286的调用门,5:80286的使命门,6:80286的接连门,7:80286的圈套门,8:无效,9:80386作使命情况段,10:为往后保留,11:80386的使命情况段,12:80386的调用门,13:保留,14:80386接连门,15:80386的圈套门。
高4字节12位:S标明体系段象征,为0时标明是体系段,为1时标明是通常段(代码段或数据段)。
高4字节13-14位:DPL(Descriptor Privilege Level)标明描绘符的特权级,从0-3,0级最高,3级最低。
高4字节15位:P标明段存在象征,用于指出一个段是在内存中(P=1)仍是不在内存中(P=0)。当一个段描绘符的P象征为0时,那么把指向这个段描绘符的挑选符加载进段寄存器将致使发作一个段不存在反常。内存处理软件能够运用这个象征来操控在某一给守时刻实习需求把那个段加载进内存中。这个功用为虚拟存储供应了除分页机制以外的操控。下图给出了当P=0时的段描绘符格局。当P象征为0时,操作体系能够安闲运用格局中标明为可用(Available)的字段方位来保留自个的数据,例如有关不存在段实习在啥本地的信息。

高4字节16-19位:段限长的16-19位
高4字节20位:AVL可用位,标明描绘符所描绘的段是不是可用,被体系软件运用
高4字节21位:L保留位,老是为0高4字节22位:D/B(Default operation size/default stack pointer size and/or upper bound)(默许操作巨细/默许栈指针巨细和/或上鸿沟)象征:依据段描绘符描绘的是一个可施行代码段、下扩数据段仍是一个仓库段,这个象征具有纷歧样的功用。(关于32位代码和数据段,这个象征应当老是设置为1;关于16位代码和数据段,这个象征被设置为0。)可施行代码段。此刻这个象征称为D象征并用于指出该段中的指令引证有用地址和操作数的默许长度。假定该象征置位,则默许值是32位地址和32位或8位的操作数;假定该象征为0,则默许值是16位地址和16位或8位的操作数。指令前缀0x66能够用来挑选非默许值的操作数巨细;前缀0x67可用来挑选非默许值的地址巨细。栈段(由SS寄存器指向的数据段)。此刻该象征称为B(Big)象征,用于指明隐含仓库操作(如PUSH、POP或CALL)时的栈指针巨细。假定该象征置位,则运用32位栈指针并寄存在ESP寄存器中;假定该象征为0,则运用16位栈指针并寄存在SP寄存器中。假定仓库段被设置成一个下扩数据段,这个B象征也一同指定了仓库段的上鸿沟。下扩数据段。此刻该象征称为B象征,用于指明仓库段的上鸿沟。假定设置了该象征,则仓库段的上鸿沟是0xFFFFFFFF(4GB);假定没有设置该象征,则仓库段的上鸿沟是0xFFFF(64KB)。
高4字节23位:G标明段限长的内存颗粒度,为1时以4KB为单位,为0时以1B为单位。操控段内偏移地址的寻址方案从1B-1MB或许从4KB-4GB。
高4字节24-31位:段基址的24-31位。
4、操控寄存器(32位):CR0、CR1、CR2、CR3
用于保留大局的机器情况

各象征位解说如下:
CR0的低16位被称为机器情况字(MSW),位意义如下:
PE:(Protection Enable)保护容许位,进行保护办法时,PE=1,除复位外,不能被铲除,实办法时,PE=0。这个象征仅翻开段级保护,而并没有启用分页机制。若要启用分页机制,那么PE和PG象征都要置位。
MP:(Monitor coProcessor或Math Present)监督协处理器位,当协处理器作业时,MP=1,不然,MP=0。用于操控WAIT/FWAIT指令与TS象征的交互效果。假定MP=1、TS=1,那么施行WAIT指令将发作一个设备不存在反常;假定MP=0,则TS象征不会影响WAIT的施行。
EM:(EMulation)仿真协处理器位,当MP=0,EM=1时,标明用软件仿真协处理器。当该位设置时,标明处理器没有内部或外部协处理器,施行协处理器指令时会致使设备不存在反常;当铲除时,标明体系有协处理器。设置这个象征能够迫使悉数浮点指令运用软件来仿照。
TS:(Task Switched)使命切换位,当使命切换时,TS=1,此刻不容许协处理器作业,切换结束后,TS=0。该象征用于推延保留使命切换时的协处理器内容,直到新使命开端实习施行协处理器指令。处理器在每次使命切换时都会设置该象征,并且在施行协处理器指令时测验该象征。假定设置了TS象征并且CR0的EM象征为0,那么在施行任何协处理器指令之前会发作一个设备不存在反常。假定设置了TS象征但没有设置CR0的MP和EM象征,那么在施行协处理器指令WAIT/FWAIT之前不会发作设备不存在反常。假定设置了EM象征,那么TS象征对协处理器指令的施行无影响。在使命切换时,处理器并不主动保留协处理器的上下文,而是会设置TS象征。这个象征会使得处理器在施行新使命指令流的任何时分遇到一条协处理器指令时发作设备不存在反常。设备不存在反常的处理程序可运用CLTS指令铲除TS象征,并且保留协处理器的上下文。假定使命从没有运用过协处理器,那么相应协处理器上下文就不必保留。
ET:(Extension Type)协处理器类型位,当ET=1时,协处理器为80387,并运用32位协处理器协议。当ET=0时,协处理器为80287。假定仿真位EM=1,则该位将被疏忽。在处理器复位操作时,ET位会被初始化指明体系中运用的协处理器类型。假定体系中有80387,则ET被设置成1,不然若有一个80287或许没有协处理器,则ET被设置成0。
NE:(Numeric Error)协处理过错象征,关于80486及以上的CPU。当设置该象征时,就启用了x87协处理器过错的内部陈说机制;若复位该象征,那么就运用PC办法的x87协处理器过错陈说机制。当NE为复位情况并且CPU的IGNNE输入引脚有信号时,那么数学协处理器x87过错将被疏忽。当NE为复位情况并且CPU的IGNNE输入引脚无信号时,那么非屏蔽的数学协处理器x87过错将致使处理器经过FERR引脚在外部发作一个接连,并且在施行下一个等候办法浮点指令或WAIT/FWAIT指令之前马上接连指令施行。CPU的FERR引脚用于仿真外部协处理器80387的ERROR引脚,因此通常联接到接连操控器输入恳求引脚上。NE象征、IGNNE引脚和FERR引脚用于运用外部逻辑来结束PC办法的外部过错陈说机制。
启用保护办法PE(Protected Enable)位(位0)和翻开分页PG(Paging)位(位31)别离用于操控分段和分页机制。PE用于操控分段机制。假定PE=1,处理器就作业在翻开分段机制环境下,即作业在保护办法下。假定PE=0,则处理器封闭了分段机制,并好像8086作业于实地址办法下。PG用于操控分页机制。假定PG=1,则翻开了分页机制。假定PG=0,分页机制被阻遏,此刻线性地址被直接作为物理地址运用。
假定PE=0、PG=0,处理器作业在实地址办法下;假定PG=0、PE=1,处理器作业在没有翻开分页机制的保护办法下;假定PG=1、PE=0,此刻由于不在保护办法下不能启用分页机制,因此处理器会发作一个通常保护反常,即这种象征组合无效;假定PG=1、PE=1,则处理器作业在翻开了分页机制的保护办法下。
当改动PE和PG位时,有必要留神。只需当施行程序起码有有些代码和数据在线性地址空间和物理地址空间中具有一样地址时,咱们才干改动PG位的设置。此刻这有些具有一样地址的代码在分页和未分页国际之间起着桥梁的效果。不管是不是翻开分页机制,这有些代码都具一样的地址。别的,在翻开分页(PG=1)之前有必要先改写页高速缓冲TLB。在批改该了PE位往后程序有必要马上运用一条跳转指令,以改写处理器施行管道中现已获取的纷歧样办法下的任何指令。在设置PE位之前,程序有必要初始化几单个系段和操控寄存器。在体系刚上电时,处理器被复位成PE=0和PG=0(即实办法情况),以容许引导代码在启用分段和分页机制之前能够初始化这些寄存器和数据构造。
WP:(Write Proctect)写保护象征,关于Intel 80486或以上的CPU。当设置该象征时,处理器会阻遏超级用户程序(例如特权级0的程序)向用户级只读页面施行写操作;当该位复位时则反之。该象征有利于UNIX类操作体系在创立进程时结束写时仿制(Copy on Write)技能。
AM:(Alignment Mask)对齐屏蔽位。与Pentium处理器的象征寄存器中的对齐较验象征位AC联合运用,当AM为1,AC也为1且其时优先级CPL=3(用户办法)才干够施行对齐较验。AM=1标明容许对齐较验,AM=0标明不容许对齐较验。
NW:(Not Write Through)不写贯穿位,用来操控cache的功用,当NW为0时,容许写贯穿和容许cache无效操作周期。当NW位为1时,阻遏cache无效操作周期和cache射中时写贯穿。
CD:(Cache Deny)cache阻遏位,用来操控运用的是不是为片内cache。若CD=0,则Pentium的片内cache容许施行填充操作。若CD=1,即便cache不射中时,也不容许填充cache。但若拜访cache时射中,cache操作仍会正常进行。若要彻底禁用cache,则有必要将cache内容彻底成为无效内容。
PG:是不是启用分页机制。在翻开这个象征之前有必要现已或许一同翻开PE象征。即若要启用分页机制,那么PE和PG象征都要置位。
CR1由Intel保留
CR2用于保留页缺点的线性地址。
CR3用于保留其时使命的页目录地址。
5、体系地址寄存器:AR
A、大局描绘符表寄存器(48位):GDTR
用于保留大局描绘符表的32位基地址和16位鸿沟
B、接连描绘符表寄存器(48位):IDTR
用于保留接连描绘符表的32位基地址和16位鸿沟
大局描绘符表寄存器和接连描绘符表寄存器构造一同,见下图。16位鸿沟断定了大局描绘符表和接连描绘符表的巨细为64KB,每项巨细为8B,所以容许最多为8K个描绘符。

接连门描绘符构造:

各象征位解说如下:
低4字节的0-15位:为32位偏移中的0-15位。
低4字节的16-31位:使命情况描绘符挑选子,指示在使命情况描绘符(TSS使命情况段)在GDT或LDT中的方位。每逢一个门被拜访的时分,挑选子被加载在使命寄存器TR中,这么来发作一个使命切换。
高4字节的0-4位:计数(有多少个字传送到接连效劳程序的仓库上)
高4字节的16-31位:32位偏移中的16-31位。(32位的偏移指向接连效劳程序或别的程序的进口)
别的位和段描绘符对应位的意义一样。
C、有些描绘符表寄存器(16位):LDTR
用于保留有些描绘符表的挑选子,由于它是一种段寄存器(体系段寄存器),所以它也有自个的描绘符(有些)寄存器,当LDTR的挑选子改动后,LDTR所指向的描绘符将被主动加载进它的描绘符寄存器,以供重复运用。
D、使命情况寄存器:TR
用于保留使命情况段(TSS)的描绘符挑选子,它也是一种段寄存器(体系段寄存器),也有自个的描绘符(使命情况段)寄存器,当TR的挑选子改动后,它所指向的描绘符会主动被加载进它的描绘符寄存器,以供重复运用。
有些描绘符表寄存器和使命情况寄存器的构造如下:

注:这也是段寄存器的通用构造,前面是挑选子,后边是附加的描绘符寄存器。挑选子和段寄存器里边的挑选子一样。
使命情况段描绘符构造:

6、调试寄存器(32位):DR0-DR7
DR0-DR3:4个保留线性断点地址的寄存器。
DR4-DR5:备用寄存器。
DR6:调试情况寄存器,经过该寄存器的内容,能够查看反常,并容许和阻遏进行反常处理程序。
DR7:调试操控寄存器,用于规矩断点字段的长度,断点拜访类型,容许断点和容许所挑选的调试条件。
7、测验寄存器(32位):TR0-TR7
TR0-TR5:由Intel保留
TR6-TR7:用于操控TLB中的RAM和CAM相联存储器的测验
TR6:测验操控寄存器。
TR7:测验情况寄存器,用于保留测验效果。

上一篇:电荷耦合器材的功用运用

下一篇:SMD贴片蜂鸣器脚位效果差异

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部