上篇 基础篇 3
第一章 80x86系列微机结构组成 3
1.1 80x86系列微处理器结构 3
1.1.1 8086 CPU 7
1.1.2 80386 CPU 8
1.1.3 80486 CPU 9
1.1.4 Pentium微处理器 9
1.2 80x86系列微处理器的寄存器 11
1.2.1 8086寄存器 11
1.2.2 80386寄存器 16
1.2.3 80486寄存器 18
1.2.4 Pentium寄存器 18
1.3 80x86系列微处理机的主存储器组织 18
1.3.1 主存概述 19
1.3.2 堆栈 20
1.4 80x86系列微处理器能直接处理的数据及其在主存储器中存放形式 20
小结 22
习题一 22
第二章 80x86系列微处理器寻址方式和指令系统 23
2.1 80x86的工作模式 23
2.1.1 实模式 23
2.1.2 保护模式 25
2.1.3 虚拟86模式 25
2.1.4 系统管理模式 25
2.2 80x86指令格式 26
2.2.1 80x86机器指令格式 26
2.2.2 80x86机器指令在汇编语言中的表示方法 29
2.3 80x86指令寻址方式及其符号表示 30
2.3.1 寻址方式的有关问题 30
2.3.2 与数据有关的寻址方式 31
2.4 80x86通用指令系统 39
2.4.1 传送类指令 41
2.4.2 算术运算和辅助操作指令 51
2.4.3 位操作指令 62
2.4.4 处理器控制指令 74
小结 75
习题二 75
第三章 80x86的宏汇编语言 79
3.1 概述 79
3.1.1 汇编语言与汇编程序 79
3.1.2 80x86宏汇编语言概述 82
3.2 汇编语言源程序语句中的域 84
3.2.1 标号名字域 84
3.2.2 操作助记符域 85
3.2.3 操作数域 85
3.3 伪指令 90
3.3.1 指令集选择伪指令 91
3.3.2 数据定义伪指令 92
3.3.3 符号定义伪指令 104
3.3.4 模块定义伪指令 106
3.3.5 完整段定义伪指令 108
3.3.6 简化段定义伪指令 114
3.4 COM文件的源程序结构 120
小结 122
习题三 122
第四章 程序设计的基本技术 127
4.1 顺序程序设计 127
4.2 分支程序设计 128
4.2.1 与程序控制类指令有关的寻址方式 129
4.2.2 转移指令 133
4.2.3 分支程序设计 134
4.3 循环程序设计 139
4.3.1 概述 139
4.3.2 循环程序设计举例 147
4.4 子程序设计 158
4.4.1 子程序概述 158
4.4.2 过程定义与模块通信及调用返回语句 159
4.4.3 子程序的设计方法 164
4.4.4 系统功能调用 174
4.4.5 子程序设计举例 178
4.4.6 递归子程序 182
小结 186
习题四 186
第五章 高级汇编语言技术 191
5.1 宏指令的有关问题 191
5.1.1 宏定义 191
5.1.2 宏调用和宏扩展 193
5.1.3 宏体中的标号和变量 195
5.1.4 宏指令的嵌套 197
5.1.5 特殊的宏操作符 199
5.1.6 宏指令与子程序的区别 202
5.2 条件伪指令 202
5.2.1 条件伪指令概述 203
5.2.2 条件伪指令用法举例 204
5.3 重复伪指令 205
5.3.1 数值重复伪指令REPT 206
5.3.2 参数值重复伪指令IRP 207
5.3.3 字符重复伪指令IRPC 208
5.3.4 中止宏的伪指令EXITM 210
5.4 高级语言结构流程控制伪指令及其应用 210
5.4.1 分支结构流程控制伪指令及其应用 210
5.4.2 循环结构流程控制伪指令及其应用 216
小结 222
习题五 222
下篇 应用篇 227
第六章 保护模式及其程序设计 227
6.1 保护模式的预备知识 227
6.1.1 保护模式的三种地址空间 227
6.1.2 保护模式的段和页 228
6.1.3 保护模式涉及的数据结构及相关硬件 230
6.2 操作系统类指令 245
6.2.1 实模式和任何特权级下都可执行的指令 245
6.2.2 实模式或保护模式0特权级下可执行的指令 246
6.2.3 只能在保护模式下执行的指令 247
6.3 分段管理机制 250
6.3.1 任务间段的保护与共享 250
6.3.2 虚拟地址到线性地址的转换 250
6.4 保护模式下的控制转移 253
6.4.1 概述 253
6.4.2 任务内特权级不变的段间转移 255
6.4.3 任务内特权级变换的段间转移 255
6.4.4 任务切换 257
6.5 保护模式程序设计举例 259
6.5.1 预备知识 259
6.5.2 任务内特权级不变的段间转移实例 266
6.5.3 任务内特权级变换的段间转移实例 272
6.5.4 任务切换实例 279
6.6 分页管理机制 286
6.6.1 线性地址到物理地址的转换 287
6.6.2 页级保护和对虚拟存储器的支持 290
6.6.3 分页管理机制举例 291
6.7 中断和异常的处理 298
6.7.1 中断和异常的概念 298
6.7.2 异常类型及各种异常产生的原因 299
6.7.3 中断和异常处理的控制转移 303
6.7.4 演示中断处理举例 306
6.8 输入输出保护 313
6.8.1 输入输出保护的方法 314
6.8.2 重要标志位的保护 316
6.8.3 演示输入输出保护举例 316
6.9 虚拟86模式 327
6.9.1 进入和离开V86模式 327
6.9.2 进入和离开V86模式举例 330
6.9.3 V86模式的受限指令 341
小结 342
习题六 342
第七章 浮点程序设计 344
7.1 预备知识 344
7.1.1 FPU能直接处理的数据及其有关问题 344
7.1.2 与编程相关的FPU的硬件 348
7.2 FPU的指令语句 351
7.2.1 传送类指令语句 352
7.2.2 算术运算类指令语句 358
7.2.3 超越函数类指令语句 360
7.2.4 比较类指令语句 362
7.2.5 FPU控制类指令语句 367
7.3 FPU汇编语言程序设计 369
7.3.1 FPU程序设计的两个问题 369
7.3.2 FPU汇编语言程序设计举例 370
小结 377
习题七 378
第八章 汇编语言与高级语言的混合编程 379
8.1 混合编程的约定规则 379
8.1.1 命名规则 380
8.1.2 调用规则 380
8.2 MASM宏汇编语言对混合编程的支持 381
8.3 C/C++与汇编语言混合编程 383
8.3.1 模块链接法 383
8.3.2 嵌入式汇编 395
8.4 Pascal与汇编语言混合编程 400
小结 404
习题八 405
第九章 多媒体指令及其编程 406
9.1 MMX指令集 406
9.1.1 MMX技术基础 406
9.1.2 MMX指令集 409
9.1.3 MMX指令程序设计 417
9.2 SSE指令集 419
9.2.1 SSE技术基础 419
9.2.2 SSE指令集 421
9.2.3 SSE指令程序设计 430
9.3 SSE2指令集 431
9.3.1 SSE2编程环境 431
9.3.2 SSE2指令集 432
9.3.3 SSE2指令程序设计 442
小结 443
习题九 443
第十章 Win32环境下汇编语言程序设计 445
10.1 一个例子:Hello world 445
10.1.1 指令系统选择 446
10.1.2 工作模式选择 446
10.1.3 选项定义 447
10.1.4 链接头文件和库文件 447
10.1.5 段定义 448
10.2 Win32应用程序的特点 448
10.2.1 API函数 449
10.2.2 动态链接库 450
10.2.3 句柄 451
10.2.4 用户界面对象 451
10.2.5 资源 457
10.2.6 控件 458
10.3 Win32汇编程序设计方法 462
10.3.1 Windows系统的消息机制 462
10.3.2 Windows消息的格式 462
10.3.3 Windows程序的运行模式 463
10.3.4 Windows程序设计方法 463
10.3.5 Windows汇编程序设计流程 464
10.4 应用程序实例 464
10.4.1 控制台程序 464
10.4.2 动态链接库 466
小结 468
习题十 468
附录A 80x86指令系统一览表 471
附录B 汇编语言程序的上机实习指导 499
附录C DOS系统功能调用(INT 21H) 515
参考文献 523