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

  • 购买积分:11 如何计算积分?
  • 作  者:田民格,秦彩杰,吕良智著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302476948
  • 页数:255 页
图书介绍:介绍了汇编语言基础知识、WIN32汇编语言基本组成、WIN32汇编语言的编译运行环境配置方法和源程序的编译运行方法、CPU指令系统、FPU指令系统、选择结构程序设计、循环结构程序设计、模块化程序设计、逆向工程吾爱破解软件使用简介。

第1章 汇编语言基础知识 1

1.1计数制 1

1.1.1十进制(Decimal) 1

1.1.2二进制(Binary) 1

1.1.3八进制(Octal) 2

1.1.4十六进制(HexaDecimal) 2

1.2进制数间的转换 3

1.2.1十进制转二进制 3

1.2.2十进制转八进制和十六进制 4

1.2.3十进制转二进制加法口算方法 4

1.2.4十进制转二进制减法口算方法 5

1.2.5十进制转二进制其他口算方法 6

1.3计算机计量单位 6

1.3.1计算机存储容量计量单位 6

1.3.2计算机时钟周期计量单位 6

1.4数值数据的表示 7

1.4.1无符号整数的表示 7

1.4.2有符号整数的表示 7

1.4.3移码 8

1.4.4 BCD码 9

1.4.5浮点数 9

1.5字符数据的表示 12

1.5.1 ASCII码 12

1.5.2机内码 12

1.5.3 Unicode 13

1.5.4 UTF-8 14

习题1 14

第2章Win32汇编语言基本组成 16

2.1程序结构 16

2.1.1处理器选择伪指令 17

2.1.2 model伪指令 18

2.1.3指明是否区分大小写 18

2.1.4要引用的头文件和库文件 18

2.1.5函数原型PROTO声明 19

2.1.6函数原型EXTRN声明 19

2.1.7变量的定义及使用 20

2.1.8数据段和代码段的定义 21

2.1.9注释 22

2.1.10指令、标号和分行 22

2.1.11 invoke伪指令调用函数 23

2.1.12 Call指令调用函数 23

2.1.13函数调用返回值 24

2.1.14函数的定义 24

2.1.15局部变量的定义 26

2.1.16程序结束 27

2.1.17汇编结束 27

2.2数据类型 27

2.2.1整数 27

2.2.2整数常量表达式 28

2.2.3浮点数 30

2.2.4字符和字符串 33

2.2.5结构体 34

习题2 36

第3章Win32汇编语言的编译运行 40

3.1配置编译链接环境 40

3.1.1配置VC6.0环境 41

3.1.2 MASM32的安装 41

3.1.3配置MASM32环境 44

3.1.4通过注册表配置VC和MASM32环境 44

3.2命令提示符下编译链接和运行 44

3.3 VC环境下编译链接和运行 46

3.4 C/C++嵌入汇编指令 48

3.4.1汇编指令访问C整型变量 48

3.4.2汇编指令读取C整型数组元素 49

3.4.3汇编指令写入C字符数组 50

3.5 C程序反汇编生成汇编源程序 51

3.5.1 C程序编译时生成汇编语言源程序 51

3.5.2修改C程序反汇编生成的汇编源程序 52

习题3 55

第4章CPU指令系统 57

4.1系统结构 58

4.2 80386微处理器结构 59

4.3 CPU寄存器 61

4.3.1 16位寄存器组 61

4.3.2 32位寄存器组 61

4.3.3标志寄存器EFlags 62

4.4 80X86处理器工作模式 64

4.5存储器 65

4.6操作数寻址方式 67

4.7数据传送类指令 71

4.7.1通用数据传送MOV/MOV[SZ]X 71

4.7.2数据交换XCHG 73

4.7.3字节查表转换XLAT[B] 75

4.7.4字节反向存储BSWAP 76

4.7.5入栈PUSH/PUSHA[D] 76

4.7.6出栈POP/POPA[D] 77

4.7.7取地址LEA/L[DEFGS]S 77

4.7.8 EFlags低8位与AH传送LAHF/SAHF 78

4.7.9 EFlags出入栈PUSHF[D]/POPF[D] 79

4.7.10进位位CF操作CLC/STC/CMC 79

4.7.11方向位DF操作CLD/STD 79

4.7.12中断允许位IF操作CLI/STI 79

4.8整数算术运算指令 79

4.8.1加法ADD/ADC/INC/XADD 80

4.8.2减法SUB/SBB/DEC/NEG 82

4.8.3乘法MUL/IMUL 82

4.8.4除法DIV/IDIV 83

4.8.5符号扩展CBW/CWD/CDQ 85

4.8.6整数比较CMP/CMPXCHG[8B] 86

4.9调整指令(实现大数运算) 87

4.9.1数字字符加法调整AAA 87

4.9.2数字字符减法调整AAS 89

4.9.3二进制编码调整为BCD码AAM 90

4.9.4 BCD码调整为二进制编码AAD 90

4.9.5 BCD码加法调整DAA 91

4.9.6 BCD码减法调整DAS 92

4.10逻辑运算指令 93

4.10.1逻辑与操作AND 93

4.10.2逻辑或操作OR 94

4.10.3逻辑非操作NOT 94

4.10.4逻辑异或操作XOR 94

4.10.5逻辑比较测试TEST 95

4.11位操作指令 96

4.11.1算术移位SAL/SAR 96

4.11.2逻辑移位SHL/SHR 97

4.11.3双精度移位SHLD/SHRD 98

4.11.4不带进位循环移位ROL/ROR 100

4.11.5带进位循环移位RCL/RCR 100

4.11.6位扫描BSF/SR 101

4.11.7第i位操作BT[CRS] 103

4.12串操作指令 104

4.12.1重复串操作REP[E|Z|NE|NZ] 105

4.12.2移串操作MOVS[B|W|D] 106

4.12.3取串操作LODS[B|W|D] 108

4.12.4存串操作STOS[B|W|D] 109

4.12.5输入串操作INS[B|W|D] 110

4.12.6输出串操作OUTS[B|W|D] 111

4.12.7串扫描操作SCAS[B|W|D] 111

4.12.8串比较操作CMPS[B|W|D] 112

4.13 CPU控制指令 114

4.13.1空操作指令NOP 114

4.13.2等待指令WAIT 115

4.13.3暂停指令HLT 115

4.13.4封锁数据指令LOCK 115

4.13.5获得CPU信息CPUID 115

4.13.6读时间戳计数器RDTSC 116

习题4 117

第5章FPU指令系统 127

5.1 FPU寄存器 127

5.1.1浮点数据寄存器 127

5.1.2浮点标记寄存器 128

5.1.3浮点状态寄存器 128

5.1.4浮点控制寄存器 130

5.2 FPU指令系统的约定 131

5.3实数传送指令 132

5.4实数常量加载指令 136

5.5实数比较指令 136

5.6实数加法指令 143

5.7实数减法指令 144

5.8实数乘法指令 146

5.9实数除法指令 147

5.10算术指令 148

5.11 FPU控制指令 161

5.11.1初始化FPU操作F[N]INIT 161

5.11.2保存状态字F[N]STSW 161

5.11.3保存控制字F[N]STCW 161

5.11.4加载控制字FLDCW 161

5.11.5清除异常F[N]CLEX 161

5.11.6保存环境F[N]STENV 161

5.11.7加载环境FLDENV 163

5.11.8存环境与数据F[N]SAVE 163

5.11.9读环境与数据FRSTOR 165

5.11.10增加FPU栈指针指令FINCSTP 166

5.11.11减少FPU栈指针FDECSTP 166

5.11.12 st(i)清空FFREE st(i) 167

5.11.13 FPU空操作FNOP 168

5.11.14同步FPU与CPU指令[F]WAIT 168

习题5 168

第6章 选择结构程序设计 171

6.1 .IF伪指令实现双分支选择 171

6.2 .IF….ELSEIF伪指令实现多分支选择 177

6.3 JMP和Jcc转移指令 179

6.4测试条件转存指令SETcc 185

6.5浮点数的大小比较 187

6.6散转程序设计 190

习题6 195

第7章 循环结构程序设计 200

7.1当循环伪指令.while 200

7.2重复伪指令.repeat 202

7.3退出伪指令.break 205

7.4短路伪指令.continue 205

7.5循环指令LOOP 206

7.6 ECX为零转移指令JECXZ 211

7.7 LOOP/JECXZ循环指令存在的问题 212

习题7 214

第8章 模块化程序设计 223

8.1子程序的定义 223

8.1.1子程序的属性 224

8.1.2局部变量的定义 224

8.2子程序的调用与返回 225

8.2.1子程序调用CALL或INVOKE 225

8.2.2返回指令RET 226

8.3不同数据类型作形参时的传递方法 226

8.3.1整数参数的传递 226

8.3.2字符参数的传递 227

8.3.3整型数组参数的传递 228

8.3.4字符串参数的传递 231

8.3.5双精度浮点数参数的传递 232

8.4汇编语言递归函数求累加和 233

8.4.1 C语言实现递归函数求累加和 233

8.4.2汇编语言实现递归函数求累加和 234

8.4.3 C程序反汇编得到的源程序实现递归求和 236

8.5 C程序调用汇编语言的子程序 238

8.5.1 C程序调用汇编语言子程序的方式 238

8.5.2 C整型参数不同调用方式传入汇编 239

8.5.3 C整型数组参数传入汇编 241

8.5.4 C字符数组参数传入汇编 242

8.5.5 C调用汇编语言实现函数重载 242

习题8 243

第9章 吾爱破解软件使用简介 248

9.1吾爱破解软件主线程模块界面 248

9.2如何用吾爱破解软件找到登录软件密码 249

9.3用吾爱破解软件修改可执行文件并保存 250

附录A 252

参考文献 255