书海网短评:
随着计算机技术的发展,学生要学习的课程越来越多,每门课的学时越来越少,而汇编语言从16位过渡到32位,指令越来越多,如何在有限的时间里学到尽可能多的知识,特别是如何提高汇编语言的编程能力,压力越来越大。于是,本书作者结合多年
随着计算机技术的发展,学生要学习的课程越来越多,每门课的学时越来越少,而汇编语言从16位过渡到32位,指令越来越多,如何在有限的时间里学到尽可能多的知识,特别是如何提高汇编语言的编程能力,压力越来越大。于是,《Win32汇编语言程序设计》作者结合多年的教学与软件开发的经验,编写了《Win32汇编语言程序设计》。
《Win32汇编语言程序设计》虽详尽介绍了CPU指令和FPU指令等,但在实际程序设计过程中,往往可能只需要掌握其中20%的指令,就能解决现实工作中80%的问题,而剩余20%的问题,可以根据具体的需要,查阅具体的指令;其中的案例也是作者根据多年教学经验归纳、总结、设计的,文字表述也是经过再三斟酌的,插图也是经过专门加工的。
第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.4BCD码9
1.4.5浮点数9
1.5字符数据的表示12
1.5.1ASCII码12
1.5.2机内码12
1.5.3Unicode13
1.5.4UTF-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.11invoke伪指令调用函数23
2.1.12Call指令调用函数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.2MASM32的安装41
3.1.3配置MASM32环境44
3.1.4通过注册表配置VC和MASM32环境44
3.2命令提示符下编译链接和运行44
3.3VC环境下编译链接和运行46
3.4C/C++嵌入汇编指令48
3.4.1汇编指令访问C整型变量48
3.4.2汇编指令读取C整型数组元素49
3.4.3汇编指令写入C字符数组50
3.5C程序反汇编生成汇编源程序51
3.5.1C程序编译时生成汇编语言源程序51
3.5.2修改C程序反汇编生成的汇编源程序52
习题355
第4章CPU指令系统57
4.1系统结构58
4.280386微处理器结构59
4.3CPU寄存器61
4.3.116位寄存器组61
4.3.232位寄存器组61
4.3.3标志寄存器EFlags62
4.480X86处理器工作模式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.8EFlags低8位与AH传送LAHF/SAHF78
4.7.9EFlags出入栈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.4BCD码调整为二进制编码AAD90
4.9.5BCD码加法调整DAA91
4.9.6BCD码减法调整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.13CPU控制指令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









