- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编课件11.ppt
第十一章Windows 汇编程序设计基础 11.1 Windows汇编环境 11.2 Windows汇编源程序的格式 11.3 Windows下的子程序设计与函数调用 11.4 使用VC编译调试汇编程序 11.1 Windows汇编环境 11.1.1 Windows应用程序的内存布局 11.1.2 Windows的保护机制 11.1.3 Windows下的MASM与LINK 11.1.1 Windows应用程序的内存布局 1.虚拟内存 2.“平坦”内存模式 3.段寄存器 4.内存布局 1.虚拟内存 Windows系统一般在硬盘上建立一个交换文件用做虚拟内存。 在读写这个内存地址时,CPU要通知操作系统将交换文件的内容读入物理内存。 如果内存紧张,操作系统还可以将物理内存的内容写到交换文件中,以后程序在访问这个地址时,要从交换文件中读入。 2.“平坦”内存模式 程序员在编程时可以使用的内存空间最大是4GB,而不必考虑内存的分段问题。 3.段寄存器 在Windows系统中,段寄存器仍然是16位的。他们内容就不再像实模式那样存放段首址的内容,而是存放选择符。 选择符指向一个64位的描述符,在描述符中规定了段的基地址、长度、类型、特权级等信息。 例如,在一个程序的运行过程中,各个段寄存器和其他寄存器的值为: 3.段寄存器(续) CS:EIP=001B:3017FFD2 SS:ESP=0023:0012F16C EAX EBX=00E903C8 ECX=00E903C8 EDX=00000DE4 ESI=0012F736 EDI=00000DE4 EBP=0012F180 EFLDS=0023 ES=0023 FS=003B GS=0000 再观察各个段的基地址和长度信息: :gdt 001B Sel. Type Base Limit DPL Attributes 001B Code32 FFFFFFFF 3 P RE :gdt 0023 Sel. Type Base Limit DPL Attributes 0023 Data32 FFFFFFFF 3 P RW 3.段寄存器(续) 程序中,CS=001BH,001BH是一个索引。以这个索引为依据到GDT表中去找这个段的描述符,再从描述符中获得它的基地址,长度为FFFFFFFFH。这个段的属性为RE,可读,但不可写。 DS=ES=SS=0023H,数据段和堆栈段是同一个段。数据段的属性为RW,可读可写,但不可执行。 代码段和数据/堆栈段的空间是统一的,都~FFFFFFFFH。 在这个地址空间中,一部分用来存放程序,一部分作为数据区,还有一部分作为堆栈来使用,且不重复。 4.内存布局 Windows系统将4GB内存地址空间分为两个部分:用户地址空间和系统地址空间,这两个部分各占2GB。 对于每一个任务,它的用户地址空间是独有的。 而所有的任务共享系统地址空间,操作系统内核及各种设备的驱动程序都放在系统地址空间中。 举例说明各个任务的独立地址空间 程序清单:task1.c(任务独立地址空间) 结果:main=0 random=0x0042ADB0, random=0 random=0x0042ADB0, random=27443 程序清单:task2.c(任务独立地址空间) 结果:main=0 ticks=0x00428C3C, ticks=0 ticks=0x00428C3C, ticks 举例说明各个任务的独立地址空间(续) 执行下面的命令可以编译task1.c,task2.c,生成 task1.exe,task2.exe文件。 cl task1.c cl task2.c task1.c程序中设置了一个random全局变量,用于存放获得的随机数,每次运行时这个数字是不同的。task2.c程序中设置了一个ticks全局变量,用于存放Windows启动后已运行的毫秒数,这个数字是不断变化的。 举例说明各个任务的独立地址空间(续 在“开始→运行”中输入运行c:\asm\task1.exe和c:\asm\task2.exe各两次,一共产生了4个任务。自己验证。 对task1.exe的两个任务来说,逻辑地址00408A10H表示的内存单元在两个任务中的值并不相同。这就意味着在Windows系统中,每个任务都
您可能关注的文档
最近下载
- (正式版)D-L∕T 1100.2-2013 电力系统的时间同步系统 第2部分:基于局域网的精确时间同步.docx VIP
- 标准图集-03SG610-1建筑结构隔震构造详图.pdf VIP
- 2024-2025学年中职语文基础模块 上册高教版(2023)教学设计合集.docx
- 研究生学术道德与学术规范最新版课件.pptx VIP
- 22G815 建筑结构抗浮锚杆.pdf VIP
- 2025至2030年中国疏浚工程行业市场发展现状及投资前景展望报告.docx
- 互联网信息服务算法安全自评估报告模板(算法产品提交复审材料之一).pdf VIP
- 机械加工工时定额时间标准(补充版).doc VIP
- 部编版小学五年级上册道德与法治教学课件(全册).pptx VIP
- 22G815 建筑结构抗浮锚杆.docx VIP
文档评论(0)