??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 />
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-17 周学习计?/title>http://www.shnenglu.com/andxie99/archive/2006/12/17/16536.html思勤无邪思勤无邪Sun, 17 Dec 2006 00:59:00 GMThttp://www.shnenglu.com/andxie99/archive/2006/12/17/16536.htmlhttp://www.shnenglu.com/andxie99/comments/16536.htmlhttp://www.shnenglu.com/andxie99/archive/2006/12/17/16536.html#Feedback5http://www.shnenglu.com/andxie99/comments/commentRss/16536.htmlhttp://www.shnenglu.com/andxie99/services/trackbacks/16536.html 学习清华大学计算机系|络评中的汇编语言E序设计。准备花两周来学习,q周主要是理论知识,下周加以实践Q写一些Demo?/p>
12-17Q?br /> ?W一?基础知识
◇第一节 q位计数?br /> ◇第二节 不同基数的数之间的{?br /> ◇第三节 二进制数和十六进制数的运?br /> ◇第四节 数和字符的表C?
?W二?8086计算机组l?
◇第一节 80x86微处理器pd概况
◇第二节 Z8086的微计算机系l?br /> ◇第三节 8086寄存器组
◇第四节 8086微处理器的存储器理
◇第五节 外部讑֤
?W三?8086的寻址方式和指令系l?br /> ◇第一节 8086的寻址方式
◇第二节 机器语言指o的{?br /> ◇第三节 8086的指令系l?br />12-18Q?br /> ?W四?汇编语言E序格式
◇第一节 汇编E序功能
◇第二节 伪指?br /> ◇第三节 汇编语言E序格式
◇第四节 汇编语言E序的上E?br />12-19Q?br /> ?W五?循环与分支程序设计?br /> ◇第一节 循环E序设计
◇第二节 分支E序设计
12-20Q?br /> ?W六?子程序结构?br /> ◇第一节 子程序的设计Ҏ(gu)
◇第二节 嵌套与递归子程?br /> ◇第三节 子程序D?br />12-21Q?br /> ?W七?高汇编语言技术?br /> ◇第一节 宏汇~?br /> ◇第二节 重复汇编
◇第三节 条g汇编
◇第四节 高语言l构
12-22Q?br /> ?W八?输入Q输出程序设计?br /> ◇第一节 I/O讑֤的数据传送方?br /> ◇第二节 E序直接控制I/O方式
◇第三节 中断传送方?br />12-23Q?br /> ?W九(ji)?BIOS和DOS中断
◇第一节 键盘I(y)/O
◇第二节 昄器I/O
◇第三节 打印机I/O
◇第四节 串行通信口I/O
?W十?模块化程序设计?br /> ◇第一节 汇编E序概述
◇第二节 q接E序及对E序设计的要?br /> ◇第三节 汇编语言E序与高U语aE序的连?br /> ◇第四节 模块化程序设计概qW?br />下周的计划:
?W十一?80x86汇编语言介?br /> ◇第一节 80x86的寄存器l构
◇第二节 80x86的指令系l和d方式
◇第三节 80x86处理器选择伪操?br /> ◇第四节 保护模式下的80x86
◇第五节 虚拟8086QV86Q方?br /> ◇第六节 保护方式下的中断处理

]]>
˾þþþƷ|
þһ
|
ƷVIDEOSSEXþ÷|
ɫۺϾþþƷĻҳ|
þþþþùƷ|
þ¶ݺɫ|
þþþAvר|
Ʒ˾þþþҹӰ
|
뾫ƷþɪӰ|
þݺҹҹavapp|
91ƷѾþþþþþþ|
ƷۺϾþþþþ98|
Ʒ99þ|
þþƷAV|
Ʒþۺ123|
һɫþ88ۺƷ
|
91ƷùۺϾþ|
պŷۺϾþ|
þˬˬƬAV鶹|
þþƷĻ
|
ƷþòҰ|
ٸŮþۺɫ|
seguiþùƷ|
ۺϾþþþþùɫ|
ѾƷþ|
˾þۺ|
AëƬþþþƷëƬ|
Ʒþþþþר|
ޡvþþ뾫Ʒ|
þþƷAVӰԺ|
պŷƷĻþþ|
˾þ111վ|
Ʒþþþþһ|
ɫþþۺľþav|
þþþþ˸߳ӰԺ
|
þùƷƬ|
ɫɫۺϾþҹҹ|
þer99ȾƷһ|
һþ㽶߿ۿ|
þ99Ʒþþþþþþþ|
þþƷavӰԺ
|