分享
 
 
 

Windows环境下32位汇编语言程序设计

王朝百科·作者佚名  2010-05-27
窄屏简体版  字體: |||超大  

内容简介

本书从编写应用程序的角度,从“Hello World!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过70多个实例逐步深入Win32汇编语言编程的方方面面。本书作者有十多年的汇编编程经验,很清楚初学者在哪些地方会遇到问题,所以本书在系统全面地介绍Win32汇编编程的同时,也穿插了很多作者的经验之谈,使读者能够快速入门并最终熟练地写出各种Windows应用程序。

Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。

本书从编写应用程序的角度,从“Hello World!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过70多个实例逐步深入Win32汇编语言编程的方方面面。

作者简介罗云彬,软件工程师,现从事软件项目管理、软件工程实施、数据库应用等领域的工作,在Windows操作系统下的应用软件编程方面有丰富的经验,另外对Oracle数据库的管理有深入的研究,是国内为数不多的OCM证书获得者之一。

编辑推荐本书从编写应用程序的角度,从“Hello World!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过70多个实例逐步深入Win32汇编语言编程的方方面面。本书作者有十多年的汇编编程经验,很清楚初学者在哪些地方会遇到问题,所以本书在系统全面地介绍Win32汇编编程的同时,也穿插了很多作者的经验之谈,使读者能够快速入门并最终熟练地写出各种Windows应用程序。

目录第1篇 基础篇

第1章 背景知识 2

1.1 Win32的软硬件平台 2

1.1.1 80x86系列处理器简史 2

1.1.2 Windows的历史 4

1.1.3 Win32平台的背后——Wintel联盟 6

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.1 Win32可执行文件的开发过程 21

2.2 编译器和链接器 23

2.2.1 MASM系列 23

2.2.2 TASM系列 26

2.2.3 其他编译器 27

2.2.4 MASM,TASM还是NASM 28

2.2.5 我们的选择——MASM32软件包 29

2.3 创建资源 31

2.3.1 资源编译器的使用 31

2.3.2 所见即所得的资源编辑器 31

2.4 make工具的用法 33

2.4.1 make工具是什么 33

2.4.2 nmake的用法 34

2.4.3 描述文件的语法 35

2.5 获取资料 39

2.5.1 Windows资料的来源 39

2.5.2 Intel处理器资料 41

2.6 构建编程环境 41

2.6.1 IDE还是命令行 41

2.6.2 本书推荐的工作环境 42

2.6.3 尝试编译第一个程序 43

第3章 使用MASM 45

3.1 Win32汇编源程序的结构 45

3.1.1 模式定义 47

3.1.2 段的定义 49

3.1.3 程序结束和程序入口 52

3.1.4 注释和换行 52

3.2 调用API 53

3.2.1 API是什么 53

3.2.2 调用API 54

3.2.3 API参数中的等值定义 59

3.3 标号、变量和数据结构 61

3.3.1 标号 61

3.3.2 全局变量 63

3.3.3 局部变量 64

3.3.4 数据结构 67

3.3.5 变量的使用 69

3.4 使用子程序 73

3.4.1 子程序的定义 74

3.4.2 参数传递和堆栈平衡 75

3.5 高级语法 78

3.5.1 条件测试语句 78

3.5.2 分支语句 80

3.5.3 循环语句 82

3.6 代码风格 84

3.6.1 变量和函数的命名 84

3.6.2 代码的书写格式 86

3.6.3 代码的组织 87

第2篇 初级篇

第4章 第一个窗口程序 90

4.1 开始了解窗口 90

4.1.1 窗口是什么 90

4.1.2 窗口界面 91

4.1.3 窗口程序是怎么工作的 92

4.2 分析窗口程序 99

4.2.1 模块和句柄 99

4.2.2 创建窗口 101

4.2.3 消息循环 107

4.2.4 窗口过程 109

4.3 窗口间的通信 114

4.3.1 窗口间的消息互发 114

4.3.2 在窗口间传递数据 117

4.3.3 SendMessage和PostMessage函数的区别 118

第5章 使用资源 119

5.1 菜单和加速键 119

5.1.1 菜单和加速键的组成 119

5.1.2 菜单和加速键的资源定义 120

5.1.3 使用菜单和加速键 125

