本书以Windows操作系统和Intel80x86/Pentium系列CPU为背景,全面系统地介绍了32位保护模式下的汇编语言程序设计,包括Windows编程环境、Intel80x86/Pentium指令系统、MASM的伪指令与操作符等知识,以及分支、循环、子程序、C/C++混合编程、上机调试过程等程序设计方法。本书的核心是Windows下的32位保护模式编程,摒弃了过时的16位DOS实模式编程环境,与当前的软件开发和微机应用环境结合紧密。本书不但能帮助读者顺利地掌握汇编语言程序设计方法,而且能够提高读者的C/C++编程水平。书中的程序具有很强的实用性,强调C/C++和汇编语言的联合编程能力,通过这些实例与其他课程相呼应,有利于各门课程之间的融会贯通。本书适合作为高等院校汇编语言程序设计相关课程的教材或教学辅导书,也可作为希望掌握Windows汇编程序设计的中高级程序开发人员的自学参考书。本书前言前言:汇编语言是执行效率最高、功能最强的一种程序设计语言,它能够直接控制计算机硬件,并最大限度地发挥硬件的能力。在对程序的执行时间和占用空间要求很高的场合,必须使用汇编语言才能满足要求。汇编语言还可以与高级语言进行混合编程,以发挥各自的优势。通过学习汇编语言,有助于理解操作系统和应用程序的运行原理,准确地分析程序错误。它也是掌握加密/解密技术、病毒蠕虫机理、剖析关键代码等高级技术的必备基础。《汇编语言程序设计》是一门程序设计课程,然而目前许多教材仍然基于DOS系统和8086/8088之上,与十几年前的教材相比,仅仅增加了32位指令和保护模式的介绍,而核心内容仍然是DOS下的16位实模式编程。其中的BIOS/DOS功能调用、64KB内存分段结构、上机环境、16位C/汇编混合编程等已经严重落后于当前的应用环境,与国内外主流的软件开发需求严重脱节。我们认为,随着DOS逐步退出操作系统的历史舞台,这门课程的基础知识和实践环节必须与时俱进,需要从DOS下的16位实模式编程过渡到Windows下的32位保护模式编程。本书的编写就是在这样的背景下完成的。本书选择了Windows操作系统和32位Pentium微机作为平台,介绍汇编语言的基础知识和应用,达到与当前软件开发和应用环境紧密结合的目的。本书有以下几个特点。(1)从DOS过渡到Windows。不再介绍过时的BIOS/DOS功能调用和DOS执行环境,取而代之的是Windows的API和C库函数,书中所有的例子都是在Windows保护模式环境下运行的32位程序。(2)实践性强。将实践环节提前,将100多条指令贯穿于全书,全部程序都能上机调试运行,使读者能在实践中掌握汇编语言程序设计并熟悉Pentium的指令系统。尤其是将VisualC/C++作为汇编的开发环境,极大地方便了汇编程序的编写、调试和运行。将各种指令和伪操作等内容分解到全书中,逐步接触并使用这些指令,会达到循序渐进的效果。(3)与C/C++紧密结合。C/C++语言是目前的主流开发语言,往往也是汇编语言的先修课程。书中的部分C/C++程序与汇编程序相对照,在汇编程序中也调用了C库函数。这不但有利于对汇编语言的掌握,而且能够提高C/C++程序的编程水平,理解和解决在C/C++程序开发过程中遇到的结构对齐、字节序、程序运行效率、堆栈溢出、内存覆盖、系统崩溃、访问违例等问题。C/C++和汇编语言联合编程能够应用于当前实际的软件开发过程,具有很强的实践指导性。(4)介绍了保护模式的运行机制。在介绍保护模式时,使用了大量的实例以帮助读者更好地理解描述符、页表、门、任务等复杂概念,其中还介绍了一个Windows内核驱动程序。通过对Pentium保护模式的学习,能够更透彻地理解虚拟内存管理、进程环境等其他相关知识。(5)采用典型编程实例。在示例程序中采用了指针、数组、结构、链表等数据结构,以及冒泡排序、快速排序、折半查找、加密/解密等算法,既体现了汇编语言的编程特点,又具有很强的实用性。(6)知识全面。增加了MASM6.1版本的汇编高级语法等,并介绍了DLL、C库函数、WindowsAPI等内容。(7)适合自学。对部分不能在课堂上讲授的内容,可安排自学。在编写过程中,采用循序渐进的叙述方法,配以大量的实例来帮助读者对这些内容进行理解。书中的许多习题都是以例子程序为基础的,可达到举一反三的效果。Pentium指令系统中还包括浮点运算、MMX多媒体扩展、数据流SIMD扩展(SSE、SSE2)等部分,考虑到它们的使用范围较窄,由于篇幅所限,本书没有介绍这方面的内容,感兴趣的读者可以参考其他书籍。全书共分10章。第1,2,3章由张雪兰教授编写,其余各章由谭毓安副教授编写。7.4节、7.5节、8.2节、8.5节及第10章属于较高要求的内容,在教学时可以根据情况进行删减。在本书的编写过程中,不仅融合了作者多年来讲授汇编语言程序设计课程的经验,还请多位老师和同学阅读了书稿,提出了改进意见,在此深表谢意。同时,本书还参考了国内外的众多教材和资料,在此谨对这些教材和资料的原创者致谢。对书中的错误和不当之处,敬请广大读者批评指正。作者的电子邮箱是:victortan@yeah.net,欢迎通过电子邮件方式向本人索取本书的PowerPoint讲稿和其他教学资料。编者