第1章 汇编语言基础知识 1
1.1 计算机系统概述 1
1.1.1 计算机的硬件 1
1.1.2 计算机的软件 3
1.1.3 计算机的程序设计语言 3
1.2 数据表示 5
1.2.1 数制 5
1.2.2 编码 7
1.2.3 有符号数的表示法 7
1.2.4 二进制运算 10
1.3 Intel 80x86系列微处理器 11
1.4 微型计算机(PC)系统 13
1.5 8086微处理器 18
1.5.1 8086的功能结构 18
1.5.2 8086的寄存器 19
1.5.3 存储器组织与段寄存器 22
1.6 8086的寻址方式 25
1.6.1 8086的机器代码格式 25
1.6.2 立即数寻址方式 26
1.6.3 寄存器寻址方式 27
1.6.4 存储器寻址方式 27
习题1 30
第2章 8086的指令系统 32
2.1 数据传送类指令 33
2.1.1 通用数据传送指令 33
2.1.2 堆栈操作指令 35
2.1.3 标志传送指令 36
2.1.4 地址传送指令 37
2.1.5 输入输出指令 38
2.2 算术运算类指令 39
2.2.1 加法指令 39
2.2.2 减法指令 40
2.2.3 乘法指令 41
2.2.4 除法指令 42
2.2.5 符号扩展指令 43
2.2.6 十进制调整指令 43
2.3 位操作类指令 46
2.3.1 逻辑运算指令 46
2.3.2 移位指令 48
2.3.3 循环移位指令 49
2.4 控制转移类指令 50
2.4.1 无条件转移指令 51
2.4.2 条件转移指令 52
2.4.3 循环指令 54
2.4.4 子程序指令 55
2.4.5 中断指令 57
2.4.6 系统功能调用 58
2.5 串操作类指令 61
2.6 处理机控制类指令 65
习题2 66
第3章 汇编语言程序格式 72
3.1 汇编语言程序的开发 72
3.1.1 汇编语言程序的语句格式 72
3.1.2 汇编语言的程序格式 73
3.1.3 汇编语言程序的开发过程 75
3.2 参数、变量和标号 79
3.2.1 数值型参数 79
3.2.2 变量定义伪指令 81
3.2.3 变量和标号的属性 85
3.3 程序段的定义和属性 88
3.3.1 DOS的程序结构 88
3.3.2 简化段定义的格式 90
3.3.3 完整段定义的格式 93
3.4 复杂数据结构 97
3.4.1 结构 97
3.4.2 记录 99
习题3 100
第4章 基本汇编语言程序设计 103
4.1 顺序程序设计 103
4.2 分支程序设计 104
4.3 循环程序设计 108
4.4 子程序设计 112
4.4.1 过程定义伪指令 112
4.4.2 子程序的参数传递 114
4.4.3 子程序的嵌套、递归与重入 117
4.4.4 子程序的应用 120
习题4 125
第5章 高级汇编语言程序设计 127
5.1 高级语言特性 127
5.1.1 条件控制伪指令 127
5.1.2 循环控制伪指令 129
5.1.3 过程声明和过程调用伪指令 131
5.2 宏结构程序设计 134
5.2.1 宏汇编 134
5.2.2 重复汇编 139
5.2.3 条件汇编 141
5.3.1 源程序文件的包含 144
5.3 模块化程序设计 144
5.3.2 目标代码文件的连接 149
5.3.3 子程序库的调入 151
5.4 输入输出程序设计 153
5.4.1 程序直接控制输入输出 153
5.4.2 程序查询输入输出 155
5.4.3 中断服务程序 156
习题5 163
第6章 32位指令及其编程 166
6.1 32位指令运行环境 166
6.1.1 寄存器 167
6.1.2 寻址方式 169
6.1.3 机器代码格式 170
6.2 32位扩展指令 172
6.2.1 数据传送类指令 172
6.2.2 算术运算类指令 174
6.2.3 位操作类指令 175
6.2.4 串操作类指令 175
6.2.5 控制转移类指令 176
6.3 32位指令的程序设计 179
6.4.1 80386新增指令 183
6.4 32位新增指令 183
6.4.2 80486新增指令 187
6.4.3 Pentium新增指令 188
6.4.4 Pentium Pro新增指令 192
6.5 用汇编语言编写32位Windows应用程序 193
6.5.1 32位Windows应用程序的特点 194
6.5.2 32位Windows控制台程序 194
6.5.3 MASM32开发环境 199
6.5.4 创建消息窗口 200
6.5.5 创建窗口应用程序 201
习题6 208
第7章 汇编语言与C/C++的混合编程 211
7.1 Turbo C嵌入汇编方式 211
7.1.1 嵌入汇编语句的格式 212
7.1.2 汇编语句访问C语言的数据 212
7.1.3 嵌入汇编的编译过程 214
7.2 Turbo C模块连接方式 215
7.2.1 混合编程的约定规则 215
7.2.2 汇编模块的编译和连接 217
7.2.3 混合编程的参数传递 218
7.2.4 汇编语言程序对C语言程序的调用 226
7.3.1 嵌入汇编语言指令 229
7.3 汇编语言在Visual C++中的应用 229
7.3.2 调用汇编语言过程 233
7.3.3 使用汇编语言优化C++代码 237
7.3.4 使用Visual C++开发汇编语言程序 240
习题7 241
第8章 80x87浮点指令及其编程 245
8.1 浮点数据格式 245
8.1.1 实数和浮点格式 245
8.1.2 80x87的数据格式 248
8.2 浮点寄存器 249
8.3 浮点指令的程序设计 252
8.3.1 浮点传送类指令 253
8.3.2 算术运算类指令 255
8.3.3 超越函数类指令 258
8.3.4 浮点比较类指令 260
8.3.5 FPU控制类指令 264
习题8 269
第9章 多媒体指令及其编程 271
9.1 MMX指令系统 271
9.1.1 MMX的数据结构 271
9.1.2 MMX指令 273
9.1.3 MMX指令的程序设计 281
9.2 SSE指令系统 283
9.2.1 SIMD浮点指令 283
9.2.2 SIMD整数指令 292
9.2.3 高速缓存优化处理指令 294
9.2.4 SSE指令的程序设计 295
9.3 SSE2指令系统 299
9.3.1 SSE2的数据类型 300
9.3.2 SSE2浮点指令 301
9.3.3 SSE2扩展指令 307
9.3.4 SSE2指令的程序设计 309
9.4 SSE3指令系统 311
9.4.1 SSE3指令 312
9.4.2 SSE3指令的程序设计 314
习题9 314
第10章 64位指令简介 316
10.1 64位方式的运行环境 316
10.2 64位方式的指令 318
附录A 调试程序CodeView 321
附录B 汇编程序MASM的伪指令和操作符 327
附录C 80x86整数指令系统 328
附录D 输入输出子程序库IO.LIB 334
参考文献 336