《Windows环境下32位汇编语言程序设计(典藏版) 》
基本信息
作者: 罗云彬
出版社:电子工业出版社
ISBN:9787121207594
上架时间:2013-7-8
出版日期:2013 年7月
开本:16开
页码:756
版次:1-1
所属分类:计算机
内容简介
计算机书籍
windows环境下32位汇编语言是一种全新的编程语言。它使用与c++语言相同的api接口,不仅可以开发出大型的软件,而且是了解操作系统运行细节的最佳方式。
《windows环境下32位汇编语言程序设计(典藏版)》从编写应用程序的角度,从“hello,world!”这个简单的例子开始到编写多线程、注册表和网络通信等复杂的程序,通过70多个实例逐步深入windows环境下32位汇编语言编程的方方面面。
作者罗云彬拥有10余年汇编语言编程经验,本书是作者多年来编程工作的总结,适合于欲通过windows环境下32汇编语言编写windows程序的读者。
目录
《windows环境下32位汇编语言程序设计(典藏版)》
基础篇
第1章 背景知识1
1.1 win32的软硬件平台1
1.1.1 80x86系列处理器简史1
1.1.2 windows的历史3
1.1.3 win32平台的背后——wintel联盟5
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系列27
2.2.3 其他编译器28
2.2.4 masm,tasm还是nasm29
2.2.5 我们的选择——masm32 sdk软件包30
.2.3 创建资源32
2.3.1 资源编译器的使用32
2.3.2 所见即所得的资源编辑器32
2.4 make工具的用法34
2.4.1 make工具是什么34
2.4.2 nmake的用法35
2.4.3 描述文件的语法36
2.5 获取资料40
2.5.1 windows资料的来源40
2.5.2 intel处理器资料42
2.6 构建编程环境42
2.6.1 ide还是命令行43
2.6.2 本书推荐的工作环境43
2.6.3 尝试编译第一个程序45
第3章 使用masm47
3.1 win32汇编源程序的结构47
3.1.1 模式定义49
3.1.2 段的定义51
3.1.3 程序结束和程序入口54
3.1.4 注释和换行54
3.2 调用api55
3.2.1 api是什么55
3.2.2 调用api56
3.2.3 api参数中的等值定义61
3.3 标号、变量和数据结构63
3.3.1 标号63
3.3.2 全局变量65
3.3.3 局部变量66
3.3.4 数据结构69
3.3.5 变量的使用71
3.4 使用子程序75
3.4.1 子程序的定义76
3.4.2 参数传递和堆栈平衡77
3.5 高级语法79
3.5.1 条件测试语句80
3.5.2 分支语句81
3.5.3 循环语句83
3.6 代码风格85
3.6.1 变量和函数的命名86
3.6.2 代码的书写格式88
3.6.3 代码的组织89
初级篇
第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 消息循环108
4.2.4 窗口过程110
4.3 窗口间的通信115
4.3.1 窗口间的消息互发115
4.3.2 在窗口间传递数据119
4.3.3 sendmessage和postmessage函数的区别119
第5章 使用资源121
5.1 菜单和加速键121
5.1.1 菜单和加速键的组成121
5.1.2 菜单和加速键的资源定义122
5.1.3 使用菜单和加速键128
5.2 图标和光标140
5.2.1 图标和光标的资源定义141
5.2.2 使用图标和光标141
5.3 位图145
5.3.1 位图简介145
5.3.2 在资源中定义位图146
5.4 对话框147
5.4.1 对话框简介147
5.4.2 对话框的资源定义149
5.4.3 使用对话框151
5.4.4 在对话框中使用子窗口控件154
5.5 字符串资源177
5.6 版本信息资源178
5.6.1 版本信息资源的定义179
5.6.2 在程序中检测版本信息181
5.7 二进制资源和自定义资源183
5.7.1 使用二进制资源183
5.7.2 使用自定义资源184
第6章 定时器和windows时间185
6.1 定时器185
6.1.1 定时器简介185
6.1.2 定时器的使用方法186
6.2 windows时间190
6.2.1 windows时间的获取和设置190
6.2.2 计算时间间隔191
第7章 图形操作193
7.1 gdi原理193
7.1.1 gdi程序的结构194
7.1.2 设备环境197
7.1.3 色彩和坐标203
7.2 绘制图形205
7.2.1 画笔和画刷212
7.2.2 绘制像素点216
7.2.3 绘制图形216
7.2.4 绘图模式221
7.3 创建和使用位图222
7.3.1 一个使用位图的时钟例子222
7.3.2 创建和使用位图232
7.3.3 使用设备无关位图233
7.4 块传送操作235
7.4.1 块传送方式236
7.4.2 块传送函数237
7.5 区域和路径241
7.5.1 使用区域241
7.5.2 使用路径243
界面篇
第8章 通用对话框245
8.1 通用对话框简介245
8.2 使用通用对话框252
8.2.1 “打开”文件和“保存”文件对话框252
8.2.2 字体选择对话框254
8.2.3 “颜色”选择对话框256
8.2.4 “查找”和“替换”文本对话框257
8.2.5 “页面设置”对话框260
8.2.6 “浏览目录”对话框261
第9章 通用控件262
9.1 通用控件简介262
9.1.1 通用控件的分类262
9.1.2 使用通用控件263
9.2 使用状态栏268
9.2.1 创建状态栏273
9.2.2 状态栏的控制消息274
9.2.3 在状态栏上显示菜单提示信息276
9.3 使用工具栏277
9.3.1 创建工具栏284
9.3.2 工具栏的控制消息287
9.3.3 工具栏的通知消息290
9.4 使用richedit控件294
9.4.1 创建richedit控件305
9.4.2 richedit控件的控制消息307
9.4.3 richedit控件的通知消息317
9.5 窗口的子类化318
9.5.1 什么是窗口的子类化318
9.5.2 窗口子类化的实现319
9.6 控件的超类化325
9.6.1 什么是控件的超类化325
9.6.2 控件超类化的实现325
系统篇
第10章 内存管理和文件操作330
10.1 内存管理330
10.1.1 内存管理基础330
10.1.2 内存的当前状态331
10.1.3 标准内存管理函数333
10.1.4 堆管理函数338
10.1.5 虚拟内存管理函数343
10.1.6 其他内存管理函数347
10.2 文件操作348
10.2.1 windows的文件i/o348
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 目录操作375
10.4 内存映射文件377
10.4.1 内存映射文件简介377
10.4.2 使用内存映射文件379
第11章 动态链接库和钩子388
11.1 动态链接库388
11.1.1 动态链接库的概念388
11.1.2 编写动态链接库389
11.1.3 使用动态链接库395
11.1.4 动态链接库中的数据共享404
11.1.5 在vc++中使用动态链接库405
11.2 windows钩子408
11.2.1 什么是windows钩子408
11.2.2 远程钩子的安装和使用410
11.2.3 日志记录钩子418
第12章 多线程422
12.1 进程和线程422
12.2 多线程编程423
12.2.1 一个单线程的“问题程序”423
12.2.2 多线程的解决方法427
12.2.3 与线程有关的函数431
12.3 使用事件对象控制线程435
12.3.1 事件436
12.3.2 等待事件437
12.3.3 进一步改进计数程序439
12.4 线程间的同步441
12.4.1 产生同步问题的原因441
12.4.2 各种用于线程间同步的对象446
第13章 过程控制454
13.1 环境变量和命令行参数454
13.1.1 环境变量454
13.1.2 命令行参数457
13.2 执行可执行文件462
13.2.1 方法一:shell调用462
13.2.2 方法二:创建进程464
13.3 进程调试473
13.3.1 获取运行中的进程句柄473
13.3.2 读写进程的地址空间480
13.3.3 调试api的使用484
13.4 进程的隐藏494
13.4.1 在windows 9x中隐藏进程494
13.4.2 windows nt中的远程线程495
第14章 异常处理508
14.1 异常处理的用途508
14.2 使用筛选器处理异常509
14.2.1 注册回调函数509
14.2.2 异常处理回调函数511
14.3 使用seh处理异常515
14.3.1 注册回调函数516
14.3.2 异常处理回调函数518
14.3.3 seh链和异常的传递521
14.3.4 展开操作(unwinding)523
应用篇
第15章 注册表和ini文件527
15.1 注册表和ini文件简介527
15.2 ini文件的操作528
15.2.1 ini文件的结构528
15.2.2 管理键值529
15.2.3 管理小节537
15.2.4 使用不同的ini文件538
15.3 对注册表的操作539
15.3.1 注册表的结构539
15.3.2 管理子键541
15.3.3 管理键值552
15.3.4 子键和键值的枚举553
15.3.5 注册表应用举例557
第16章 winsock接口和网络编程560
16.1 windows socket接口简介561
16.2 windows socket接口的使用564
16.2.1 ip地址的转换564
16.2.2 套接字568
16.2.3 网络应用程序的一般工作流程571
16.2.4 监听、发起连接和接收连接574
16.2.5 数据的收发577
16.2.6 一个最简单的tcp服务端程序580
16.3 tcp应用程序的设计586
16.3.1 通信协议和工作线程的设计587
16.3.2 tcp聊天室例子——服务器端596
16.3.3 tcp聊天室例子——客户端604
16.3.4 以非阻塞方式工作的tcp聊天室客户端611
16.3.5 其他常用函数622
第17章 pe文件626
17.1 pe文件的结构626
17.1.1 概论626
17.1.2 dos文件头和dos块627
17.1.3 pe文件头(nt文件头)629
17.1.4 节表和节634
17.2 导入表649
17.2.1 导入表简介649
17.2.2 导入表的结构651
17.2.3 查看pe文件导入表举例654
17.3 导出表657
17.3.1 导出表的结构657
17.3.2 查看pe文件导出表举例660
17.4 资源663
17.4.1 资源简介663
17.4.2 资源的组织方式664
17.4.3 查看pe文件中的资源列表举例668
17.5 重定位表672
17.5.1 重定位表的结构673
17.5.2 查看pe文件的重定位表举例675
17.6 应用实例677
17.6.1 动态获取api入口地址677
17.6.2 在pe文件上添加执行代码684
第18章 odbc数据库编程694
18.1 基础知识694
18.1.1 数据库接口的发展历史694
18.1.2 sql语言697
18.1.3 odbc程序的流程699
18.2 连接数据库700
18.2.1 连接和断开数据库700
18.2.2 连接字符串706
18.3 数据的管理709
18.3.1 执行sql语句709
18.3.2 执行结果的处理714
18.3.3 获取结果集中的数据716
18.3.4 事务处理721
18.4 数据库操作的例子723
18.4.1 结果集处理模块724
18.4.2 例子的源代码729
参考文献740
附录a、b、c(见本书配套光盘)
- Windows环境下32位汇编语言程序设计(典藏版)
Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 756页 1 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(9)ANSII字符大小写转大写
在罗云彬的<Windows环境下32位汇编语言程序设计>中第321页 ... .const szAllowedChar db '0123456789ABCDEFabcdef',08h .. ...
- Windows环境下32位汇编语言程序设计笔记-基础篇
内存模式 .386 .model flat,stdcall ;子程序调用模式,win32中只能用stdcall,因为win32api调用使用的这个 option casemap:none ;定义了程序 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(2)配置环境
一直想买本罗云彬的Win32汇编书,现在终于出典藏版了,就买了本,读一读,涨涨姿势. 我把笔记本光驱拆下来添加了个硬盘,现在想装回去发现坏了,所以守着CD盘,代码却用的是第三版的,这真是个悲剧啊. - ...
- 读书笔记——Windows环境下32位汇编语言程序设计(13)关于EXCEPTION_DEBUG_INFO结构体
在动手自己尝试编写书上第13章的例子Patch3时,遇到了一个结构体EXCEPTION_DEBUG_INFO. 这个结构体在MASM的windows.inc中的定义和MSDN中的定义不一样. (我使用 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(6)使用浮点指令进行64位除法
罗云彬 典藏版Page192,mark下. 这段代码看不懂,手册上根本没有fdivr不带操作数的指令. .data dqTickCounter1 dq ? dqTickCounter2 dq ? dq ...
- 读书笔记——Windows环境下32位汇编语言程序设计(5)模态对话框
资源可以用VC之类的生成,然后拷贝出来. 例如:每一个MFC工程都有一个resource.h,没有做任何修改时,这个resource.h文件是原来自带的.当对资源进行过修改添加之类的时,新添加的资源的 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(3)一些基础知识
声明函数用proto 定义函数用proc 局部变量只能定义,不能赋初值,类型不能用缩写. 全局变量可以定义的时候赋初值,默认值为0. 在invoke中,参数可以使用addr取址. sizeof 字节长 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(3)求复数模的子程序
3.6.1.1中的例子 _Calc proc _dwX,_dwY local @dwResult finit fild _dwX fld st(0) fmul ;i*i fild _dwY fld s ...
随机推荐
- MYSQL5.5源码安装 linux下
/* 首先安装必要的库 */ yum -y install gcc* ###### 安装 MYSQL ###### 首先安装camke 一.支持YUM,则 yum install -y cmake 二 ...
- Microsoft .NET Native
首页: https://msdn.microsoft.com/en-US/vstudio/dotnetnative
- 让IE6支持css3,让 IE7、IE8 都支持CSS3
但凡是前端工程师,都知道IE6,IE7,IE8不支持.或者不完全支持CSS3的属性. CSS3 有很多很强大.绚丽的效果,比如,圆角,阴影,渐变透明,渐变背景,等等. 因为IE6时代,没有什么标准,而 ...
- HDU 3669 Cross the Wall(斜率DP+预处理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3669 题目大意:有n(n<=50000)个矩形,每个矩形都有高和宽,你可以在墙上最多挖k个洞使得 ...
- 在Redis集群中使用pipeline批量插入
在Redis集群中使用pipeline批量插入 由于项目中需要使用批量插入功能, 所以在网上查找到了Redis 批量插入可以使用pipeline来高效的插入, 示例代码如下: Pipeline p = ...
- 【JBPM4】任务节点-任务分配assignment-Handler
JPDL <?xml version="1.0" encoding="UTF-8"?> <process key="task&quo ...
- js禁止页面所有a链接访问
<script type="text/javascript"> var arr=document.getElementsByTagName("a") ...
- Python—HTTP处理Gzip压缩数据
HTTP 请求中包含Accept-encoding: gzip头信息可以告诉服务器,如果它有任何新数据要发送给我时,请以压缩的格式发送.如果服务器支持压缩,它将返回由 gzip 压缩的数据并且使用Co ...
- 从零开始做SSH项目(二)
使用hibernate测试加载数据.删除数据和修改数据等功能时,针对的是与数据库表user对应的User. 为了简化对其他数据表对应的实体类的持久化操作,可以在项目中创建一个BaseHibernate ...
- php通过mysqli链接mysql数据库
首先,我们先来了解一下mysqli是什么,和mysql有什么区别? 1.mysqli是一个扩展库,是允许用户访问mysql4.1或更高版本所提供的功能: 1)mysqli连接是永久连接,而MySQL是 ...