《Windows汇编语言程序设计教程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:戴水贵编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302212492
  • 页数:364 页
图书介绍:本书详细讲解了汇编语言的基础知识,并给出各种类型的程序例子,书中还对指令进行了归纳,且配有实例。书中内容以微软知识库为背景,使读者学完后可以用微软知识库中的库函数编程。

第1章 Windows汇编语言程序设计基础知识 1

1.1 如何学习Windows汇编语言 1

1.2 Windows汇编语言与DOS汇编语言的区别 1

1.3 二进制数 2

1.3.1 将十进制数转为二进制、八进制和十六进制数 2

1.3.2 不同数制表示法 5

1.3.3 计算机容量的一些计量单位 5

1.3.4 无符号数的表示范围 6

1.3.5 有符号数的表示范围 7

1.3.6 补码 7

1.3.7 数据的二进制存储 9

1.4 汇编语言的基本元素 10

1.4.1 整数常量 10

1.4.2 算术运算符及其优先级 10

1.4.3 实数常量 11

1.4.4 字符常量和字符串常量 11

1.4.5 标识符 11

1.4.6 伪指令 12

1.4.7 指令和标号 13

1.4.8 MASM中的@@标号 13

1.4.9 注释 13

1.4.10 .mode1语句 14

1.4.11 用.386指明使用的指令集 14

1.4.12 节区的定义 15

1.4.13 invoke伪指令 16

1.4.14 续行号 16

1.4.15 wsprintf格式化信息串函数和其他输入输出函数 17

1.4.16 第一个输入输出程序例 18

1.4.17 创建编译链接环境 20

1.4.18 编译链接和运行 20

1.4.19 建立编译链接批命令文件 21

1.4.20 全局变量的定义和初始值 21

1.4.21 局部变量 24

1.4.22 可在程序代码中插入数据 24

1.4.23 等号伪指令 24

1.4.24 EQU伪指令 25

1.4.25 当前地址运算符$ 26

1.4.26 OFFSET、ADDR操作符和LEA指令 27

1.4.27 ALIGN和EVEN伪指令 28

1.4.28 PTR操作符 28

1.4.29 TYPE操作符 29

1.4.30 LENGTHOF操作符 30

1.4.31 SIZEOF或SIZE操作符 31

1.4.32 LABLE伪指令 31

1.4.33 TYPEDEF和TYPEDEF PTR操作符 32

1.4.34 基数控制伪指令RADIX 35

1.4.35 ORG伪指令 35

1.4.36 REPT伪指令 35

1.4.37 ASSUME伪指令 37

1.4.38 SHORT伪指令 37

1.5 高级语法 38

1.5.1 高级语法while-endw 38

1.5.2 条件运算符 39

1.5.3 高级语法repeat-until 40

1.5.4 高级语法if-elseif-endif 42

1.5.5 高级语法continue 43

1.5.6 高级语法break if 44

1.6 结构体 46

1.6.1 结构体的定义 46

1.6.2 定义结构体变量并初始化 47

1.6.3 结构体成员名的使用方法 47

1.6.4 结构体的嵌套定义和使用 50

1.6.5 用EQU定义结构体变量 50

1.6.6 结构体定义例 52

1.7 共用体 53

1.7.1 共用体的定义和使用 53

1.7.2 共用体的嵌套定义 57

1.7.3 共用体和结构体的交叉定义例 58

1.7.4 位结构RECORD和位屏蔽MASK 59

1.8 宏定义和条件汇编伪指令 61

1.8.1 宏定义及使用方法 61

1.8.2 条件汇编伪指令和特殊操作符 63

1.9 过程 65

1.9.1 无参过程的定义 65

1.9.2 无参过程的调用方法 66

1.9.3 有参过程的定义 67

1.9.4 有参过程的调用方法 67

1.9.5 过程中的USES参数 67

1.9.6 过程中的语言类型 68

1.9.7 用PROTO声明过程 69

1.9.8 过程中的值传递和地址传递 69

1.9.9 用堆栈传递参数 71

1.9.10 程序举例 74

1.10 用IDA将过程反汇编 85

1.10.1 ENTER和LEAVE指令 85

1.10.2 ret和retn指令的区别 87

1.10.3 不同类型过程的反汇编 88

1.10.4 过程反汇编规律总结 94

1.10.5 过程反汇编后的修改方法 94

1.10.6 一个完整程序的反汇编 95

1.11 常用数值转换库函数 101

1.12 库函数应用程序举例 102

习题 106

第2章 寄存器和字符串操作指令 110

2.1 80386以上CPU处理器的寄存器 110

2.1.1 32位通用寄存器 110

2.1.2 16位段寄存器 111

2.1.3 32位标志寄存器 112

2.1.4 算术运算影响的标志 114

2.1.5 有符号数和无符号数的转移指令 117

2.1.6 转移指令列表 119

2.1.7 32位程序指针寄存器 119

2.1.8 32位控制寄存器 119

2.1.9 系统地址寄存器 120

2.2 字符串操作指令 120

2.2.1 REP MOVSB的使用方法(递增复制) 121

2.2.2 REP MOVSB的使用方法(递减复制) 123

2.2.3 REP STOSB的使用方法 124

2.2.4 LODSB和STOSB的配合使用 125

