琢石成器[试读]
前言
前言 从Windows出现开始,汇编语言似乎在慢慢地销声匿迹,但本书可以让人放弃这个观点,其实在Win32环境下,汇编语言依然强大。 Why--为什么选择Win32汇编 选择Win32汇编的理由是什么呢? 在DOS时代,学习汇编就是学习系统底层编程的代名词,仅要成为一名入门级的汇编程序员,就需要学习从CPU结构、CPU工作方式、各种硬件的编程方法到DOS工作方式等范围很广的知识。随着Windows时代的到来,Windows像一堵巨大的墙,把我们和计算机的硬件隔离开。对于DOS的汇编程序员来说,就像在一夜之间,我们发现自己曾经学过的几乎所有的东西都被Wi... 查看全部[ 前言 ]
致谢
致谢 首先感谢我的父母亲,如果没有你们从小到大对我的培养,就没有这一切。也感谢我的妹妹,在很多关键的时候,你总是给予我很多的帮助。 感谢我的妻子小猪猪,在本书创作的时候,没有你的理解和支持,我不可能完成这样一部作品;在本书发行后的日子里,要不是你将逛街、买衣服、旅游的时间慷慨地贡献出来,并盯紧四处乱跑的小宝宝,本书就不会有多次再版的机会。 感谢我的母校浙江大学,浙大“求是创新”的校训,“实事求是、严谨踏实、奋发进取、开拓创新”的校风让我能够有一个好的学习习惯,让我在毕业以后的这么多年里能够始终有一种动力去学习最新的知识。 感谢电子工业出版社博文视点资讯有... 查看全部[ 致谢 ]
目录
目 录 基础篇 第1章 背景知识 1 1.1 Win32的软硬件平台 1 1.1.1 80x86系列处理器简史 1 1.1.2 Windows的历史 3 1.1.3 Win32平台的背后-- 1.1.3 Wintel联盟 5 1.2 Windows的特色 6 1.3 必须了解的基础知识 7 1.3.1 80x86处理器的工作模式 7 1.3.2 Windows的内存管理 9 1.3.3 Windows的特权保护 17 第2章 准备编程环境 21 2... 查看全部[ 目录 ]
2.1 Win32可执行文件的开发过程
在DOS下,生成一个可执行文件的步骤比较简单,用编译器将源程序编译为obj文件,再用链接器将obj文件链接成exe文件,不同语言的开发过程都差不多。 DOS可执行文件中的内容是由源程序中所写的代码和数据定义转换而来的。唯一的例外是带覆盖部分(Overlay)的exe文件,它在基本的exe文件后附加了一些自定义的数据,其中可执行部分的长度由文件头偏移0002h和0004h中的长度给出,该长度之后到文件实际长度这部分就是Overlay部分。这样,即使一个带覆盖的exe文件大小远远超过640 KB,在DOS下也能运行,因为操作系统只装入真正的可执行部分,然后由程序自己去读取覆盖部分的... 查看全部[ 2.1 Win32可执行文件的开发过程 ]
2.2 编译器和链接器
2.2 编译器和链接器 选择汇编编译器是开始工作的第一步。不同的编译器用法各不相同,选择合适的编译器可以为开发工作节省很多的时间。这里简单介绍几种不同系列的编译器。常用的汇编编译器有Microsoft公司的MASM系列和Borland公司的TASM系列,还有一些小公司推出的或者免费的汇编软件包。... 查看全部[ 2.2 编译器和链接器 ]
2.2.1 MASM系列
2.2.1 MASM系列 1.MASM编译器介绍 MASM是Microsoft公司推出的汇编编译器。它的版本从低到高经过了很多次的升级(微软的通病,升级补丁多如牛毛)。每次升级除了例行的错误修正外都增加了一些新的功能,以至于到最后高版本和低版本的语法和功能相差很多,向下兼容性也不好。低版本的MASM固然无法编译高版本的源程序,但高版本的MASM也可能无法正常编译低版本的源程序,如MASM 4.0写的源程序常常无法在MASM 6.x上编译成功。在使用MASM系列编译器时,如果不先搞清楚特定的语法和编译选项可以在哪个版本上用,编译中就会错误连篇。所以在这里有必要了解一下M... 查看全部[ 2.2.1 MASM系列 ]