5.2 图标和光标 138

5.2.1 图标和光标的资源定义 138

5.2.2 使用图标和光标 139

5.3 位图 143

5.3.1 位图简介 143

5.3.2 在资源中定义位图 144

5.4 对话框 144

5.4.1 对话框简介 144

5.4.2 对话框的资源定义 146

5.4.3 使用对话框 148

5.4.4 在对话框中使用子窗口控件 151

5.5 字符串资源 173

5.6 版本信息资源 174

5.6.1 版本信息资源的定义 175

5.6.2 在程序中检测版本信息 177

5.7 二进制资源和自定义资源 178

5.7.1 使用二进制资源 178

5.7.2 使用自定义资源 179

第6章 定时器和Windows时间 181

6.1 定时器 181

6.1.1 定时器简介 181

6.1.2 定时器的使用方法 182

6.2 Windows时间 186

6.2.1 Windows时间的获取和设置 186

6.2.2 计算时间间隔 187

第7章 图形操作 189

7.1 GDI原理 189

7.1.1 GDI程序的结构 190

7.1.2 设备环境 193

7.1.3 色彩和坐标 199

7.2 绘制图形 201

7.2.1 画笔和画刷 209

7.2.2 绘制像素点 212

7.2.3 绘制图形 212

7.2.4 绘图模式 217

7.3 创建和使用位图 218

7.3.1 一个使用位图的时钟例子 218

7.3.2 创建和使用位图 229

7.3.3 使用设备无关位图 229

7.4 块传送操作 232

7.4.1 块传送方式 232

7.4.2 块传送函数 233

7.5 区域和路径 237

7.5.1 使用区域 237

7.5.2 使用路径 239

第3篇 界面篇

第8章 通用对话框 242

8.1 通用对话框简介 242

8.2 使用通用对话框 249

8.2.1 “打开”文件和“保存”文件对话框 249

8.2.2 字体选择对话框 251

8.2.3 颜色选择对话框 253

8.2.4 “查找”和“替换”文本对话框 254

8.2.5 “页面设置”对话框 257

8.2.6 “浏览目录”对话框 259

第9章 通用控件 260

9.1 通用控件简介 260

9.1.1 通用控件的分类 260

9.1.2 使用通用控件 262

9.2 使用状态栏 265

9.2.1 创建状态栏 271

9.2.2 状态栏的控制消息 272

9.2.3 在状态栏上显示菜单提示信息 274

9.3 使用工具栏 275

9.3.1 创建工具栏 283

9.3.2 工具栏的控制消息 286

9.3.3 工具栏的通知消息 288

9.4 使用Richedit控件 292

9.4.1 创建Richedit控件 304

9.4.2 Richedit控件的控制消息 306

9.4.3 Richedit控件的通知消息 315

9.5 窗口的子类化 316

9.5.1 什么是窗口的子类化 316

9.5.2 窗口子类化的实现 317

9.6 控件的超类化 323

9.6.1 什么是控件的超类化 323

9.6.2 控件超类化的实现 324

第4篇 系统篇

第10章 内存管理和文件操作 330

10.1 内存管理 330

10.1.1 内存管理基础 330

10.1.2 内存的当前状态 331

10.1.3 标准内存管理函数 333

10.1.4 堆管理函数 339

10.1.5 虚拟内存管理函数 343

10.1.6 其他内存管理函数 347

10.2 文件操作 349

10.2.1 Windows的文件I/O 349

10.2.2 创建和读写文件 350

10.2.3 查找文件 360

10.2.4 文件属性 368

10.2.5 其他文件操作 369

10.3 驱动器和目录 371

10.3.1 逻辑驱动器操作 372

10.3.2 目录操作 374

10.4 内存映射文件 376

10.4.1 内存映射文件简介 376

10.4.2 使用内存映射文件 379

第11章 动态链接库和钩子 387

11.1 动态链接库 387

11.1.1 动态链接库的概念 387

11.1.2 编写动态链接库 388

11.1.3 使用动态链接库 394

11.1.4 动态链接库中的数据共享 403

11.1.5 在VC++中使用动态链接库 404

11.2 Windows钩子 407

11.2.1 什么是Windows钩子 407

11.2.2 远程钩子的安装和使用 409

11.2.3 日志记录钩子 417

