琢石成器――windows环境下32位汇编语言程序设计(第三版)笔记
2011年12月20日
基础篇
第1章 背景知识 1
1.1 Win32的软硬件平台
1.1.1 80x86系列处理器简史
1.1.2 Windows的历史
1.1.3 Win32平台的背后--Wintel联盟
1.2 Windows的特色
1.3 必须了解的基础知识
1.3.1 80x86处理器的工作模式
1.3.2 Windows的内存管理
1.3.3 Windows的特权保护
第2章 准备编程环境
2.1 Win32可执行文件的开发过程
2.2 编译器和链接器
2.2.1 MASM系列
2.2.2 TASM系列
2.2.3 其他编译器
2.2.4 MASM,TASM还是NASM
2.2.5 我们的选择--MASMSDK软件包
2.3 创建资源
2.3.1 资源编译器的使用
2.3.2 所见即所得的资源编辑器
2.4 make工具的用法
2.4.1 make工具是什么
2.4.2 nmake的用法
2.4.3 描述文件的语法
2.5 获取资料
2.5.1 Windows资料的来源
2.5.2 Intel处理器资料
2.6 构建编程环境
2.6.1 IDE还是命令行
2.6.2 本书推荐的工作环境
2.6.3 尝试编译第一个程序
第3章 使用MASM
3.1 Win32汇编源程序的结构
3.1.1 模式定义
3.1.2 段的定义
3.1.3 程序结束和程序入口
3.1.4 注释和换行
3.2 调用API
3.2.1 API是什么
3.2.2 调用API
3.2.3 API参数中的等值定义
3.3 标号、变量和数据结构
3.3.1 标号
3.3.2 全局变量
3.3.3 局部变量
3.3.4 数据结构
3.3.5 变量的使用
3.4 使用子程序
3.4.1 子程序的定义
3.4.2 参数传递和堆栈平衡
3.5 高级语法
3.5.1 条件测试语句
3.5.2 分支语句
3.5.3 循环语句
3.6 代码风格
3.6.1 变量和函数的命名
3.6.2 代码的书写格式
3.6.3 代码的组织
初级篇
第4章 第一个窗口程序
4.1 开始了解窗口
4.1.1 窗口是什么
4.1.2 窗口界面
4.1.3 窗口程序是怎么工作的
4.2 分析窗口程序
4.2.1 模块和句柄
4.2.2 创建窗口
4.2.3 消息循环
4.2.4 窗口过程
4.3 窗口间的通信
4.3.1 窗口间的消息互发
4.3.2 在窗口间传递数据
4.3.3 SendMessage和PostMessage函数的区别
第5章 使用资源
5.1 菜单和加速键
5.1.1 菜单和加速键的组成
5.1.2 菜单和加速键的资源定义
5.1.3 使用菜单和加速键
5.2 图标和光标
5.2.1 图标和光标的资源定义
5.2.2 使用图标和光标
5.3 位图
5.3.1 位图简介
5.3.2 在资源中定义位图
5.4 对话框
5.4.1 对话框简介
5.4.2 对话框的资源定义
5.4.3 使用对话框
5.4.4 在对话框中使用子
5.4.4 窗口控件
5.5 字符串资源
5.6 版本信息资源
5.6.1 版本信息资源的定义
5.6.2 在程序中检测版本信息
5.7 二进制资源和自定义资源
5.7.1 使用二进制资源
5.7.2 使用自定义资源
第6章 定时器和Windows时间
6.1 定时器
6.1.1 定时器简介
6.1.2 定时器的使用方法
6.2 Windows时间
6.2.1 Windows时间的获取和设置
6.2.2 计算时间间隔
第7章 图形操作
7.1 GDI原理
7.1.1 GDI程序的结构
7.1.2 设备环境
7.1.3 色彩和坐标
7.2 绘制图形
7.2.1 画笔和画刷
7.2.2 绘制像素点
7.2.3 绘制图形
7.2.4 绘图模式
7.3 创建和使用位图
7.3.1 一个使用位图的时钟例子
7.3.2 创建和使用位图
7.3.3 使用设备无关位图
7.4 块传送操作
7.4.1 块传送方式
7.4.2 块传送函数
7.5 区域和路径
7.5.1 使用区域
7.5.2 使用路径
界面篇
第8章 通用对话框
8.1 通用对话框简介
8.2 使用通用对话框
8.2.1 “打开”文件和“保存”文件对话框
8.2.2 字体选择对话框
8.2.3 “颜色选择”对话框
8.2.4 “查找”和“替换”文本对话框
8.2.5 “页面设置”对话框
8.2.6 “浏览目录”对话框
第9章 通用控件
9.1 通用控件简介
9.1.1 通用控件的分类
9.1.2 使用通用控件
9.2 使用状态栏
9.2.1 创建状态栏
9.2.2 状态栏的控制消息
9.2.3 在状态栏上显示菜单提示信息
9.3 使用工具栏
9.3.1 创建工具栏
9.3.2 工具栏的控制消息
9.3.3 工具栏的通知消息
9.4 使用Richedit控件
9.4.1 创建Richedit控件
9.4.2 Richedit控件的控制消息
9.4.3 Richedit控件的通知消息
9.5 窗口的子类化
9.5.1 什么是窗口的子类化
9.5.2 窗口子类化的实现
9.6 控件的超类化
9.6.1 什么是控件的超类化
9.6.2 控件超类化的实现
系统篇
第10章 内存管理和文件操作
10.1 内存管理
10.1.1 内存管理基础
10.1.2 内存的当前状态
10.1.3 标准内存管理函数
10.1.4 堆管理函数
10.1.5 虚拟内存管理函数
10.1.6 其他内存管理函数
10.2 文件操作
10.2.1 Windows的文件I/O
10.2.2 创建和读写文件
10.2.3 查找文件
10.2.4 文件属性
10.2.5 其他文件操作
10.3 驱动器和目录
10.3.1 逻辑驱动器操作
10.3.2 目录操作
10.4 内存映射文件
10.4.1 内存映射文件简介
10.4.2 使用内存映射文件
第11章 动态链接库和钩子
11.1 动态链接库
11.1.1 动态链接库的概念
11.1.2 编写动态链接库
11.1.3 使用动态链接库
11.1.4 动态链接库中的数据共享
11.1.5 在VC++中使用动态
11.1.5 链接库
11.2 Windows钩子
11.2.1 什么是Windows钩子
11.2.2 远程钩子的安装和使用
11.2.3 日志记录钩子
第12章 多线程
12.1 进程和线程
12.2 多线程编程
12.2.1 一个单线程的“问题程序”
12.2.2 多线程的解决方法
12.2.3 与线程有关的函数
12.3 使用事件对象控制线程
12.3.1 事件
12.3.2 等待事件
12.3.3 进一步改进计数程序
12.4 线程间的同步
12.4.1 产生同步问题的原因
12.4.2 各种用于线程间同步的对象
第13章 过程控制
13.1 环境变量和命令行参数
13.1.1 环境变量
13.1.2 命令行参数
13.2 执行可执行文件
13.2.1 方法一:Shell调用
13.2.2 方法二:创建进程
13.3 进程调试
13.3.1 获取运行中的进程句柄
13.3.2 读写进程的地址空间
13.3.3 调试API的使用
13.4 进程的隐藏
13.4.1 在Windows 9x中隐藏进程
13.4.2 Windows NT中的远程线程
第14章 异常处理
14.1 异常处理的用途
14.2 使用筛选器处理异常
14.2.1 注册回调函数
14.2.2 异常处理回调函数
14.3 使用SEH处理异常
14.3.1 注册回调函数
14.3.2 异常处理回调函数
14.3.3 SEH链和异常的传递
14.3.4 展开操作(Unwinding)
应用篇
第15章 注册表和INI文件
15.1 注册表和INI文件简介
15.2 INI文件的操作
15.2.1 INI文件的结构
15.2.2 管理键值
15.2.3 管理小节
15.2.4 使用不同的INI文件
15.3 对注册表的操作
15.3.1 注册表的结构
15.3.2 管理子键
15.3.3 管理键值
15.3.4 子键和键值的枚举
15.3.5 注册表应用举例
第16章 WinSock接口和网络编程
16.1 Windows Socket接口简介
16.2 Windows Socket接口的使用
16.2.1 IP地址的转换
16.2.2 套接字
16.2.3 网络应用程序的一般工作流程
16.2.4 监听、发起连接和接收连接
16.2.5 数据的收发
16.2.6 一个最简单的TCP服务端程序
16.3 TCP应用程序的设计
16.3.1 通信协议和工作线程的设计
16.3.2 TCP聊天室例子--服务器端
16.3.3 TCP聊天室例子--客户端
16.3.4 以非阻塞方式工作的TCP聊天室客户端
16.3.5 其他常用函数
第17章 PE文件
17.1 PE文件的结构
17.1.1 概论
17.1.2 DOS文件头和DOS块
17.1.3 PE文件头(NT文件头)
17.1.4 节表和节
17.2 导入表
17.2.1 导入表简介
17.2.2 导入表的结构
17.2.3 查看PE文件导入表举例
17.3 导出表
17.3.1 导出表的结构
17.3.2 查看PE文件导出表举例
17.4 资源
17.4.1 资源简介
17.4.2 资源的组织方式
17.4.3 查看PE文件中的资源列表举例
17.5 重定位表
17.5.1 重定位表的结构
17.5.2 查看PE文件的重定位表举例
17.6 应用实例
17.6.1 动态获取API入口地址
17.6.2 在PE文件上添加执行
17.6.2 代码
第18章 ODBC数据库编程
18.1 基础知识
18.1.1 数据库接口的发展历史
18.1.2 SQL语言
18.1.3 ODBC程序的流程
18.2 连接数据库
18.2.1 连接和断开数据库
18.2.2 连接字符串
18.3 数据的管理
18.3.1 执行SQL语句
18.3.2 执行结果的处理
18.3.3 获取结果集中的数据
18.3.4 事务处理
18.4 数据库操作的例子
18.4.1 结果集处理模块
18.4.2 例子的源代码