Win32汇编语言程序设计教程
作者 : 严义 包健 周尉 编著
出版日期 : 2004-11-03
ISBN : 7-111-15330-8
定价 : 35.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 407
开本 : 16开
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书介绍Windows下的32位汇编语言程序设计方法。主要内容包括80x86处理器的基本组成、处理器的指令系统以及寻址方式、80x86处理器保护模式下的运行机制、Win32汇编程序的宏汇编的语法系统、Win32汇编语言的Windows应用程序的编程方法等。此外,本书用Win32汇编程序完成的基于WinSock的TCP/IP协议网络编程、VxD虚拟设备驱动程序设计、COM组件应用等范例都可作为实际应用的参考。
  本书适合作为高等院校相关专业汇编语言课程的教材和参考书。

图书特色

图书前言

“汇编语言程序设计”是高校计算机、自动化、机电、电子等专业必须学的一门软硬件结合的语言课程,但由于近年来教材内容大大落后于当前计算机技术的发展,因此,这门课程是否还有必要设置,以及如何改革课程内容成为各高校计算机等专业紧迫的问题之一。更有甚者,某些高校计算机等专业教师认为该课程的教材及教学内容仍然是DOS下的8086汇编语言,这不适应当前计算机技术的发展,学生也缺乏学习积极性,因而已取消了该课程。
  但是,汇编语言是一种与机器指令操作一一对应的计算机原始语言,是计算机等专业学生学习计算机基础知识必备的语言。这种语言编写出的程序代码效率最高,也是唯一能够利用计算机所有硬件特性并能直接进行控制的语言。在需要软硬件结合开发的计算机应用系统方面,尤其是计算机底层软件的设计方面,汇编语言有着其他高级语言所无法替代的作用;因此计算机等专业开设该课程是必要的。关键是汇编语言课程的教材及教学内容应跟上当前计算机技术的发展,使学生学以致用。基于这个目的,我们经过几年的调查研究,于2001年开始着手准备,对Windows下的32位汇编语言进行了3年的教学研究及试验。
  汇编语言和处理器及操作系统都是紧密相关的。随着Windows、Linux以及UNIX等多任务操作系统的出现,DOS操作系统慢慢地退出历史舞台,建立在该操作系统之上的8086汇编语言也逐渐远离了人们的视线。但8086汇编语言和Win32汇编语言又有着相似之处,比如它们都有着相同的指令系统、相同的寻址方式,只不过操作数和地址的长度不同而已,因此本书在描述Win32汇编语言的过程中希望把握该语言的这种特点,并积极地把它和8086汇编语言进行比较,使有8086汇编语言教学经验的教师能够较快地转入Win32汇编语言的教学。由于大多数学生已习惯接受Windows操作系统的内容,本书在编写过程中尽量做到使没有接触过DOS操作系统的学生也可以方便地学习Win32汇编语言。
  本书前四章着重介绍了Win32汇编语言的基础知识,第2章以80x86为代表,介绍该处理器的指令系统以及寻址方式;Windows、Linux和UNIX等多任务的操作系统都工作在80x86处理器的保护模式,而不是DOS所运行的实模式,因此在第3章介绍了80x86处理器保护模式下的运行机制,学习这些机制将大大有利于读者对Windows系统的工作机理的理解,同时这些内容也是编写Windows系统底层软件的必要知识;在第4章中,本书详细介绍了Win32汇编程序的宏汇编的语法系统。
  本书第5章开始从易到难介绍基于Win32汇编语言的Windows应用程序的编程方法,并选取了几个在程序结构上比较有特点的编程实例,比如最具Windows系统特色的窗口程序、Windows资源编程、控制台程序、动态链接库程序以及工作在零线程的虚拟设备驱动程序。Windows程序结构主要由这几种程序结构组成,其他变化只是使用不同的API函数及不同的逻辑过程而已。比如书中第5章的网络程序,仅仅在前面介绍的对话框资源编程的基础上,根据TCP/IP协议的通信规则使用了WinSock提供的API函数而已。因此,学会Win32汇编语言的这几种程序基本结构,便能编写出各种Windows应用程序。第6章中介绍用Win32汇编语言编写运行在Windows 9x系统下的VxD虚拟设备驱动程序,在实际教学中,第5章和第6章的内容可根据实际情况增加或减少。
  与本书配套的Yy-j01接口实验仪相结合可完成基于Win32汇编语言的微机原理及接口实验,通过这些实验可以进一步让学生了解汇编语言的特点,我们将另编写相应的实验指导书。另与本书配合的相关课件可以到www.hzbook.com上下载,所有书中例题程序我们都一一仔细校对,也均可在该网站上下载。为了便于教师备课及提高学生自学能力,本书不安排习题答案,需要习题答案的老师请与baojian@hzcnc.com联系,即可得到全部答案。
  在编写本书的过程中,冯建文副教授给予了很大帮助,在此表示感谢。由于本书涉及到的计算机专业知识面很广,在编写过程中我们常常为必须割舍内容与保证内容完整而困惑。编者水平有限,书中一定存在一些不妥之处,诚请广大读者指正。
  最后要说明的是,本书适合以下读者阅读:
  * 没有任何汇编语言基础的读者。
  * 想从DOS汇编语言转到Windows汇编语言的读者。
  * 在Windows系统下从事高级语言编程,而又想了解高级语言所封装的一些特性的读者。
  * 从事Windows驱动程序开发的读者。
  * 从事加密解密、病毒分析以及逆向工程的读者。

