第1章 汇编语言基础知识 1
1.1 计算机系统概述 1
1.1.1 计算机的硬件 1
1.1.2 计算机的软件 3
1.1.3 计算机的程序设计语言 3
1.2 数据表示 5
1.2.1 数制 6
1.2.2 编码 7
1.2.3 有符号数的表示法 9
1.2.4 二进制运算 11
1.3 Intel 80x86系列微处理器 12
1.4 PC微型计算机系统 14
1.5 8086微处理器 16
1.5.1 8086的功能结构 16
1.5.2 8086的寄存器组 17
1.5.3 存储器组织与段寄存器 19
1.6 8086的寻址方式 22
1.6.1 8086的机器代码格式 23
1.6.2 立即数寻址方式 24
1.6.3 寄存器寻址方式 25
1.6.4 存储器寻址方式 25
习题1 28
第2章 8086的指令系统 30
2.1 数据传送类指令 31
2.1.1 通用数据传送指令 31
2.1.2 堆栈操作指令 33
2.1.3 标志传送指令 35
2.1.4 地址传送指令 36
2.1.5 输入输出指令 36
2.2 算术运算类指令 37
2.2.1 加法指令 37
2.2.2 减法指令 39
2.2.3 乘法指令 40
2.2.4 除法指令 41
2.2.5 符号扩展指令 42
2.2.6 十进制调整指令 43
2.3 位操作类指令 46
2.3.1 逻辑运算指令 46
2.3.2 移位指令 47
2.3.3 循环移位指令 49
2.4 控制转移类指令 50
2.4.1 无条件转移指令 50
2.4.2 条件转移指令 52
2.4.3 循环指令 54
2.4.4 子程序指令 55
2.4.5 中断指令 57
2.4.6 系统功能调用 59
2.5 串操作类指令 61
2.6 处理机控制类指令 66
习题2 67
上机指导 73
第3章 汇编语言程序格式 74
3.1 汇编语言程序的开发 74
3.1.1 汇编语言程序的语句格式 74
3.1.2 汇编语言程序的程序格式 75
3.1.3 汇编语言程序的开发过程 77
3.2 参数、变量和标号 82
3.2.1 数值型参数 83
3.2.2 变量定义伪指令 85
3.2.3 变量和标号的属性 89
3.3 程序段的定义和属性 92
3.3.1 DOS的程序结构 92
3.3.2 简化段定义的格式 94
3.3.3 完整段定义的格式 97
3.4 复杂数据结构 101
3.4.1 结构 102
3.4.2 记录 103
习题3 104
上机指导 106
第4章 基本汇编语言程序设计 108
4.1 顺序程序设计 108
4.2 分支程序设计 109
4.3 循环程序设计 113
4.4 子程序设计 117
4.4.1 过程定义伪指令 117
4.4.2 子程序的参数传递 119
4.4.3 子程序的嵌套、递归与重入 123
4.4.4 子程序的应用 125
习题4 130
上机指导 132
第5章 高级汇编语言程序设计 133
5.1 高级语言特性 133
5.1.1 条件控制伪指令 133
5.1.2 循环控制伪指令 135
5.1.3 过程声明和过程调用伪指令 137
5.2 宏结构程序设计 140
5.2.1 宏汇编 140
5.2.2 重复汇编 146
5.2.3 条件汇编 147
5.3 模块化程序设计 150
5.3.1 源程序文件的包含 150
5.3.2 目标代码文件的连接 155
5.3.3 子程序库的调入 158
5.4 输入输出程序设计 159
5.4.1 程序直接控制输入输出 160
5.4.2 程序查询输入输出 161
5.4.3 中断服务程序 163
习题5 169
上机指导 172
第6章 32位指令及其编程 174
6.1 32位指令运行环境 174
6.1.1 寄存器组 175
6.1.2 寻址方式 178
6.1.3 机器代码格式 179
6.2 32位扩展指令 180
6.2.1 数据传送类指令 181
6.2.2 算术运算类指令 184
6.2.3 位操作类指令 186
6.2.4 串操作类指令 187
6.2.5 控制转移类指令 188
6.2.6 处理器控制类指令 191
6.2.7 保护方式类指令(80286新增指令) 192
6.3 32位指令的程序设计 192
6.4 32位新增指令 196
6.4.1 80386新增指令 196
6.4.2 80486新增指令 200
6.4.3 Pentium新增指令 201
6.4.4 Pentium Pro新增指令 205
6.5 用汇编语言编写32位Windows应用程序 206
6.5.1 32位Windows应用程序的特点 207
6.5.2 Win32ASM程序结构 208
6.5.3 MASM32开发环境 211
习题6 212
上机指导 214
第7章 汇编语言与C/C++的混合编程 215
7.1 Turbo C嵌入汇编方式 216
7.1.1 嵌入汇编语句的格式 216
7.1.2 汇编语句访问C语言的数据 217
7.1.3 嵌入汇编的编译过程 218
7.2 Turbo C模块连接方式 219
7.2.1 混合编程的约定规则 220
7.2.2 汇编模块的编译和连接 221
7.2.3 混合编程的参数传递 222
7.2.4 汇编语言程序对C语言程序的调用 230
7.3 汇编语言在Visual C++中的应用 234
7.3.1 嵌入汇编语言指令 234
7.3.2 调用汇编语言过程 238
习题7和上机指导 242
第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 算术运算类指令 257
8.3.3 超越函数类指令 259
8.3.4 浮点比较类指令 261
8.3.5 FPU控制类指令 266
习题8和上机指导 270
第9章 多媒体指令及其编程 273
9.1 MMX指令系统 273
9.1.1 MMX的数据结构 273
9.1.2 MMX指令 275
9.1.3 MMX指令的程序设计 283
9.2 SSE指令系统 286
9.2.1 SIMD浮点指令 286
9.2.2 SIMD整数指令 296
9.2.3 高速缓存优化处理指令 297
9.2.4 SSE指令的程序设计 299
9.3 SSE2指令系统 303
9.3.1 SEE2的数据类型 303
9.3.2 SEE2浮点指令 304
9.3.3 SEE2扩展指令 310
9.3.4 SSE2指令的程序设计 313
习题9和上机指导 315
附录1 调试程序DEBUG 317
附录2 汇编程序MASM的伪指令和操作符 322
附录3 80x86指令系统 324
参考文献 331