第12章 多线程 421

12.1 进程和线程 421

12.2 多线程编程 422

12.2.1 一个单线程的“问题程序” 422

12.2.2 多线程的解决方法 426

12.2.3 与线程有关的函数 430

12.3 使用事件对象控制线程 434

12.3.1 事件 435

12.3.2 等待事件 436

12.3.3 进一步改进计数程序 437

12.4 线程间的同步 440

12.4.1 产生同步问题的原因 440

12.4.2 各种用于线程间同步的对象 445

第13章 进程控制 452

13.1 环境变量和命令行参数 452

13.1.1 环境变量 452

13.1.2 命令行参数 455

13.2 执行可执行文件 461

13.2.1 方法一:Shell调用 461

13.2.2 方法二:创建进程 462

13.3 进程调试 471

13.3.1 获取运行中的进程句柄 471

13.3.2 读写进程的地址空间 478

13.3.3 调试API的使用 482

13.4 进程的隐藏 491

13.4.1 在Windows 9x中隐藏进程 491

13.4.2 Windows NT中的远程线程 493

第14章 异常处理 505

14.1 异常处理的用途 505

14.2 使用筛选器处理异常 506

14.2.1 注册回调函数 506

14.2.2 异常处理回调函数 508

14.3 使用SEH处理异常 511

14.3.1 注册回调函数 513

14.3.2 异常处理回调函数 515

14.3.3 SEH链和异常的传递 518

14.3.4 展开操作(Unwinding) 519

第5篇 应用篇

第15章 注册表和INI文件 525

15.1 注册表和INI文件简介 525

15.2 INI文件的操作 526

15.2.1 INI文件的结构 526

15.2.2 管理键值 527

15.2.3 管理小节 535

15.2.4 使用不同的INI文件 536

15.3 对注册表的操作 537

15.3.1 注册表的结构 537

15.3.2 管理子键 539

15.3.3 管理键值 550

15.3.4 子键和键值的枚举 551

15.3.5 注册表应用举例 554

第16章 WinSock接口和网络编程 558

16.1 Windows Socket接口简介 559

16.2 Windows Socket接口的使用 562

16.2.1 IP地址的转换 562

16.2.2 套接字 566

16.2.3 网络应用程序的一般工作流程 568

16.2.4 监听、发起连接和接收连接 571

16.2.5 数据的收发 574

16.2.6 一个最简单的TCP服务端程序 577

16.3 TCP应用程序的设计 583

16.3.1 通信协议和工作线程的设计 583

16.3.2 TCP聊天室例子——服务器端 593

16.3.3 TCP聊天室例子——客户端 600

16.3.4 以非阻塞方式工作的TCP聊天室客户端 607

16.3.5 其他常用函数 618

第17章 PE文件 622

17.1 PE文件的结构 622

17.1.1 概论 622

17.1.2 DOS文件头和DOS块 623

17.1.3 PE文件头(NT文件头) 625

17.1.4 节表和节 630

17.2 导入表 644

17.2.1 导入表简介 645

17.2.2 导入表的结构 647

17.2.3 查看PE文件导入表举例 649

17.3 导出表 652

17.3.1 导出表的结构 652

17.3.2 查看PE文件导出表举例 655

17.4 资源 658

17.4.1 资源简介 658

17.4.2 资源的组织方式 659

17.4.3 查看PE文件中的资源列表举例 663

17.5 重定位表 667

17.5.1 重定位表的结构 668

17.5.2 查看PE文件的重定位表举例 670

17.6 应用实例 672

17.6.1 动态获取API入口地址 672

17.6.2 在PE文件上添加执行代码 679

第18章 ODBC数据库编程 689

18.1 基础知识 689

18.1.1 数据库接口的发展历史 689

18.1.2 SQL语言 692

18.1.3 ODBC程序的流程 694

18.2 连接数据库 695

18.2.1 连接和断开数据库 695

18.2.2 连接字符串 700

18.3 数据的管理 703

18.3.1 执行SQL语句 703

18.3.2 执行结果的处理 708

18.3.3 获取结果集中的数据 710

18.3.4 事务处理 715

18.4 数据库操作的例子 717

18.4.1 结果集处理模块 718

18.4.2 例子的源代码 723

索引 734

参考文献 742

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有