文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院工具软件其它软件Win32 ASM详解 一. 基本概念
精品推荐
特别推荐
·文件比较大练兵
·不需要任何软件也能阅读Adobe PDF文章
·大智慧股票软件Level-2入门手册
·怎样汉化软件
·卸载软件完全手册 将清除进行到底
·所有的文件格式介绍
·灵图小小桌面地图赢得150万网友争相下载
·金山词霸2003新增功能及使用技巧
·虚拟个200X的光驱让游戏玩的更畅快
·手机秘籍连载
·如何在IE右键菜单中添加菜单项以及如何添加IE任务栏按钮
·所见即所得 随心所欲修改MSN
·各领域下最好的一些免费软件(翻译)
·预防软件使用中容易造成的硬盘六大“硬伤”
·清除办公系统垃圾文件步步通
·为NTFS、FAT分区制作NT和Win2k启动盘
·注册是这样产生的 幻影加密系统简介
·拒绝影响工作效率 硬盘垃圾文件大清扫
热点TOP10
·大智慧股票软件Level-2入门手册
·慧眼识金 四款智能选股软件显身手
·暑期英语学习之单词工具篇
·用上帝之眼看世界:卫星地图全攻略
·密码破解: 三大神器助您一臂之力
·同花顺2008软件评测之公式选股篇
·Camtasia Studio轻松录制教学片
·EASYTODO外贸业务管理系统
·让文本框具有四则运算功能
·怎样汉化软件
·各领域下最好的一些免费软件(翻译)
·十进制数怎样转成十六进制数?
·将PDF文件转换为TXT文件
·镜像文件编辑制作的新利器—ISO Commander
·Barts PE Builder打造系统维护光盘
·桌面革命 360Desktop软件扩展视野
·同花顺导航者之个股策略篇
·同花顺2008评测之绘图曲线分析篇
·同花顺2008评测之智能分析选股篇
·苹果大范围测试Mac OS X 10.5.3

Win32 ASM详解 一. 基本概念

日期:2005年4月24日 作者:清风网络学院 查看:[大字体 中字体 小字体]


我们先假设您已知道了如何使用MASM。如果您还不知道的话,请下载 win32asm.exe ,并请仔细研读其中所附带的文档资料。好,如果您已准备就绪,我们这就开始吧!

理论:

WIN32 程序运行在保护模式下的,保护模式的历史可以追溯到 80286。而今 80286 已成为了历史。所以我们将只把精力集中于 80386 及后续的X86 系列 CPU。Windows 把每一个 Win32 应用程序放到分开的虚拟地址空间中去运行,也就是说每一个应用程序都拥有其相互独立的 4GB 地址空间,当然这倒不是说它们都拥有 4GB 的物理地址空间,而只是说能够在 4GB 的范围内寻址。操作系统将会在应用程序运行时完成 4GB 的虚拟地址和物理内存地址间的转换。这就要求编写应用程序时必须格守 Windows 的规范,否则极易引起内存的保护模式错误。而过去的 Win16 内存模式下,所有的应用程序都运行于同一个 4GB 地址空间,它们可以彼此"看"到别的程序的内容,这极易导致一个应用程序破坏另一个应用程序甚至是操作系统的数据或代码。
和 16 位 Windows 下的把代码分成 DATA,CODE 等段的内存模式不同,WIN32 只有一种内存模式,即 FLAT 模式,意思是"平坦"的内存模式,再没有 64K 的段大小限制,所有的 WIN32 的应用程序运行在一个连续、平坦、巨大的 4GB 的空间中。这同时也意味着您无须和段寄存器打交道,您可以用任意的段寄存器寻址任意的地址空间,这对于程序员来说是非常方便的,这也使得用32位汇编语言和用C语言一样方便。 在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用完后再恢复它们,一个最显著的应用例子就是 Windows 的 CallBack 函数中。

内容:

下面的程序段是一个框架, 若您现在还不知道这些指令的确切意义的话,没关系, 随后我就会给大家详细解释。

.386
.MODEL Flat, STDCALL
.DATA
    <Your initialized data>
    ......
.DATA?
   <Your uninitialized data>
   ......
.CONST
   <Your constants>
   ......
.CODE
   <label>
    <Your code>
   .....
    end <label>

框架就这么简单,好,我现在就给您解释:

.386
这是一个汇编语言伪指令,他告诉编译器我们的程序是使用80386指令集编写的。您还可以使用 .486、.586, 但最安全的还是使用.386。对于每一种CPU有两套几乎功能相同伪指令: .386/.386P、 486/.486P、 586/.586P。 带P的指令标明您的程序中可以用特权级指令。特权级指令是保留给操作系统的,如虚拟设备驱动程序。在大多数时间,您的程序都无须运行在RING0层,故用不带后缀P的伪指令已足够了。

.MODEL FLAT,STDCALL
.MODEL 是用来指定内存模式的伪指令,在Win32下,只有一种内存模型,那就是FLAT。 STDCALL 告诉编译器参数的传递约定。参数的传递约定是指参数传达时的顺序(从左到右或从右到左)和由谁恢复堆栈指针(调用者或被调用者)。在Win16下有两种约定:C 和 PASCAL。C 约定规定参数传递顺序是从右到左,即最右边的参数最先压栈,由调用者恢复堆栈指针。

例如:为调用函数 foo ( int first_param, int second_param, int third_param ); 按C约定的汇编代码应该是这样的:

push [third_param]
push [second_param]
push [first_param]
call foo
add esp, 3 * 4 ;调用者自己恢复堆栈指针

PASCAL约定和C约定正好相反,它规定参数是从左向右传递,由被调用者恢复堆栈。Win16采用了PASCAL约定, 因为PASCAL约定产生的代码量要小。当不知道参数的个数时,C约定特别有用。如在函数wsprintf () 中, wsprintf预先并不知道要传递几个参数,所以它不知道如何恢复堆栈。STDCALL是C约定和PASCAL约定的混合体,它规定参数的传递是从右到左,恢复堆栈的工作交由被调用者。Win32只用STDCALL约定,但除了一个特例,即:wsprintf。

.DATA .DATA? .CONST .CODE
上面的四个伪指令是"分段"(SECTION)伪指令。我们上面刚讲过Win32下没有"段"(SEGMENT)的概念,但是您可以把您的程序分成不同的"分段", 一个"分段"的开始即是上一个"分段"的结束。WIN32中只有两种性质的"分段":DATA和CODE。
其中DATA"分段"又分为三种:
.DATA 其中包括已初始化的数据。

[1] [2] 下一页 




上一篇:Win API函数与断点设置

下一篇:Win32 ASM详解 二. 消息框

Win32 ASM详解 一. 基本概念 相关文章:
·局域网文件共享详解
·BIOS详解
·图文详解 Windows 2003服务器集群安装
·注册表知识:HKEY_LOCAL_MACHINE根键详解
·Linux常用命令详解
·基础知识 初级黑客安全技术命令详解
·Linux/Unix环境下的make命令详解
·图文详解:如何调整光驱激光头功率
·反恐精英CS服务器架设详解
·WinXP中常见网络与安全服务详解
Win32 ASM详解 一. 基本概念 相关软件:
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·AutoCAD2002入门与实例详解
·硬盘分区与格式化详解
·TCP-IP详解卷2:实现
·同等学力3月29日英语模考试题详解
·TCP-IP详解卷1:协议
·围棋定式详解
·MBA英语语法-词性详解
·网络端口详解
·TOEFL【语法 听力 阅读】最新全真题详解

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn