Win32汇编语言程序设计

Win32汇编语言程序设计
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2017-08
版次: 1
ISBN: 9787302476948
定价: 45.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 254页
字数: 413千字
14人买过
  • 本书共分为9章,具体介绍了汇编语言基础知识、Win32汇编语言基本组成、Win32汇编语言的编译运行、CPU指令系统、FPU指令系统、选择结构程序设计、循环结构程序设计、模块化程序设计和吾爱破解软件使用简介等内容。先详细介绍了汇编语言程序设计中要用到的相关理论基础和计算机的组成与工作原理,如数值与字符的表示方法、存储体系结构与工作原理等;再全面介绍了32位CPU指令与浮点指令;*后详尽介绍了汇编语言程序设计的方法,使读者可以把更多的精力用于汇编的程序设计上。本书力争做到,初学者用C语言能实现的功能,用本书的32位汇编语言也能实现。
      本书所有例子的源程序都是完整的,并有详细的注释,且都能在Windows XP和Windows 7环境上编译运行通过,特别适合初学者。本书有配套的考试系统和相应的题库,既可作为测评的标准化试题(单项选择题、多项选择题、判断题和填空题),又可作为测评的程序设计题(程序改错题、程序填空题和程序设计题),可按程序功能要求进行测评,也可按标准答案源程序的相似度进行模糊测评。
      本书可作为应用型本科院校计算机类专业《Win32汇编语言程序设计》的教材,也可作为《计算机组成原理与汇编语言(Win32)》的教材,适合既要求有一定理论知识,又要求突出实践的院校,尤其适合强调提高编程能力的院校和读者。 第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  Unicode13

    1.5.4  UTF-814

    习题114

    第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

    习题236

    第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

    习题355

    第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  标志寄存器EFlags62

    4.4  80X86处理器工作模式64

    4.5  存储器65

    4.6  操作数寻址方式67

    4.7  数据传送类指令71

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

    4.7.2  数据交换XCHG73

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

    4.7.4  字节反向存储BSWAP76

    4.7.5  入栈PUSH/PUSHA[D]76

    4.7.6  出栈POP/POPA[D]77

    4.7.7  取地址LEA/L[DEFGS]S77

    4.7.8  EFlags低8位与AH传送LAHF/SAHF78

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

    4.7.10  进位位CF操作CLC/STC/CMC79

    4.7.11  方向位DF操作CLD/STD79

    4.7.12  中断允许位IF操作CLI/STI79

    4.8  整数算术运算指令79

    4.8.1  加法ADD/ADC/INC/XADD80

    4.8.2  减法SUB/SBB/DEC/NEG82

    4.8.3  乘法MUL/IMUL82

    4.8.4  除法DIV/IDIV83

    4.8.5  符号扩展CBW/CWD/CDQ85

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

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

    4.9.1  数字字符加法调整AAA87

    4.9.2  数字字符减法调整AAS89

    4.9.3  二进制编码调整为BCD码AAM90

    4.9.4  BCD码调整为二进制编码AAD90

    4.9.5  BCD码加法调整DAA91

    4.9.6  BCD码减法调整DAS92

    4.10  逻辑运算指令93

    4.10.1  逻辑与操作AND93

    4.10.2  逻辑或操作OR94

    4.10.3  逻辑非操作NOT94

    4.10.4  逻辑异或操作XOR94

    4.10.5  逻辑比较测试TEST95

    4.11  位操作指令96

    4.11.1  算术移位SAL/SAR96

    4.11.2  逻辑移位SHL/SHR97

    4.11.3  双精度移位SHLD/SHRD98

    4.11.4  不带进位循环移位ROL/ROR100

    4.11.5  带进位循环移位RCL/RCR100

    4.11.6  位扫描BSF/BSR101

    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  空操作指令NOP114

    4.13.2  等待指令WAIT115

    4.13.3  暂停指令HLT115

    4.13.4  封锁数据指令LOCK115

    4.13.5  获得CPU信息CPUID115

    4.13.6  读时间戳计数器RDTSC116

    习题4117

    第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]INIT161

    5.11.2  保存状态字F[N]STSW161

    5.11.3  保存控制字F[N]STCW161

    5.11.4  加载控制字FLDCW161

    5.11.5  清除异常F[N]CLEX161

    5.11.6  保存环境F[N]STENV161

    5.11.7  加载环境FLDENV163

    5.11.8  存环境与数据F[N]SAVE163

    5.11.9  读环境与数据FRSTOR165

    5.11.10  增加FPU栈指针指令FINCSTP166

    5.11.11  减少FPU栈指针FDECSTP166

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

    5.11.13  FPU空操作FNOP168

    5.11.14  同步FPU与CPU指令[F]WAIT168

    习题5168

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

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

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

    6.3  JMP和Jcc转移指令179

    6.4  测试条件转存指令SETcc185

    6.5  浮点数的大小比较187

    6.6  散转程序设计190

    习题6195

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

    7.1  当循环伪指令.while200

    7.2  重复伪指令.repeat202

    7.3  退出伪指令.break205

    7.4  短路伪指令.continue205

    7.5  循环指令LOOP206

    7.6  ECX为零转移指令JECXZ211

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

    习题7214

    第8章  模块化程序设计223

    8.1  子程序的定义223

    8.1.1  子程序的属性224

    8.1.2  局部变量的定义224

    8.2  子程序的调用与返回225

    8.2.1  子程序调用CALL或INVOKE225

    8.2.2  返回指令RET226

    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

    习题8243

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

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

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

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

    附录A252

    参考文献255
  • 内容简介:
    本书共分为9章,具体介绍了汇编语言基础知识、Win32汇编语言基本组成、Win32汇编语言的编译运行、CPU指令系统、FPU指令系统、选择结构程序设计、循环结构程序设计、模块化程序设计和吾爱破解软件使用简介等内容。先详细介绍了汇编语言程序设计中要用到的相关理论基础和计算机的组成与工作原理,如数值与字符的表示方法、存储体系结构与工作原理等;再全面介绍了32位CPU指令与浮点指令;*后详尽介绍了汇编语言程序设计的方法,使读者可以把更多的精力用于汇编的程序设计上。本书力争做到,初学者用C语言能实现的功能,用本书的32位汇编语言也能实现。
      本书所有例子的源程序都是完整的,并有详细的注释,且都能在Windows XP和Windows 7环境上编译运行通过,特别适合初学者。本书有配套的考试系统和相应的题库,既可作为测评的标准化试题(单项选择题、多项选择题、判断题和填空题),又可作为测评的程序设计题(程序改错题、程序填空题和程序设计题),可按程序功能要求进行测评,也可按标准答案源程序的相似度进行模糊测评。
      本书可作为应用型本科院校计算机类专业《Win32汇编语言程序设计》的教材,也可作为《计算机组成原理与汇编语言(Win32)》的教材,适合既要求有一定理论知识,又要求突出实践的院校,尤其适合强调提高编程能力的院校和读者。
  • 目录:
    第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  Unicode13

    1.5.4  UTF-814

    习题114

    第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

    习题236

    第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

    习题355

    第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  标志寄存器EFlags62

    4.4  80X86处理器工作模式64

    4.5  存储器65

    4.6  操作数寻址方式67

    4.7  数据传送类指令71

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

    4.7.2  数据交换XCHG73

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

    4.7.4  字节反向存储BSWAP76

    4.7.5  入栈PUSH/PUSHA[D]76

    4.7.6  出栈POP/POPA[D]77

    4.7.7  取地址LEA/L[DEFGS]S77

    4.7.8  EFlags低8位与AH传送LAHF/SAHF78

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

    4.7.10  进位位CF操作CLC/STC/CMC79

    4.7.11  方向位DF操作CLD/STD79

    4.7.12  中断允许位IF操作CLI/STI79

    4.8  整数算术运算指令79

    4.8.1  加法ADD/ADC/INC/XADD80

    4.8.2  减法SUB/SBB/DEC/NEG82

    4.8.3  乘法MUL/IMUL82

    4.8.4  除法DIV/IDIV83

    4.8.5  符号扩展CBW/CWD/CDQ85

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

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

    4.9.1  数字字符加法调整AAA87

    4.9.2  数字字符减法调整AAS89

    4.9.3  二进制编码调整为BCD码AAM90

    4.9.4  BCD码调整为二进制编码AAD90

    4.9.5  BCD码加法调整DAA91

    4.9.6  BCD码减法调整DAS92

    4.10  逻辑运算指令93

    4.10.1  逻辑与操作AND93

    4.10.2  逻辑或操作OR94

    4.10.3  逻辑非操作NOT94

    4.10.4  逻辑异或操作XOR94

    4.10.5  逻辑比较测试TEST95

    4.11  位操作指令96

    4.11.1  算术移位SAL/SAR96

    4.11.2  逻辑移位SHL/SHR97

    4.11.3  双精度移位SHLD/SHRD98

    4.11.4  不带进位循环移位ROL/ROR100

    4.11.5  带进位循环移位RCL/RCR100

    4.11.6  位扫描BSF/BSR101

    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  空操作指令NOP114

    4.13.2  等待指令WAIT115

    4.13.3  暂停指令HLT115

    4.13.4  封锁数据指令LOCK115

    4.13.5  获得CPU信息CPUID115

    4.13.6  读时间戳计数器RDTSC116

    习题4117

    第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]INIT161

    5.11.2  保存状态字F[N]STSW161

    5.11.3  保存控制字F[N]STCW161

    5.11.4  加载控制字FLDCW161

    5.11.5  清除异常F[N]CLEX161

    5.11.6  保存环境F[N]STENV161

    5.11.7  加载环境FLDENV163

    5.11.8  存环境与数据F[N]SAVE163

    5.11.9  读环境与数据FRSTOR165

    5.11.10  增加FPU栈指针指令FINCSTP166

    5.11.11  减少FPU栈指针FDECSTP166

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

    5.11.13  FPU空操作FNOP168

    5.11.14  同步FPU与CPU指令[F]WAIT168

    习题5168

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

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

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

    6.3  JMP和Jcc转移指令179

    6.4  测试条件转存指令SETcc185

    6.5  浮点数的大小比较187

    6.6  散转程序设计190

    习题6195

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

    7.1  当循环伪指令.while200

    7.2  重复伪指令.repeat202

    7.3  退出伪指令.break205

    7.4  短路伪指令.continue205

    7.5  循环指令LOOP206

    7.6  ECX为零转移指令JECXZ211

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

    习题7214

    第8章  模块化程序设计223

    8.1  子程序的定义223

    8.1.1  子程序的属性224

    8.1.2  局部变量的定义224

    8.2  子程序的调用与返回225

    8.2.1  子程序调用CALL或INVOKE225

    8.2.2  返回指令RET226

    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

    习题8243

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

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

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

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

    附录A252

    参考文献255
查看详情
12
您可能感兴趣 / 更多
Win32汇编语言程序设计
计算机组成原理与汇编语言
田民格、秦彩杰、林观俊、田佳琪
Win32汇编语言程序设计
Delphi程序设计
田民格、卢昌荆 主编