PC机的高级编程技术(自学).ppt
《PC机的高级编程技术(自学).ppt》由会员分享,可在线阅读,更多相关《PC机的高级编程技术(自学).ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术第第10章章PC机的高级编程技术机的高级编程技术(自学)(自学)1http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术10.1PC机机环境下软件对接口的访问层次环境下软件对接口的访问层次裸机裸机BIOS直接访问直接访问操作系统操作系统驱动程序驱动程序驱动程序驱动程序间接访问间接访问应用程序应用程序2http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/
2、现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术1.直接访问层次直接访问层次特点特点:可以直接进行内存和端口的访问,也可以:可以直接进行内存和端口的访问,也可以自行决定是否在实模式和保护模式间切换。自行决定是否在实模式和保护模式间切换。通常所有的端口和内存都是对程序员开放通常所有的端口和内存都是对程序员开放的。的。工具工具:汇编语言或:汇编语言或C语言。语言。应用应用:BIOS都是基于这种低级层次用汇编来编写都是基于这种低级层次用汇编来编写的。驱动程序也有使用这种方法的。的。驱动程序也有使用这种方法的。优点优点:能够编写速度最快,占用空间最小的有效:能够
3、编写速度最快,占用空间最小的有效代码。代码。缺点缺点:需要对硬件和接口有很熟悉的了解。:需要对硬件和接口有很熟悉的了解。要会汇编,或熟练使用要会汇编,或熟练使用C语言的指针。语言的指针。不利于增加对新设备的控制。不利于增加对新设备的控制。3http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术2.BIOS访问层次访问层次特点特点:通过:通过BIOS提供的功能调用间接地对内存提供的功能调用间接地对内存或端口访问,从而控制硬件。或端口访问,从而控制硬件。工具工具:汇编语言或:汇编语言或C语
4、言。语言。应用应用:驱动程序有些会使用这些功能调用。需要:驱动程序有些会使用这些功能调用。需要获得高效率的应用程序也采用这种方法。获得高效率的应用程序也采用这种方法。优点优点:能够编写速度较快的有效代码。:能够编写速度较快的有效代码。可以不需要编写直接对硬件进行控制的代可以不需要编写直接对硬件进行控制的代码。码。缺点缺点:需要对底层信号有所了解。:需要对底层信号有所了解。增加对新设备的控制不是很方便,但好于增加对新设备的控制不是很方便,但好于低级层次。低级层次。4http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理
5、与接口技术现代微机原理与接口技术3.驱动程序层次驱动程序层次特点特点:使用:使用BIOS功能调用和直接内存访问的方功能调用和直接内存访问的方法编写符合特定操作系统管理规范的设备法编写符合特定操作系统管理规范的设备驱动程序。驱动程序。工具工具:VC+与与DDK开发包,或第三方开发工具开发包,或第三方开发工具如如DriverStudio。应用应用:在操作系统层面上的设备控制,并为应用:在操作系统层面上的设备控制,并为应用程序提供程序提供API支持。支持。优点优点:既控制硬件,又保证操作系统的完整与安:既控制硬件,又保证操作系统的完整与安全。全。缺点缺点:需要对底层信号有所了解。:需要对底层信号有所
6、了解。需要对操作系统的各个管理模块有深入的需要对操作系统的各个管理模块有深入的了解。了解。5http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术4.应用层次应用层次特点特点:使用操作系统各种驱动程序所提供的功能:使用操作系统各种驱动程序所提供的功能调用或调用或API函数间接对硬件或内存进行访函数间接对硬件或内存进行访问。问。工具工具:VC+、Delphi、Java等。等。应用应用:编写面向终端用户的各类应用程序。:编写面向终端用户的各类应用程序。优点优点:无需对硬件控制有太多了解,只
7、需完成应:无需对硬件控制有太多了解,只需完成应用层面的工作就可以用层面的工作就可以,而且还保证操作系,而且还保证操作系统的完整与安全。统的完整与安全。缺点缺点:需要了解大量的:需要了解大量的API和功能调用函数的功和功能调用函数的功能。能。由于是间接调用,所以代码的效率和编译由于是间接调用,所以代码的效率和编译系统有很大的关系。系统有很大的关系。6http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术16位段地址位段地址16位段内偏移位段内偏移:16位段地址位段地址16位段内偏移位段内
8、偏移(左移四位)(左移四位)+20位物理地址位物理地址=6417H 0100H6417H10H+0100H=64170H+0100H=64270H采用了内存分段的办法,内存分为若干段,段的大小采用了内存分段的办法,内存分为若干段,段的大小根据需要决定,最大为根据需要决定,最大为64KB10.2.1实地址模式的存储管理(同实地址模式的存储管理(同PC/XT)10.2Pentium4的内存管理的内存管理接口直接访问接口直接访问7http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术0000
9、000A0000100000110000FFFFFF640KB常规内存常规内存384KB高端内存高端内存64KB高内存区高内存区14095MB扩展内存扩展内存存放用户程序和存放用户程序和存放用户程序和存放用户程序和DOSDOS驻留部分驻留部分驻留部分驻留部分存放显存、网卡和部分存放显存、网卡和部分存放显存、网卡和部分存放显存、网卡和部分用户的用户的用户的用户的DOSDOS驱动程序和驱动程序和驱动程序和驱动程序和BIOSBIOS存放部分存放部分存放部分存放部分DOSDOS驻留程序驻留程序驻留程序驻留程序大于大于大于大于1M1M以上的以上的以上的以上的 扩展内扩展内扩展内扩展内存,存,存,存,DO
10、SDOS下不能直接访下不能直接访下不能直接访下不能直接访问,需要用问,需要用问,需要用问,需要用XMSXMS规范使规范使规范使规范使用。可利用用。可利用用。可利用用。可利用DOSDOS调用或调用或调用或调用或BIOSBIOS调用来使用。调用来使用。调用来使用。调用来使用。8http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术10.2.2保护模式下使用的系统地址寄存器保护模式下使用的系统地址寄存器 GDTR48GDTR48位的全局描述符表寄存器位的全局描述符表寄存器位的全局描述符表寄存
11、器位的全局描述符表寄存器 全局描述符表全局描述符表32位线性地址位线性地址16位界限值位界限值 IDTR48IDTR48位的中断描述符表寄存器位的中断描述符表寄存器位的中断描述符表寄存器位的中断描述符表寄存器 中断描述符表中断描述符表32位线性地址位线性地址16位界限值位界限值 TR16TR16位的任务状态段寄存器位的任务状态段寄存器位的任务状态段寄存器位的任务状态段寄存器 TSS的的16位选择字位选择字 LDTR16LDTR16位的局部描述符选择字寄存器位的局部描述符选择字寄存器位的局部描述符选择字寄存器位的局部描述符选择字寄存器 LDT的的16位选择字位选择字9http:/ 电子发烧友 h
12、ttp:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术10.2.3保护模式下保护模式下Pentium4的段式存储管理的段式存储管理1.段式管理的地址变换段式管理的地址变换段寄存器的段寄存器的152位位偏移量偏移量4532310段描述符段描述符段表段表32位线性地址位线性地址物理物理地址地址逻辑逻辑地址地址段基址段基址PentiumPentium系列的虚拟地址空间是系列的虚拟地址空间是系列的虚拟地址空间是系列的虚拟地址空间是2 2464664TB64TB。10http:/ 电子发烧友 http:/ 电子技术论坛ht
13、tp:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术2.段描述符段描述符D7D0段界限段界限70段界限段界限158基址基址70基址基址158基址基址2316基址基址3124TYPESAVLDPLPGD/B 0段界限段界限19160123456711http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术D7D0AVLG D/B0段界限段界限1916用户的操作系统可用位用户的操作系统可用位D/B位位代码段代码段(D位位)D=1使用使用
14、32位操作系统位操作系统和和32位寻址方式位寻址方式D=0使用使用16位操作系统位操作系统和和16位寻址方式位寻址方式数据段数据段(B位位)B=1使用使用ESP寄存器,上寄存器,上限为限为FFFFFFFFHB=0使用使用SP寄存器,上寄存器,上限为限为FFFFHG=0段长以段长以1字节为单位字节为单位G=1段长以段长以4K字节为单位字节为单位D/B位位粒度位粒度位12http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术AWREDCE=0E=1S=1DPLPD7D0存在位存在位特权位特
15、权位S=1是非系统段是非系统段S=0是系统描述符是系统描述符代码段标志代码段标志数据段标志数据段标志兼容位兼容位可读位可读位访问位访问位扩展方向位扩展方向位可写位可写位非非系统段中的第系统段中的第5字节字节可执行位可执行位13http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术系统描述符中的系统描述符中的TYPE14http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术RPL
16、Ti选择符(段寄存器)选择符(段寄存器)15210索引索引Ti=1Ti=00101LDTLDTLDTGDT基址基址界限界限选择符选择符基址基址界限界限LDTRGDTR2215http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术#includestdafx.h#include#include/wtypes.hwtypes.h定义了定义了定义了定义了WORDLONG,WORDLONG,/DWORD,WORD/DWORD,WORD等数据类型等数据类型等数据类型等数据类型DWORDLONGg
17、dtr,savegdt;/下面是下面是下面是下面是GDTGDT中将创建的数据段描述符表中将创建的数据段描述符表中将创建的数据段描述符表中将创建的数据段描述符表,基地址基地址基地址基地址0X00000F00,0X00000F00,/段界限为段界限为段界限为段界限为0XFFFF,0XFFFF,优先级为优先级为优先级为优先级为3 3的在内存中的可写数据段的在内存中的可写数据段的在内存中的可写数据段的在内存中的可写数据段WORDdescriptor4=0 xFFFF,0X0F00,0XF200,0X0040;intresult10;intmain(intargc,char*argv)_asmpushe
18、bpsgdtgdtr/将将将将GDTRGDTR寄存器的内容读取到寄存器的内容读取到寄存器的内容读取到寄存器的内容读取到/gdtrgdtr开始的开始的开始的开始的6 6个字节中,其中个字节中,其中个字节中,其中个字节中,其中/前两个字节给出前两个字节给出前两个字节给出前两个字节给出GDTGDT的界限值的界限值的界限值的界限值,/高高高高4 4个字节给出个字节给出个字节给出个字节给出GDTGDT的基地址的基地址的基地址的基地址16http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术mov
19、ebp,dwordptrgdtr+2/将将将将gdtgdt的基的基的基的基/地址读到地址读到地址读到地址读到EBPEBP中中中中addebp,70h/我们选择我们选择我们选择我们选择70H70H偏移下的段描述偏移下的段描述偏移下的段描述偏移下的段描述/符(符(符(符(GDTGDT中第中第中第中第1414个描述符)个描述符)个描述符)个描述符)leaedi,savegdtmovesi,ebpmovsd/以上以上以上以上4 4条指令保存原来在条指令保存原来在条指令保存原来在条指令保存原来在70H70H偏移上偏移上偏移上偏移上movsd/的描述符的描述符的描述符的描述符movedi,ebpleaes
20、i,descriptor;movsd/把我们的数据段描述符装入把我们的数据段描述符装入把我们的数据段描述符装入把我们的数据段描述符装入70H70Hmovsd/偏移上偏移上偏移上偏移上pushesmovax,0073h/选择字为描述符偏移选择字为描述符偏移选择字为描述符偏移选择字为描述符偏移70H70H拼接上拼接上拼接上拼接上/低低低低3 3位控制位元位控制位元位控制位元位控制位元,其中其中其中其中TiTi为为为为0,0,表表表表/示访问示访问示访问示访问GDT,RPLGDT,RPL为为为为11,11,为为为为3 3级优级优级优级优/先级先级先级先级,所以就为所以就为所以就为所以就为73H73H
21、 17http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术moves,ax/ES/ES装入选择字装入选择字装入选择字装入选择字73H73Hleaedi,result/将存放输出结果的变量将存放输出结果的变量将存放输出结果的变量将存放输出结果的变量/的地址放在的地址放在的地址放在的地址放在EDIEDI中中中中moveax,1movebx,1_asmmovcx,10a1:moves:eax,eaxaddeax,4loopa1/上面上面上面上面4 4条指令将向物理地址条指令将向物理地址条指
22、令将向物理地址条指令将向物理地址/0X00000F000X00000F00处写处写处写处写1010个双字个双字个双字个双字_asmmovcx,10a2:moveax,es:ebxmovedi,eax18http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术addebx,4addedi,4loopa2/以上从物理地址以上从物理地址以上从物理地址以上从物理地址0X00000F000X00000F00/处依次读出处依次读出处依次读出处依次读出1010个数据存放在个数据存放在个数据存放在个数据
23、存放在/result/result数组中数组中数组中数组中_asmpopespopebpprintf(result=););for(inti=0;i10;i+)printf(%d,resulti););/输出结果输出结果输出结果输出结果return0;19http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术10.2.4保护模式下保护模式下Pentium4的虚拟页式存储管理的虚拟页式存储管理主存主存页框页框页面页面程序程序1程序程序2程序程序320http:/ 电子发烧友 http:/
24、 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术PGEPCE83176543210MCEPAE PSEDE TSDVMEPVI保留,缺省为全保留,缺省为全0CR4PAEPSE物理地址位数物理地址位数页面大小页面大小0032位位4KB0132位位4KB/4MB1036位位4KB1136位位4KB/2MB21http:/ 电子发烧友 http:/ 电子技术论坛http:/http:/现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术现代微机原理与接口技术4KB4KB分页方式分页方式分页方式分页方式3112
25、119876543210PWTPCD页表基地址页表基地址3112PRWUSAVLAD0页目页目录项录项PWTPCD页框基地址页框基地址3112PRWUSAVLAD页表页表项项3112119876543210P=P=出现位,出现位,出现位,出现位,US=US=用户用户用户用户/监督位,监督位,监督位,监督位,PCDPCD是页是页是页是页CacheCache禁止,禁止,禁止,禁止,D=Cache“D=Cache“脏脏脏脏”位,位,位,位,RW=RW=读读读读/写位,写位,写位,写位,PWT=PWT=页写贯穿位,页写贯穿位,页写贯穿位,页写贯穿位,A=A=访问位,访问位,访问位,访问位,AVL=AV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PC 高级 编程 技术 自学
限制150内