罗云彬的Win32汇编教程.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
罗云彬的 Win32 汇编教程之一 Win32 汇编的环境和基础 1.32 位环境简介 在 Dos 下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所 有的内存, 如自己改动内存控制块来分配内存, 自己修改中断向量表来截获中断 等, 对其他操作也是如此, 如我们对键盘端口直接操作就可以把键盘屏蔽掉, 可 以这样来描述 Dos 系统: 系统只有一个特权级别,在编程上讲,任何程序和操作 系统都是同级的,所以在 Dos 下,一个编得不好的程序会影响其他所有的程序, 如一个程序把键盘口中断关掉了, 所有程序就都不能从键盘获得键入的数据, 直 到任何一个程序重新打开键盘为止, 一个程序陷入死循环, 也没有其他程序可以 把它终止掉。 Dos 下的编程思路是 任务 ”的,你只要认为你的程序会按照你的 流程一步步的执行下去, 不必考虑先后问题 (当然程序可能会被中断打断, 但你 可以认为它们会把环境恢复,如果中断程序没有把环境恢复,那是他们的错)。 在内存管理方式上, Dos 汇编和 Win32 汇编也有很多的不同: Dos 工作在实模 式下,我们可以寻址 1M 的内存,寻址时通过段寄存器来制定段的初始地址,每 个段的大小为 64K,超过 1M 的部分,就只能把他作为 XMS 使用,也就是说,只 能用作数据存放使用而无法在其中执行程序。 而 Windows 在保护模式下执行,这里所有的资源对应用程序来说都是被 护 ” 的:程序在执行中有级别之分,只有操作系统工作在最高级 --0 级中,所有应用 程序都工作在 3 级中( Ring3), 在 Ring3 中,你无法直接访问 IO 端口,无法访 问其他程序运行的内存,连向程序自己的代码段写入数据都是非法的,会在 Windows 的屏幕上冒出一个熟悉的蓝屏幕来。只有对 Ring0的程序来说,系统才 是全开放的。 在内存方面, Windows 使用了处理器的分页机制,使得对应用程序来说,所有 的内存都是 坦”的,你不必用一个段寄存器去指定段的地址,因为在保护模式 下,段寄存器的含义是不同的(可以参见 80386 手册方面的书籍) ,你可以直接 指定一个 32 位的地址来寻址 4GB 的内存。 在程序结构方面, Windows 程序也有很大的不同,它是 于消息 ”的,你可以 想象这样一个常见的 Windows 窗口,上面有几个按钮,如果你用 Dos 编程的思 路去考虑, 你会发现实现它很困难 : 鼠标移动到窗口边缘时拖动会改变窗口大小, 鼠标点击按钮时再做要做的事, 你会发现, 你的程序自开始执行后就在等待, 你 不知道鼠标先会点什么地方,实际上你是在等待所有可能的事情的发生。而在 Dos 下,你可以只顾自己先执行,需要用户输入时,再停下来,你不输入我就不 再执行,而且,我让你输入数据 A 你就不能输入数据 B。 好了,言归正传,因为以上是 Win32 编程的基础,无论对 Win32 汇编还是 VC++,它们都是一样的,下面我们来看看有关 Win32 汇编的内容。 2.Win32ASM 编译器 Win32ASM的编译器最常用的有两种: Borland 公司的 Tasm5.0和 Microsoft 的 Masm6.11 以上版本, 两种编译器各有自己的优缺点, Tasm带了一个不大不小的 Import 库,而 Masm 没有带,但 Masm 在代码的优化上面好象比 Tasm 做得好, 2 但它却不带 Import 库。看来使用哪一种编译器还是比较难选择的,但 Steve Hutchesson 给了我们一个答案,他为 Masm 建立了一个很全的 Import 库,基本 上包括了 Windows 绝大部分的 Api 函数,这些库、 include 文件和其他工具还有 Masm6.14 版本一起做成了一个 Masm32 编译器 -- Masm32V5。这样一来,我们 用汇编编程就象用 C一样方便。 因为有了 Masm32V5,所以就我个人而言,我推荐使用 的编译工具, 但 Masm 和 Tasm的宏语法有很多的不同, 格式写的。 Masm 作为 Win32ASM 我的这个教程是以 Masm 3.Masm32 的环境设置 在 Win32 编程中,

文档评论(0)

文档查询,农业合作 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体土默特左旗农特农机经销部
IP属地广西
统一社会信用代码/组织机构代码
92150121MA0R6LAH4P

1亿VIP精品文档

相关文档