苏州大学计算机科学与技术学院第1页微型计算机技术课程讲义苏州大学计算机科学与技术学院第2页微型计算机技术课程讲义1.编程结构(8086)总线接口部件BIU(BusInterfaceUnit)执行部件EU(ExecutionUnit)总线接口部件BIU(BusInterfaceUnit)执行部件EU(ExecutionUnit)AHALBHBLCHCLDHCLSPBPDISI运算寄存器ALU标志寄存器控制电路执行部件(EU)总线接口部件(BIU)外部总线输入/输出控制电路CSDSSSESIP内部寄存器∑指令队列寄存器(6)16位20位16位8位苏州大学计算机科学与技术学院第3页微型计算机技术课程讲义程序员可见寄存器visibleregisters苏州大学计算机科学与技术学院第4页微型计算机技术课程讲义MultipurposeRegisters:苏州大学计算机科学与技术学院第5页微型计算机技术课程讲义苏州大学计算机科学与技术学院第6页微型计算机技术课程讲义扩展标志寄存器EFLAGS苏州大学计算机科学与技术学院第7页微型计算机技术课程讲义苏州大学计算机科学与技术学院第8页微型计算机技术课程讲义286和386以上标志位苏州大学计算机科学与技术学院第9页微型计算机技术课程讲义IA-32MemoryManagementInReal-addressmode,only1MBofmemorycanbeaddressed,from00000toFFFFF.Theprocessorcanrunonlyoneprogramatatime.InProtectedmode,theprocessorcanrunmultipleprogramsatthesametime.Itassignseachprocess(runningprogram)atotalof4GBofmemory.InVirtual-8086mode,thecomputerrunsinProtectmodeandcreatesavirtual8086machinewithown1MBaddressspacethatsimulatesan80X86computerrunninginreal-addressmode.SomeMS-DOSprogramsthatmakedirectreferencestocomputerhardwarewillnotruninthismodeunderWindowsNTand2000.苏州大学计算机科学与技术学院第10页微型计算机技术课程讲义486和Pentium以上标志位苏州大学计算机科学与技术学院第11页微型计算机技术课程讲义2.实模式存储器寻址RealMode苏州大学计算机科学与技术学院第12页微型计算机技术课程讲义段寄存器苏州大学计算机科学与技术学院第13页微型计算机技术课程讲义存储器地址的分段苏州大学计算机科学与技术学院第14页微型计算机技术课程讲义8086以上16位段寄存器和偏移寄存器DefaultSegment-OffsetRegisterCS:IP---InstructionaddressSS:SP,SS:BP---StackaddressDS:BX,DS:EDI,DS:ESI,DS:8-bitor16-bit_literal---DataaddressES:DI---Stringdestinationaddress苏州大学计算机科学与技术学院第15页微型计算机技术课程讲义80386以上32位段寄存器和偏移寄存器DefaultSegment-OffsetRegisterCS:EIP---InstructionaddressSS:ESP,SS:EBP---StackaddressDS:EAX,DS:EBX,DS:ECX,DS:EDX,DS:EDI,DS:ESI,DS:8-bit_literal,DS:32-bit_literal---DataaddressES:EDI---StringdestinationaddressFS&GSnodefault.---Generaladdress苏州大学计算机科学与技术学院第16页微型计算机技术课程讲义3.保护模式存储器寻址ProtectedMode苏州大学计算机科学与技术学院第17页微型计算机技术课程讲义Segmentregistercontainsaselectorthatselectsadescriptorfromthedescriptortable.Thedescriptorcontainsinformationaboutthesegment,e.g.,it’sbaseaddress,lengthandaccessrights.Theoffsetcanbe32-bits.苏州大学计算机科学与技术学院第18页微型计算机技术课程讲义选择符(Selector)苏州大学计算机科学与技术学院第19页微型计算机技术课程讲义全局描述符表、局部描述符表、中断描述符表苏州大学计算机科学与技术学院第20页微型计算机技术课程讲义Explanation#GDTR(GlobalDescriptorTableRegister--全局描述符表寄存器)包含描述符表基地址和界限(最大64KB,16位)。一旦进入保护工作模式时,应装入GDTR(指令LGDTQWORDPTRSRC---48位,高双字为段基地址,低字为段界限)#IDTR(InterruptDescriptorTableRegister--中断描述符表寄存器),在使用保护工作模式时,应初始化。由此指向中断描述符表,与GDTR类似。Program–InvisibleRegisters苏州大学计算机科学与技术学院第21页微型计算机技术课程讲义基地址界限访问权限TRLDTR基地址界限描述符表地址GDTRIDTR150310310110310150Program–InvisibleRegisters苏州大学计算机科学与技术学院第22页微型计算机技术课程讲义#LDTR(LocalDescriptorTableRegister--局部描述符表寄存器),局部描述符表的位置从全局描述符表中得到(由GDTR描述),对于具体的位置,将选择子装入LDTR(LLDTWORDPTRSRC,如同段寄存器),从而将基地址等装入对应的高速缓存。Program–InvisibleRegisters苏州大学计算机科学与技术学院第23页微型计算机技术课程讲义Example•GDTR利用结构类型定义伪描述符:PDESCSTRUCLIMITDW0BASEDD0PDESCENDS•DefineGDTindatasegment:VGDTRPDESC〈0FFFFH,10000000H〉Tablelengthis64KB,Baseaddressis10000000H.•Loadinstruction:LGDTQWORDPTRVGDTR苏州大学计算机科学与技术学院第24页微型计算机技术课程讲义段描述符(SegmentDescriptor)苏州大学计算机科学与技术学院第25页微型计算机技术课程讲义Baseaddress:(基地址)Startinglocationofthememorysegment.Limit:(段长)containthelastoffsetaddressofasegment,i.e.lengthofthesegmentminus1.20-bitsallowssegmentsupto1MB.Thisvalueisshiftedby12bitstotheleftwhentheG(Granularitybit)issetto1.80286段描述符高16位为全0.苏州大学计算机科学与技术学院第26页微型计算机技术课程讲义Gbit(Granularitybit粒度):WhenG=0,segmentscanbe1byteto1MBinlength.WhenG=1,segmentscanbe4KBto4GBinlength.AVbit:User(OS)definedbittoindicatethesegmentisavailable(AV=0)ornotavailable(AV=1)Dbit:Indicateshowtheinstructions(80386andup)accessregisterandmemorydatainprotectedorrealmode.WhenD=0,instructionsare16-bitinstructions,with16-bitoffsetsand16-bitregisters.Stacksareassumed16-bitwideandSPisused.WhenD=1,32-bitsareassumed.Allows8086-80286programstorun.Xbit:ReservedbyIntel.苏州大学计算机科学与技术学院第27页微型计算机技术课程讲义SegmentDescriptors:AccessRights(Byte5):苏州大学计算机科学与技术学院第28页微型计算机技术课程讲义P.60ExampleExample2-1如Base=Start=10000000H,Limit=001FFHG=0则End=Base+Limit=10000000H+001FFH=100001FFHExample2-2上例中,如G=1(Limit=Limit4K)则End=Base+Limit=10000000H+001FFXXXH=100001FFFFFH若Base=10000001H,则XXX=000HXXX=000H--FFFH苏州大学计算机科学与技术学院第29页微型计算机技术课程讲义描述符的结构类型表述DESCRIPTORSTRUCLIMITLDW0BASELDW0BASEMDB0ATTRIBUTESDW0BASEHDB0DESCRIPTORENDS苏州大学计算机科学与技术学院第30页微型计算机技术课程讲义描述符的结构类型表述例DATASDESCRIPTOR〈0FFFFH,0,10H,0F2H,0〉得LIMITL=FFFFH,BASEL=0000H,BASEM=10HATTRIBUTES=00F2H,即(G=0,LIMIT(19~16)=0H)BASEH=00H所以,段首地址为00100000H,段界限为FFFFH,即段最后地址=段首地址+段界限=10FFFFH(段为64KB)苏州大学计算机科学与技术学院第31页微型计算机技术课程讲义利用段选择子确定段基地址和段界限假设有GDT为:DUMMYDESRIPTOR〈〉DESC1DESCRIPTOR1234H,5678H,34H,92H,0DESC2DESCRIPTOR1234H,5678H,34H,93H,0DESC3DESCRIPTOR5678H,1234H,56H,98H,0DESC4DESCRIPTOR5678H,1234H,56H,99H,0DESC5DESCRIPTOR0FFFFH,0,10H,16H,0DESC6DESCRIPTOR0FFFFH,0,10H,90H,0苏州大学计算机科学与技术学院第32页微型计算机技术课程讲义利用段选择子确定段基地址和段界限•DS=0020H=0000000000100000B,则INDEX=4,TI=0表示选择第4个描述符(INDEX=0,TI=0时,有特殊用途,全局描述符从1开始,必须有DUMMYDESRIPTOR〈〉)段起始地址为561234H,段界限为5678H苏州大学计算机科学与技术学院第33页微型计算机技术课程讲义保护工作方式下的地址形成机制选择子偏移量:段机制页机制150310线性地址PG=0物理地址3232苏州大学计算机科学与技术学院第34页微型计算机技术课程讲义4.存储器分页机制MemoryPaging存储器分页机制将存储器分成长度固定的页,每页4KB。由程序产生的线性地址(linea