2.2.5 SCASB的使用方法 126

2.2.6 CMPSB的使用方法 128

2.2.7 LOOPNZ的使用方法 131

习题 133

第3章 指令详解 135

3.1 普通指令 135

3.2 移位指令 157

3.3 转移指令 161

3.4 特权指令 162

第4章 控制台编程 166

4.1 控制台输入输出函数 166

4.1.1 控制台句柄 166

4.1.2 控制台输出函数 167

4.1.3 控制台输入函数 168

4.2 文件管理 170

4.2.1 CreateFile打开或创建文件 171

4.2.2 WriteFile写文件 172

4.2.3 ReadFile读文件 174

4.2.4 SetFilePointer移动文件指针 175

4.2.5 GetFileSize测试文件大小 178

4.2.6 CreateFileMapping建立内存映射文件 180

4.2.7 MapViewOfFile将内存映射文件中的内容映射到内存 180

4.2.8 GetCL将命令行参数搬入缓冲区 183

4.2.9 FindFirstFile搜索第一个文件 184

4.2.10 FindNextFile搜索下一个文件 184

4.3 直接访问硬盘 186

4.3.1 读硬盘引导扇区 187

4.3.2 读硬盘引导扇区并显示 189

4.4 申请内存 192

4.4.1 GetProcessHeap获取进程当前的默认堆 193

4.4.2 HeapAlloc申请内存 193

4.4.3 HeapFree释放内存 193

第5章 图形界面编程 195

5.1 MessageBox显示信息框并将程序用IDA反汇编 195

5.2 第一个图形界面程序 197

5.3 用IDA将程序反汇编 202

5.4 创建窗口并演示消息 205

5.5 资源文件 209

5.5.1 资源文件程序例 209

5.5.2 资源文件程序例的反汇编 212

5.5.3 菜单资源的使用方法 214

第6章 图形操作 222

6.1 用画笔和刷子绘图 222

6.2 给窗口和按钮画有阴影的外框 228

第7章 将典型C程序反汇编成汇编语言 236

7.1 一重循环的反汇编 236

7.2 二重循环的反汇编 238

7.3 do-while循环的反汇编 239

7.4 while循环的反汇编 240

7.5 if-else的反汇编 241

7.6 switch-case的反汇编 242

7.7 结构体的反汇编 244

7.8 共用体的反汇编 246

7.9 一维数组的反汇编 247

7.10 二维数组的反汇编 248

7.11 静态变量(static)在不同存储区 250

7.12 指针程序的反汇编 252

7.13 二级指针程序的反汇编 254

7.14 函数指针程序的反汇编 257

习题 259

第8章 时钟中断 260

8.1 秒表计时器程序例 261

8.2 秒表计时器程序的反汇编 265

第9章 动态链接库 271

9.1 如何编写动态链接库程序 271

9.2 如何在用户程序中调用动态链接库中的函数 273

第10章 实模式和保护模式内存管理 279

10.1 地址线的根数和寻址范围的关系 279

10.2 实地址模式下的逻辑地址 280

10.3 保护模式 282

10.3.1 保护模式下内存寻址示意图 282

10.3.2 非系统段描述符的格式和含义 283

10.3.3 系统段描述符的格式和含义 286

10.3.4 定义段描述符结构体 287

10.3.5 段描述符结构体使用例 288

10.3.6 描述符表寄存器 289

10.3.7 如何通过全局描述符表寻址 290

10.3.8 如何获取系统全局描述符表 291

10.3.9 访问高端内存程序例 292

10.3.10 局部描述符表 298

10.3.11 门描述符 304

10.3.12 任务状态段TSS 305

10.3.13 用调用门实现越权访问 313

10.3.14 中断描述符表 321

10.3.15 分页管理与映射 328

习题 337

第11章 调试工具Windbg的安装与使用 339

11.1 VMware是什么 339

11.1.1 VMware的安装方法 339

11.1.2 虚拟机安装完后的配置 341

11.2 Windbg的安装方法 343

11.2.1 Windbg快捷键的设置 343

11.2.2 通信端口的配置 343

11.2.3 基本设置 343

11.2.4 Windbg的启动 344

11.3 Windbg的使用方法 346

11.3.1 如何装入可执行程序 346

11.3.2 如何反汇编整个程序 347

11.3.3 如何调试进程 348

11.4 Windbg命令列表 349

11.4.1 显示和设置寄存器R 350

11.4.2 单步跟踪T,TA,TC,WT,P,PA,PC 350

11.4.3 反汇编U,UF 351

11.4.4 断点BP,BU,BM 351

11.4.5 断点管理BL,BD,BE,BC 352

11.4.6 对内存变量的访问设置断点BA 353

11.4.7 列表装载模块名LM 353

11.4.8 切换数制和语法表达式N,.EXPR 354

11.4.9 数据修改E 354

11.4.10 数据查看D 355

11.4.11 显示当前过程所有局部变量名和值DV 355

11.4.12 显示内存变量DT 356

11.4.13 运行到程序尾或断点或指定地址G 357

11.4.14 显示栈信息K 357

11.4.15 显示最近的符号表LN 357

11.4.16 退出Q 357

11.4.17 查找内存S 358

附录A 键盘扫描码和ASCII码表 359

习题答案 361