第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 数值的编码 8
1.2.3 字符的编码 10
1.3 Intel 80x86系列微处理器 13
1.3.1 16位80x86微处理器 13
1.3.2 IA-32微处理器 14
1.3.3 Intel 64处理器 15
1.4 微型计算机系统 16
1.5 8086微处理器 18
1.5.1 8086的功能结构 18
1.5.2 8086的寄存器 19
1.5.3 8086的存储器组织 22
1.6 8086的寻址方式 25
1.6.1 8086的机器代码格式 26
1.6.2 立即数寻址方式 27
1.6.3 寄存器寻址方式 28
1.6.4 存储器寻址方式 28
1.6.5 数据寻址的组合 30
习题1 31
第2章 8086的指令系统 33
2.1 数据传送类指令 33
2.1.1 通用数据传送指令 33
2.1.2 堆栈操作指令 36
2.1.3 标志传送指令 38
2.1.4 地址传送指令 39
2.2 算术运算类指令 39
2.2.1 状态标志 39
2.2.2 加法指令 41
2.2.3 减法指令 42
2.2.4 乘法指令 44
2.2.5 除法指令 44
2.2.6 符号扩展指令 45
2.2.7 十进制调整指令 46
2.3 位操作类指令 49
2.3.1 逻辑运算指令 49
2.3.2 移位指令 50
2.3.3 循环移位指令 51
2.4 控制转移类指令 52
2.4.1 无条件转移指令 53
2.4.2 条件转移指令 54
2.4.3 循环指令 57
2.4.4 子程序指令 58
2.4.5 中断指令 59
2.5 处理机控制类指令 61
习题2 63
第3章 汇编语言程序格式 68
3.1 汇编语言程序的开发 68
3.1.1 汇编语言程序的语句格式 68
3.1.2 汇编语言的源程序框架 70
3.1.3 汇编语言程序的开发过程 73
3.1.4 DOS系统功能调用 82
3.2 参数、变量和标号 84
3.2.1 数值型参数 84
3.2.2 变量定义伪指令 86
3.2.3 变量和标号的属性 90
3.3 程序段的定义和属性 92
3.3.1 DOS的程序结构 92
3.3.2 简化段定义的格式 93
3.3.3 完整段定义的格式 97
3.4 复杂数据结构 100
3.4.1 结构 100
3.4.2 记录 102
习题3 103
第4章 基本汇编语言程序设计 106
4.1 顺序程序设计 106
4.2 分支程序设计 107
4.2.1 单分支结构 107
4.2.2 双分支结构 108
4.2.3 多分支结构 109
4.3 循环程序设计 112
4.3.1 计数控制循环 113
4.3.2 条件控制循环 114
4.3.3 多重循环 115
4.3.4 串操作类指令 116
4.4 子程序设计 121
4.4.1 过程定义伪指令 122
4.4.2 子程序的参数传递 124
4.4.3 子程序的嵌套、递归和重入 127
4.4.4 子程序的应用 129
习题4 134
第5章 高级汇编语言程序设计 137
5.1 高级语言特性 137
5.1.1 条件控制伪指令 137
5.1.2 循环控制伪指令 139
5.1.3 过程声明和过程调用伪指令 141
5.2 宏结构程序设计 143
5.2.1 宏汇编 144
5.2.2 重复汇编 149
5.2.3 条件汇编 150
5.3 模块化程序设计 153
5.3.1 源程序文件的包含 153
5.3.2 目标代码文件的连接 158
5.3.3 子程序库的调入 160
5.4 输入/输出程序设计 162
5.4.1 输入/输出指令 163
5.4.2 程序直接控制输入/输出 164
5.4.3 程序查询输入/输出 165
5.4.4 中断服务程序 166
习题5 173
第6章 32位指令及其编程 176
6.1 32位CPU的指令运行环境 176
6.1.1 寄存器 177
6.1.2 寻址方式 179
6.1.3 机器代码格式 180
6.2 32位扩展指令 182
6.2.1 数据传送类指令 182
6.2.2 算术运算类指令 184
6.2.3 位操作类指令 185
6.2.4 串操作类指令 185
6.2.5 控制转移类指令 186
6.3 DOS下的32位程序设计 189
6.4 32位新增指令 193
6.4.1 80386新增指令 193
6.4.2 80486新增指令 196
6.4.3 Pentium新增指令 197
6.4.4 Pentium Pro新增指令 201
6.5 用汇编语言编写32位Windows应用程序 202
6.5.1 32位Windows应用程序的特点 203
6.5.2 32位Windows控制台程序 204
6.5.3 Windows应用程序的开发 208
6.5.4 创建消息窗口 209
6.5.5 创建窗口应用程序 210
习题6 217
第7章 汇编语言与C/C+的混合编程 221
7.1 Turbo C嵌入汇编方式 221
7.1.1 嵌入汇编语句的格式 222
7.1.2 汇编语句访问C语言的数据 223
7.1.3 嵌入汇编的编译过程 224
7.2 Turbo C模块连接方式 225
7.2.1 混合编程的约定规则 225
7.2.2 汇编模块的编译和连接 227
7.2.3 混合编程的参数传递 228
7.2.4 汇编语言程序对C语言程序的调用 235
7.3 汇编语言在Visual C++中的应用 238
7.3.1 嵌入汇编语言指令 238
7.3.2 调用汇编语言过程 241
7.3.3 使用汇编语言优化C++代码 245
7.3.4 使用Visual C++开发汇编语言程序 248
习题7 251
第8章 80x87浮点指令及其编程 254
8.1 浮点数据格式 254
8.1.1 实数和浮点格式 254
8.1.2 80x87的数据格式 257
8.2 浮点寄存器 259
8.3 浮点指令的程序设计 262
8.3.1 浮点传送类指令 263
8.3.2 算术运算类指令 265
8.3.3 超越函数类指令 268
8.3.4 浮点比较类指令 269
8.3.5 FPU控制类指令 273
习题8 277
第9章 多媒体指令及其编程 280
9.1 MMX指令系统 280
9.1.1 MMX的数据结构 280
9.1.2 MMX指令 282
9.1.3 MMX指令的程序设计 289
9.2 SSE指令系统 291
9.2.1 SIMD浮点指令 291
9.2.2 SIMD整数指令 299
9.2.3 高速缓存优化处理指令 301
9.2.4 SSE指令的程序设计 302
9.3 SSE2指令系统 306
9.3.1 SSE2的数据类型 306
9.3.2 SSE2浮点指令 307
9.3.3 SSE2扩展指令 312
9.3.4 SSE2指令的程序设计 314
9.4 SSE3指令系统 316
9.4.1 SSE3指令 316
9.4.2 SSE3指令的程序设计 318
习题9 319
第10章 64位指令简介 321
10.1 64位方式的运行环境 321
10.2 64位方式的指令 324
附录A 调试程序DEBUG 328
A.1 DEBUG程序的调用 328
A.2 DEBUG命令的格式 328
A.3 DEBUG的命令 329
A.4 程序片段的调试方法 333
A.5 可执行程序文件的调试方法 334
A.6 使用调试程序的注意事项 336
附录B 调试程序CodeView 338
B.1 CodeView的菜单命令 338
B.2 CodeView的窗口 340
B.3 CodeView的设置 342
B.4 使用CodeView的调试示例 343
附录C 汇编程序MASM的伪指令和操作符 346
附录D 80x86整数指令系统 347
附录E 常见汇编错误信息 352
附录F 输入/输出子程序库 354
参考文献 356