本书从基本的汇编知识入手,循序渐进地介绍了汇编语言的基本概念和程序设计方法,重点讲解了Windows环境下汇编语言程序设计的基本原理及其实现过程,尤其对操作系统原理的核心内容——CPU保护方式、内存管理、进程和线程等做了精辟论述,并配以图解和详细的实例,更便于读者学习.
主要面向初、中级程序设计人员和广大计算机爱好者,亦可作为培训教材使用。
第1章汇编基础知识
1.1常用寄存器
1.1.1通用寄存器
1.1.2段寄存器
1.1.3控制寄存器
1.2内存
1.2.18088的内存(实方式下)
1.2.280386的内存(保护方式下)
1.3寻址方式
1.3.1操作数的寻址方式
1.3.2指令寻址的方式
1.4汇编语言程序设计的基本规范
1.4.1汇编语句
1.4.2常用伪指令
1.4.3运算符和操作符
1.4.4编译和连接
1.4.5Debug常用命令简介
1.5常用汇编指令
1.5.1数据传送指令
1.5.2算术运算指令
1.5.3逻辑指令
1.5.4字符串操作指令
1.5.5控制转移指令
1.5.6条件字节设置指令
1.5.7位操作指令
1.5.8常用操作系统类指令
习题
第2章子程序和中断程序设计
2.1子程序设计
2.1.1子程序设计的方法
2.1.2参数的传递
2.1.3公共模块程序的设计
2.2中断程序设计
2.2.1实方式的中断处理
2.2.2常用中断介绍
习题
第3章保护方式下的程序设计
3.1描述符属性
3.1.1存储段描述符的属性
3.1.2系统段描述符的属性
31.3控制描述符的属性类型
3.2全局描述符表
3.3保护方式的中断和IDT
3.4LDTR和TR的设置
3.5控制转移与特权级检查
3.61MB以外内存的使用
3.7保护方式的进入和退出
3.8分页管理机制
3.8.1分页的基本概念
3.8.2页目录表、页表
3.8.3线性地址到物理地址的转换
3.8.4分页机制的启动和关闭
3.8.5页的保护机制
3.8.6注意事项
3.9如何调用实方式子程序
习题
第4章W:ndOWS汇编语言概论
4.1Windows程序设计的特点
4.2MASM32宏汇编
4.3MASM32的高级语法
4.4编译和连接
4.5源程序框架
4.6注意事项
习题
第5章窗口程序
5.1窗口的概念
5.2窗口程序的用户接口
5.3窗口源程序的说明
5.3.1主程序
5.3.2主窗口程序
5.3.3消息处理程序
5.4窗口菜单
5.4.1窗口菜单的创建方法
5.4.2菜单命令的处理
5.4.3菜单资源的利用
习题
第6章图文输出
6.1图形输出
6.1.1图形刷新
6.1.2设备环境
6.1.3相关绘图操作
6.2坐标的映射模式
6.2.1窗口与视口
6.2.2MMTEXT模式
6.2.3固定比例的映射模式
6.2.4可变比例的映射模式
6.3内存设备环境与位图
6.3.1位图的建立和使用
6.3.2内存设备环境的使用方法
6.4文本输出
6.4.1ANSI和UNICODE字符集
6.4.2字体
6.4.3文本输出
习题
第7章预定义类窗口程序
71标准控件
7.1.1标准控件概论
7.1.2按钮控件
7.1.3编辑框控件
7.1.4静态控件
7.1.5列表框控件
7.1.6组合框控件
7.1.7滚动条控件
7.1.8窗口的子类化
7.1.9窗口的超类化
7.2通用控件
7.2.1通用控件概论
7.2.2工具栏、工具栏提示、状态条
7.2.3树形视图控件
7.2.4列表视图控件
7.3多文档界面(MDI)
7.3.1MDI概论
7.3.2相关窗口的建立
7.3.3MDI的消息
7.3.4MDI菜单
7.3.5MDI加速键的处理
习题
第8章对话框程序
8.1对话框概论
8.2弹出式对话框
8.3对话框主窗口
8.4对话框模板结构
8.5属性表单-
8.6通用对话框
习题
第9章内存管理和文件操作
9.1Windows内存管理
9.1.1Windows下进程地址空间情况
9.1.2获得操作特权
9.1.3虚拟地址空间
9.1.4申请虚拟地址空间
9.1.5栈与堆
9.1.6合理使用内存空间
9.2内存映射文件
9.3文件读写的其他方法
习题-
第10章进程、线程和动态连接库
10.1进程
10.1.1进程的概念和建立方法
10.1.2控制台
10.1.3管道用于进程间通信
10.1.4遍历系统中的进程
10.2顶层窗口
10.3线程
10.3.1线程的概念和建立方法
10.3.2线程同步
10.4定时器
10.5动态连接库
10.5.1动态连接库的基本概念
10.5.2动态连接库模块的编写
10.5.3动态连接库中函数的调
10.6遍历系统中的模块
习题
第11章Internet程序设计
11.1网络基础
11.1.1网络协议
11.1.2字节顺序
11.1.3环形地址和域名设置
11.2Winsock接口及相关函数
11.2.1Winsock的概念
11.2.2套接字编程步骤
11.2.3其他相关函数
11.3网络编程实例
11.4RichEdit控件的说明
习题
第12章0DBC数据库编程
12.1ODBC概论
12.2ODBC设计的基本方法
习题
第13章综合自测题
Windows汇编语言是了解Windows接口的最好方式,是剖析其他高级语言(VC、VB、Delphi等)封装机制的一把“利刃”,是精通这些高级语言的基础。再者,从加密和解密的角度来看,必须具备汇编知识才能实现。当然,掌握汇编语言在提高程序和系统的性能方面将能做到更加出色。本书涉及Windows编程的基本知识。
各种窗口程序及其作用机制。“窗口”是Windows系统的基本元素,是窗口类的实例化。窗口类包括自定义类和预定义类两种,类必须先注册才能使用。基于事件的消息是实现窗口功能的主要方式,有一套完整的处理机制。在窗口程序中可以嵌套控件子窗口和调用各种资源,如菜单、对话框、位图等。窗口之间通过发送消息进行通信。
Windows内存管理和文件操作。Windows内存管理采用分页机制,既能隔离任务,又能实现共享。Windows内存主要由虚拟内存、物理存储器、物理内存三部分构成。文件读写主要在内存中进行,内存映射文件是进程间共享数据的有效方式。
进程、线程和动态连接库。进程的地址空间是独立的,进程间除内存映射文件外,还可利用管道等进行通信。线程是进程的基本构成单位,是进程惟一的执行单元,是多路同时执行的子程序。线程同步是线程的重点和难点,有着广泛的用途。DLL模块的代码和资源动态映射到进程地址空间,并且其基地址都相对固定。进程或者线程调用DLL代码、资源时,DLL入口函数的处理方式因调用原因而异。遍历进程中映射的模块或者模块映射的进程需要取得操作特权,获得系统快照才可完成。
网络程序设计。基于TCP/IP协议的WinSock是Windows网络编程的标准接口,可根据需要选择不同的连接方式。线程技术在网络通信领域应用较广,并可实现同步操作。
ODBC数据库编程。ODBC采用层次结构,是不限于数据库类型的一种接口方式,远程或本地都可以。游标驱动是数据库记录定位和进行定位更新、删除等操作的有效方法。
为帮助读者掌握完整的汇编知识,精通指令和寻址方式,本书第1、2章讲述了汇编的基础知识。自Intel公司的80386CPU推出后,微机领域发生了革命性变化。386的保护方式实现虚拟地址一线性地址一物理页地址的寻址过程,为Windows的诞生创造了条件。本书第3章详细介绍了CPU保护方式原理,并提供了完整的实例,这是了解Windows汇编原理的基础(尤其是内存管理机制)。
Windows汇编的运行平台是Win32操作系统(Windows 9X/Me/NT/2K/XP,特殊情况另有说明),编译器是MASM32,而TASM编译器则是第1~3章示例需要的。
本书中程序源代码有些仅例示与程序功能有关的主要片段,读者可从下列网站中下载本书所涉及的完整源代码,所有源代码都经笔者一一测试,确保无误。另外,本书所涉及的编译器、连接器等也在网站中一并提供。
http://www,tup.com.cn/asm386(教育网用户)
http://www,asm386.com(电信用户)
源程序解压后,每个源程序位于各自的目录下
如chapter2—1表示第2章的示例1(即
例2.1),该目录下有Proframe,asm源程序。
如下载不畅或有其他疑问,请发Mail:wzp_sh@citiz.net或wzp_sh@people.com.cn。
因作者水平有限,错误在所难免,恳请读者赐教。
吴中平 于上海
2004年8月