图书目录

第1章  基础知识 1
1.1  微处理器、操作系统和汇编语言的发展史 1
1.2  微处理器的内部结构和工作方式 2
1.2.1  CPU 2
1.2.2  80386的寄存器 3
1.3  80386的工作模式 8
1.3.1  实模式 8
1.3.2  保护模式 9
1.3.3  V86模式 9
1.3.4  三个模式之间的关系 10
习题一 10
第2章  80x86的指令系统和寻址方式 13
2.1  指令寻址方式 13
2.1.1  与数据相关的寻址方式 13
2.1.2  与转移地址相关的寻址方式 20
2.2  指令系统 21
2.2.1  数据传送指令 22
2.2.2  转换指令 26
2.2.3  算术指令 28
2.2.4  逻辑、移位、循环移位和位操作指令 38
2.2.5  条件测试指令 47
2.2.6  I/O指令 49
2.2.7  字符串指令 49
2.2.8  程序流控制指令 53
2.2.9  杂项指令 63
2.3  指令格式 65
2.3.1  操作码的二进制编码 66
2.3.2  寻址方式的二进制编码 67
习题二 71
第3章  80386的保护模式和Windows系统 77
3.1  基本概念 77
3.1.1  特权级 77
3.1.2  虚拟地址空间 78
3.1.3  线性地址空间 78
3.1.4  物理地址空间 79
3.1.5  保护模式下段的概念 79
3.1.6  保护模式下页的概念 80
3.2  80386保护模式下的存储管理 80
3.2.1  分段管理机制 81
3.2.2  分页管理机制 94
3.2.3  虚拟存储器 101
3.3  Windows系统下对内存数据的访问 101
3.4  保护模式下转移指令的执行过程 102
3.4.1  和控制转移相关的基本概念 103
3.4.2  任务内无特权级变化的段间转移 105
3.4.3  任务内特权级变化的段间转移 106
3.4.4  任务间的转移 108
3.5  80386保护模式的中断和异常 109
3.5.1  中断 110
3.5.2  异常 110
3.5.3  中断和异常的优先级 111
3.5.4  中断和异常的处理过程 111
3.6  Windows系统下的中断 114
3.7  80386保护模式的I/O保护 114
3.7.1  I/O特权级 114
3.7.2  I/O许可位图 115
3.7.3  I/O敏感指令 115
3.8  Windows系统下I/O指令的实现过程 116
习题三 117
第4章  MASM下的Win32汇编语言语法 119
4.1  程序框架 119
4.1.1  指令集选择 120
4.1.2  工作模式选择 120
4.1.3  区间选择 121
4.1.4  程序的起始点和结束点 122
4.1.5  注释与换行 122
4.2  数据组织 123
4.2.1  变量 123
4.2.2  数据类型 126
4.2.3  变量的访问 138
4.2.4  常量 144
4.2.5  汇编期的变量和常量 146
4.3  子程序 149
4.3.1  子程序原型定义 149
4.3.2  子程序定义 149
4.3.3  子程序调用 152
4.3.4  子程序举例 153
4.4  程序流控制 156
4.4.1  直接使用转移指令 156
4.4.2  使用高级语法伪指令 159
4.4.3  程序流控制举例 168
4.5  宏 171
4.5.1  宏的基础语法关键字 172
4.5.2  宏里面的循环指令关键字 173
4.5.3  宏里面的条件测试关键字 175
4.5.4  宏里面其他的关键字 176
4.5.5  用于字符串操作的预定义宏 178
4.5.6  宏与过程的比较 180
4.5.7  宏与TEXTEQU的比较 181
4.5.8  使用宏的好处与坏处 181
4.6  模块化程序设计 182
4.6.1  include 183
4.6.2  includelib 183
4.6.3  PUBLIC、EXTERN、EXTRN和EXTERNDEF伪指令 184
4.6.4  模块化编程的例子 184
4.7  条件汇编 187
4.7.1  [ELSE]IF 和 [ELSE]IFE 187
4.7.2  [ELSE]IFB 和 [ELSE]IFNB 187
4.7.3  [ELSE]IFDEF 和 [ELSE]IFNDEF 188
4.7.4  [ELSE]IFDIF[I] 和 [ELSE]IFIDN[I] 188
4.7.5  .ERR、.ERRB、.ERRDEF、.ERRDIF、.ERRE等 188
4.8  其他伪指令 189
4.8.1  列表文件伪指令(见附录A) 189
4.8.2  选项伪指令(见附录A) 189
4.8.3  COMMENT和ECHO 189
4.9  宏汇编(MASM)下的Win32汇编语言的所有关键字 191
4.10  实验工具的介绍和编程环境的创建 192
4.10.1  Windows环境下32位可执行文件的生成过程 192
4.10.2  编辑Win32汇编语言源文件 192
4.10.3  生成资源文件 193
4.10.4  汇编与链接 194
4.10.5  模块定义文件(.def) 197
4.10.6  Win32汇编编程工具小结 200
4.10.7  Win32汇编程序的汇编和链接方法 200
4.10.8  调试Win32汇编程序 202
4.10.9  建立编写程序的环境 208
习题四 209
第5章  用Win32汇编语言进行应用程序开发 215
5.1  基本概念 215
5.1.1  Windows API函数 215
5.1.2  句柄 217
5.1.3  模块 217
5.1.4  动态链接库 217
5.2  编写消息框程序 218
5.3  如何创建Windows下的窗口程序 220
5.3.1  消息及传递过程 220
5.3.2  回调函数 222
5.3.3  编写窗口程序 222
5.4  资源 230
5.4.1  菜单和加速键 230
5.4.2  对话框程序设计 239
5.4.3  图标和光标 263
5.4.4  位图 268
5.4.5  字体 270
5.4.6  字符串资源 270
5.4.7  版本信息资源 272
5.4.8  原始数据资源和自定义资源 281
5.4.9  在Win32汇编语言中创建资源的常用方法 283
5.5  控制台程序设计 284
5.5.1  控制台程序 284
5.5.2  用Win32汇编语言实现控制台程序 286
5.6  动态链接库编程 289
5.6.1  动态链接库 289
5.6.2  如何用Win32汇编语言来创建动态链接库 290
5.6.3  使用动态链接库 293
5.7  COM编程 299
5.7.1  COM简介 300
5.7.2  用Win32汇编语言编写COM组件程序 305
5.7.3  生成COM组件 319
5.7.4  实例 324
5.7.5  使用COM 339
5.8  网络编程 340
5.8.1  TCP/IP简介 340
5.8.2  Windows Sockets接口 343
5.8.3  用Windows Sockets接口编程 344
5.8.4  客户机/服务器模型 349
5.8.5  编程举例 350
习题五 370
第6章  用Win32汇编语言编写虚拟设备驱动程序 375
6.1  基本概念 375
6.1.1  Windows 9x系统的特点 375
6.1.2  虚拟机 375
6.1.3  VMM 376
6.1.4  VxD 378
6.2  虚拟设备驱动程序文件格式 382
6.3  VxD源程序的结构 384
6.4  用Win32汇编语言编写VxD 387
6.4.1  VxD的编程语法规则 387
6.4.2  VxD程序编写 392
6.4.3  虚拟设备驱动程序的生成 400
习题六 401
附录A  列表伪指令和选项伪指令 403
附录B  SoftICE快捷键的使用 408
附录C  ASCII码表 409
参考文献 410

教学资源推荐
作者: 朱鸣华 罗晓芳 董明 孟军 汪德刚 编著
作者: [英]理查德·伯德(Richard Bird) 著
作者: 秦维佳 侯春光 孟艳红 伞宏力
作者: 苏俊
参考读物推荐
作者: (美)Kyle Roche 著
作者: 马承志 张延鑫 张维宁 史兰 等
作者: 葛红儒 著