??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美久久精品一级c片片,国产亚洲精久久久久久无码,狠狠精品干练久久久无码中文字幕 http://www.shnenglu.com/andxie99/archive/2006/12/21/16687.html思勤无邪思勤无邪Thu, 21 Dec 2006 05:07:00 GMThttp://www.shnenglu.com/andxie99/archive/2006/12/21/16687.htmlhttp://www.shnenglu.com/andxie99/comments/16687.htmlhttp://www.shnenglu.com/andxie99/archive/2006/12/21/16687.html#Feedback1http://www.shnenglu.com/andxie99/comments/commentRss/16687.htmlhttp://www.shnenglu.com/andxie99/services/trackbacks/16687.htmlW?1 ?背景知识
1.1 Win32的Ygq_
1.2 Windows的特?br />1.3 必须了解的东?br />1.3.1 80x86处理器的工作模式
    80386处理器有3U工作模式:实模式、保护模式和虚拟86模式?br />    保护模式?0386处理器的主要工作模式。在此方式下Q?0386可以d4 GB的地址I间Q同Ӟ保护模式提供?038的多d、内存分늮理和优先U保护等机制?br />    虚拟86模式是ؓ了在保护模式下提供和8086处理器的兼容Q在虚拟86模式下,同样支持d切换、内存分늮理和优先U,但内存的d方式?086相同Q也是可以寻址1MB的空间?br />    1. 实模?br />    80386处理器被复位或加늚时候以实模式启动?0386处理器在实模式下的存储器d方式?086是一LQ由D寄存器的内容乘?6当做基地址Q加上段内的偏移地址形成最l的物理地址Q这时候它?2位地址U只使用了低20位。在实模式下Q?0386处理器不能对内存q行分页理Q所以指令寻址的地址是内存中实际的物理地址。在实模式下Q所有的D都是可以读、写和执行的。实模式?0386不支持优先Q所有的指o相当于工作在Ҏ(gu)U(优先U?Q,所以它可以执行所有特权指令?br />    2. 保护模式
    ?0386工作在保护模式下的时候,它的所有功能都是可用的。这?0386所有的32根地址UK可供dQ物理寻址I间高达4 GB。在保护模式下,支持内存分页机制Q提供了对虚拟内存的良好支持。在保护模式下,80386处理器还支持优先U机制。优先?个别(0U~3U)Q操作系l运行在最高的优先U?上,应用E序则运行在比较低的U别上?br />    DOS操作pȝq行于实模式下,而Windows操作pȝq行于保护模式下?br />    3. 虚拟86模式
    虚拟86模式是ؓ了在保护模式下执?086E序而设|的。虽?0386处理器已l提供了实模式来兼容8086E序Q但q时8086E序实际上只是运行得快了一点,对CPU的资源还是独占的。虚?6模式是以d形式在保护模式上执行的,?0386上可以同时支持由多个真正?0386d和虚?6模式构成的Q务。在虚拟86模式下,80386支持d切换和内存分c在Windows操作pȝ中,有一部分E序专门用来理虚拟86模式的Q务,UCؓ虚拟86理E序。ؓ了和8086E序的寻址方式兼容Q虚?6模式采用?086一Ld方式Q即用段寄存器乘?6当做基址再配合偏Ud址形成U性地址Q寻址I间? MB。但昄多个虚拟86d不能同时使用同一位置? MB地址I间Q否则会引v冲突。操作系l利用分|制将不同虚拟86d的地址I间映射C同的物理地址上去Q这h个虚?6d看v来都认ؓ自己在?? MB的地址I间?br />1.3.2 Windows的内存管?br />    1. DOS操作pȝ的内存安?br />    DOS操作pȝq行于实模式中,׃8086处理器的d范围只有1 MBQ当时系l硬件用的存储器地址被安排在高端Q地址是从A0000hQ即640 KBQ开始的384 KB中,其中有用于显C的视频~冲区和BIOS的地址I间。而在内存低端Q安排了中断向量表和BIOS数据区;剩下?00h开始到A0000hd不到640 KB的内存是操作pȝ和应用程序所能够使用的;应用E序不可能用这640 KB以外的内存。这是著名的?40KB限制”?br />

DOS Memory.JPG

    2. 80386的内存寻址机制
    因ؓ80386所有的通用寄存器都?2位的Q?32相当?GQ所以用M一个通用寄存器来间接dQ不必分D就已经可以讉K到所有的内存地址。这是不是说Q在保护模式下,D寄存器׃再有用了呢?{案是否定的。虽然在d上不再有分段的限刉题,但在保护模式下,一个地址I间是否可以被写入,可以被多优先的代码写入,是不是允许执行等涉及保护的问题就出来了。要解决q些问题Q必d一个地址I间定义一些安全上的属性。段寄存器这时就z上了用途。但是涉及属性和保护模式下段的其他参敎ͼ要表C的信息太多了,要用64位长的数据才能表C。我们把q?4位的属性数据叫做段描述W(Segment DescriptorQ。把所有段的段描述W顺序放在内存中的指定位|,l成一个段描述W表QDescriptor TableQ;而段寄存器中?6位用来做索引信息Q指定这个段的属性用D|q符表中的第几个描述W来表示。这ӞD寄存器中的信息不再是段地址了,而是D选择器(Segment SelectorQ。可以通过它在D|q符表中“选择”一个项目以得到D늚全部信息?br />    80386中引入了两个新的寄存器来理D|q符表。一个是48位的全局描述W表寄存器GDTRQ一个是16位的局部描q符表寄存器LDTR。GDTR指向的描q符表ؓ全局描述W表GDTQGlobal Descriptor TableQ。它包含pȝ中所有Q务都可用的段描述W,通常包含描述操作pȝ所使用的代码段、数据段和堆栈段的描q符及各d的LDTD늭Q全局描述W表只有一个?br />    LDTR则指向局部描q符表LDTQLocal Descriptor TableQ?0386处理器设计成每个d都有一个独立的LDT。它包含有每个Q务私有的代码Dc数据段和堆栈段的描q符Q也包含该Q务所使用的一些门描述W,如Q务门和调用门描述W等?br />    3. 80386的内存分|?br />    80386处理器把4 KB大小的一块内存当做一“页”内存,每页物理内存可以Ҏ(gu)“页目录”和“页表”,随意映射C同的U性地址上。这P可以将物理地址不连l的内存的映连CP在线性地址上视l。页表可以指定一个页面ƈ不真正映到物理内存中。这P讉Kq个늚指o会引发页异常错误。这Ӟ处理器会自动转移到页异常处理E序中去。操作系l可以在异常处理E序中将盘上的虚拟内存d内存中ƈ修改表重新映射Q然后重新执行引发异常的指o。这h令可以正常执行下厅R?br />    4. Windows的内存安?br />    如果把虚拟内存暂时先视ؓ物理内存的一部分Q从物理内存的层ơ看QWindows操作pȝ和DOS一P也是所有的内容׃n内存。但是从应用E序代码的层ơ看Q也是说从分页映射后线性地址的层ơ看Q内存的安排却不是这个样子。因为Windows是一个分时的多Q务操作系l,CPU旉被分成一个个的时间片后分配给不同E序轮流使用Q在一个程序的旉片中Q和q个E序执行无关的东西(如其他程序的代码和数据)q不需要映到U性地址中去。在物理内存中,操作pȝ和系lDLL的代码需要供每个应用E序调用Q所以在所有的旉片中都必被映射Q用L序只在自己所属的旉片内被映;而用户DLL则有选择地被映射。假讄序A和程序C都要用到xxx.dllQ那么物理内存中xxx.dll的代码在图中的时间片1和n中被映射Q其他的旉片就不需要映,当然Q物理内存中只需要一份xxx.dll的代码?br />    ?每个应用E序都有自己? GB的寻址I间。该I间可存放操作系l、系lDLL和用户DLL的代码,它们之中有各U函C应用E序调用。再除去其他的一些空_余下的是应用E序的代码、数据和可以分配的地址I间?br />    ?不同应用E序的线性地址I间是隔ȝ。虽然它们在物理内存中同时存在,但在某个E序所属的旉片中Q其他应用程序的代码和数据没有被映射到可d的线性地址中,所以是不可讉K的。从~程的角度看Q程序可以? GB的寻址I间Q而且q个I间是“私有”的?br />    ?DLLE序没有自己“私有”的I间。它们L被映到其他应用E序的地址I间中,当做其他应用E序的一部分q行。原因很单,如果它不和其他程序同属一个地址I间Q应用程序该如何调用它呢Q?br />    5. 从Win32汇编的角度看内存d
    Win32汇编中的内存讉K为用L序的代码Dc数据段和堆栈段全部预定义好了段描述W。这些段的v始地址?Q限长ؓffffffffQ所以用它们可以直接d全部? GB地址I间。程序开始执行的时候,CSQDSQES和SS都已l指向了正确的描q符Q在整个E序的生命周期内Q程序员不必改动q些D寄存器Q也不必兛_它们的值究竟是多少Q实际上是想改也改不了)?br />    1.3.3 Windows的特权保?br />    1. 80386的中断和异常
    8086?0386实模式下中断和异常的处理q程Q实模式下的中断和异常服务程序地址存放在中断向量表中。中断向量表位于物理内存00000h开始的400h字节中,共支?00h个中断向量;每个中断向量是一个xxxx:yyyy格式的地址Q占?字节。当发生n号异常或n号中断,或者执行到int n指o的时候,CPU首先到内存n×4的地方取出服务程序的地址aaaa:bbbbQ然后将标志寄存器、中断时的CS和IP压入堆栈Q接着转移到aaaa:bbbb处执行;在服务程序最后遇到iret的时候,CPU从堆栈中恢复标志寄存器,然后取出CS和IPq返回?br />    在保护模式下Q中断或异常处理往往从用户代码切换到操作pȝ代码中执行。由于保护模式下的代码有优先U之分,Z佉K优先U的代码能够安全地被低优先的代码调用,保护模式下增加了“门”的概念。“门”指向某个优先高的E序所规定的入口点Q所有优先低的E序调用优先U高的程序只能通过门重定向Q进入门所规定的入口点。保护模式下的中断和异常{服务程序也要从“门”进入,80386的门分ؓ中断门、自陷门和Q务门几种?br />    在保护模式下要表CZ个中断或异常服务E序的信息需要用8个字节,包括门的U类以及xxxx:yyyyyyyy格式的入口地址{。这l信息叫做“中断描q符”。保护模式下把所有的中断描述W放在一L成“中断描q符表”IDTQInterrupt Descriptor TableQ。IDT不再攑֜固定的地址00000h处,而是采用可编E设|的方式Q支持的中断数量也可以设|。ؓ?0386处理器引入了一个新?8位寄存器IDTR。IDTR的高32位指定了IDT在内存中的基址Q线性地址Q,?6位指定了IDT的长度,相当于指定了可以支持的中断数量?br />    2. 80386的保护机?br />    保护机制主要׃列几斚wl成Q?br />    ?D늚cd查——段的类型是由段描述W指定的Q主要属性有是否可执行,是否可读和是否可写等。而CSQDS和SS{段选择器是否能装入某种cd的段描述W是有限制的。如不可执行的段不能装入CSQ不可读的段不能装入DS与ES{数据段寄存器;不可写的D不能装入SS{。如果段cd查通不q,则处理器会生一般性保护异常或堆栈异常?br />    ?늚cd查——除了可以在D别上指定整个D|否可d外,在页表中也可以ؓ每个|定是否可写。对于特权下的执行代码Q所有的都是可写的。但对于1Q??U的代码Q还要根据页表中的R/W决定是否可写,企图对只ȝ进行写操作会生页异常?br />    ?讉K数据时的U别查——优先低的代码不能讉K优先U高的数据段?0386的段描述W中有一个DPL域(描述W优先Q,表示q个D可以被讉K的最低优先。而段选择器中含有RPL域(h优先U)Q表C当前执行代码的优先U。只有DPL在数g大于或等于RPL值的时候,该段才是可以讉K的,否则会生一般性保护异常?br />    ?控制转移的检查——在处理器中Q有很多指o可以实现控制转移Q如jmpQcallQretQint和iret{指令。但优先U低的代码不能随意{Ud优先U高的代码中Q所以遇到这些指令的时候,处理器要查{Uȝ目的位置是否合法?br />    ?指o集的查——有两类指o可以影响保护机制。第一cL改变GDTQLDTQIDT以及控制寄存器等关键寄存器的指oQ称为特权指令;W二cL操作I/O端口的指令以及cli和sti{改变中断允许的指oQ称为敏感指令。试想一下,如果用户U程序可以用sti止一切中断(包括旉中断Q,那么整个pȝ无法正常运行,所以这些指令的q行要受到限制。特权指令只能在优先U?上才能运行,而敏感指令取决于eflags寄存器中的IOPL位。只有IOPL位表C的优先U高于等于当前代码段的优先Ӟ指o才能执行?br />    ?I/O操作的保护——I/O地址也是受保护的对象。因为通过I/O操作可以l过pȝ对很多硬件进行控制?0386可以单独为I/OI间提供保护Q每个Q务有个TSSQQ务状态段Q来记录d切换的信息。TSS中有个I/O允许位图Q用来表C对应的I/O端口是否可以操作。某个I/O地址在位图中的对应数据位?则表C可以操作;如果?则还要看eflags中的IOPL位,q时只有IOPL位表C的优先U高于等于当前代码段的优先Q才允许讉K该I/O端口?br />    3. Windows的保护机?img src ="http://www.shnenglu.com/andxie99/aggbug/16687.html" width = "1" height = "1" />

思勤无邪 2006-12-21 13:07 发表评论
]]>
2006-12-17 周学习计?/title><link>http://www.shnenglu.com/andxie99/archive/2006/12/17/16536.html</link><dc:creator>思勤无邪</dc:creator><author>思勤无邪</author><pubDate>Sun, 17 Dec 2006 00:59:00 GMT</pubDate><guid>http://www.shnenglu.com/andxie99/archive/2006/12/17/16536.html</guid><wfw:comment>http://www.shnenglu.com/andxie99/comments/16536.html</wfw:comment><comments>http://www.shnenglu.com/andxie99/archive/2006/12/17/16536.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/andxie99/comments/commentRss/16536.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/andxie99/services/trackbacks/16536.html</trackback:ping><description><![CDATA[ <p>    学习清华大学计算机系|络评中的汇编语言E序设计。准备花两周来学习,q周主要是理论知识,下周加以实践Q写一些Demo?/p> <p>12-17Q?br />    ?W一?基础知识<br />        ◇第一节 q位计数?br />        ◇第二节 不同基数的数之间的{?br />        ◇第三节 二进制数和十六进制数的运?br />        ◇第四节 数和字符的表C?<br />    ?W二?8086计算机组l?<br />        ◇第一节 80x86微处理器pd概况<br />        ◇第二节 Z8086的微计算机系l?br />        ◇第三节 8086寄存器组<br />        ◇第四节 8086微处理器的存储器理 <br />        ◇第五节 外部讑֤ <br />    ?W三?8086的寻址方式和指令系l?br />        ◇第一节 8086的寻址方式<br />        ◇第二节 机器语言指o的{?br />        ◇第三节 8086的指令系l?br />12-18Q?br />    ?W四?汇编语言E序格式 <br />        ◇第一节 汇编E序功能<br />        ◇第二节 伪指?br />        ◇第三节 汇编语言E序格式<br />        ◇第四节 汇编语言E序的上E?br />12-19Q?br />    ?W五?循环与分支程序设计?br />        ◇第一节 循环E序设计<br />        ◇第二节 分支E序设计<br />12-20Q?br />    ?W六?子程序结构?br />        ◇第一节 子程序的设计Ҏ(gu)<br />        ◇第二节 嵌套与递归子程?br />        ◇第三节 子程序D?br />12-21Q?br />    ?W七?高汇编语言技术?br />        ◇第一节 宏汇~?br />        ◇第二节 重复汇编<br />        ◇第三节 条g汇编<br />        ◇第四节 高语言l构 <br />12-22Q?br />    ?W八?输入Q输出程序设计?br />        ◇第一节 I/O讑֤的数据传送方?br />        ◇第二节 E序直接控制I/O方式<br />        ◇第三节 中断传送方?br />12-23Q?br />    ?W九(ji)?BIOS和DOS中断 <br />        ◇第一节 键盘I(y)/O<br />        ◇第二节 昄器I/O<br />        ◇第三节 打印机I/O<br />        ◇第四节 串行通信口I/O <br />    ?W十?模块化程序设计?br />        ◇第一节 汇编E序概述<br />        ◇第二节 q接E序及对E序设计的要?br />        ◇第三节 汇编语言E序与高U语aE序的连?br />        ◇第四节 模块化程序设计概qW?br />下周的计划:<br />    ?W十一?80x86汇编语言介?br />        ◇第一节 80x86的寄存器l构<br />        ◇第二节 80x86的指令系l和d方式<br />        ◇第三节 80x86处理器选择伪操?br />        ◇第四节 保护模式下的80x86 <br />        ◇第五节 虚拟8086QV86Q方?br />        ◇第六节 保护方式下的中断处理 <br /> <br /></p> <img src ="http://www.shnenglu.com/andxie99/aggbug/16536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/andxie99/" target="_blank">思勤无邪</a> 2006-12-17 08:59 <a href="http://www.shnenglu.com/andxie99/archive/2006/12/17/16536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.iscrip.cn" target="_blank">˾þþþƷ</a>| <a href="http://www.gzkyzc.com.cn" target="_blank">޾þһ </a>| <a href="http://www.byrrj.cn" target="_blank">ƷVIDEOSSEXþ÷</a>| <a href="http://www.kqtao.cn" target="_blank">ɫۺϾþþƷĻҳ</a>| <a href="http://www.e510.com.cn" target="_blank">þþþþùƷ</a>| <a href="http://www.ningxue520.cn" target="_blank">þ¶ݺɫ</a>| <a href="http://www.ozxt.cn" target="_blank">þþþAvר</a>| <a href="http://www.barf1.com.cn" target="_blank">Ʒ˾þþþҹӰ </a>| <a href="http://www.girla.cn" target="_blank">뾫ƷþɪӰ</a>| <a href="http://www.zazhui.cn" target="_blank">þݺҹҹavapp</a>| <a href="http://www.sme88.cn" target="_blank">91ƷѾþþþþþþ</a>| <a href="http://www.znkt.net.cn" target="_blank">ƷۺϾþþþþ98</a>| <a href="http://www.luckpai.cn" target="_blank">޾Ʒ99þ</a>| <a href="http://www.thinkct.com.cn" target="_blank">þþƷAV</a>| <a href="http://www.chcbszxw.cn" target="_blank">Ʒþۺ123</a>| <a href="http://www.681lc.cn" target="_blank">һɫþ88ۺ޾Ʒ </a>| <a href="http://www.shzkyz.cn" target="_blank">91ƷùۺϾþ</a>| <a href="http://www.baozhilong.cn" target="_blank">պŷۺϾþ</a>| <a href="http://www.czphjs.cn" target="_blank">þˬˬƬAV鶹</a>| <a href="http://www.sanwencn.cn" target="_blank">þþƷĻ </a>| <a href="http://www.a13859701381.cn" target="_blank">ƷþòҰ</a>| <a href="http://www.iaicy.cn" target="_blank">ٸŮþۺɫ</a>| <a href="http://www.hanxuefs.com.cn" target="_blank">seguiþùƷ</a>| <a href="http://www.shedan.com.cn" target="_blank">ۺϾþþþþùɫ</a>| <a href="http://www.nuopie.cn" target="_blank">ѾƷþ</a>| <a href="http://www.lepinw.cn" target="_blank">޹˾þۺ</a>| <a href="http://www.beijianyi.cn" target="_blank">AëƬþþþƷëƬ</a>| <a href="http://www.wirja9.cn" target="_blank">Ʒþþþþר</a>| <a href="http://www.modim.cn" target="_blank">ޡvþþ뾫Ʒ</a>| <a href="http://www.asyb.com.cn" target="_blank">þþƷAVӰԺ</a>| <a href="http://www.skgv0713.cn" target="_blank">պŷ޹ƷĻþþ</a>| <a href="http://www.zhjcys.cn" target="_blank">˾þ111վ</a>| <a href="http://www.gzfbn.cn" target="_blank">Ʒþþþþһ</a>| <a href="http://www.id19.cn" target="_blank">ɫþþۺľþav</a>| <a href="http://www.571jia.cn" target="_blank">þþþþ˸߳ӰԺ </a>| <a href="http://www.fashion28.cn" target="_blank">þùƷƬ</a>| <a href="http://www.z1359.cn" target="_blank">ɫɫۺϾþҹҹ</a>| <a href="http://www.xysrsks.cn" target="_blank">þer99ȾƷһ</a>| <a href="http://www.o6uo86.cn" target="_blank">һþ㽶߿ۿ</a>| <a href="http://www.88830.com.cn" target="_blank">þ99Ʒþþþþþþþ</a>| <a href="http://www.daidai360.cn" target="_blank">þþƷavӰԺ </a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>