目录 3
第1部分 实模式编程 3
第1章 预备知识 3
1.1 进位记数制及不同数制间的转换 3
1.1.1 什么是进位记数制 3
1.1.2 计算机中常用的进位记数制 3
1.1.3 不同进位记数制之间的转换 4
1.2 二进制数的算术和逻辑运算 5
1.2.1 二进制数的算术运算 5
1.2.2 二进制数的逻辑运算 6
1.3 数和字符在计算机中的表示方法 7
1.3.1 整数在计算机中的表示 7
1.3.2 字符编码 8
1.3.3 BCD码 9
习题1 10
第2章 微处理器的基础知识 11
2.1 Intel 80x86系列微处理器简介 11
2.1.1 Intel 80x86系列微处理器 11
2.1.2 3种运行模式 14
2.2 程序可见寄存器组 17
2.3 存储器 21
2.3.1 基本概念 21
2.3.2 存储器分段管理 22
2.3.3 实模式存储器寻址 23
2.4.1 MS-DOS 24
2.4 PC操作系统的发展 24
2.4.2 桌面Windows系统 25
2.4.3 Windows NT系列 25
2.4.4 Linux 26
2.5 DOS内存布局 27
2.6 外部设备及I/O地址空间 28
2.7 汇编语言概述 29
2.7.1 程序设计语言概述 29
2.7.2 汇编语言概述 29
习题2 32
第3章 寻址方式及指令集 34
3.1 Intel 80x86指令集的发展 34
3.2 与数据有关的寻址方式 35
3.3 数据传送指令 41
3.4 算术运算指令 51
3.4.1 二进制算术运算指令 51
3.4.2 十进制算术运算指令 61
3.5 逻辑指令 65
3.6 程序控制指令 70
3.6.1 与转移地址有关的寻址方式 70
3.6.2 程序控制指令简介 72
3.7 处理机控制指令 81
3.8 串操作指令 82
3.9 条件字节设置指令 87
习题3 88
4.1 汇编语言语句格式 91
第4章 汇编语言程序组织 91
4.2 汇编语言源程序结构 92
4.2.1 典型的.exe文件结构 92
4.2.2 典型的.com文件结构 96
4.3 常用伪指令 98
4.3.1 数据定义伪指令 99
4.3.2 LABEL伪指令 100
4.3.3 符号定义伪指令 101
4.3.4 对准伪指令 102
4.3.5 结构伪指令 103
4.3.6 微处理器伪指令 107
4.4 汇编语言操作符 108
4.5.1 .exe文件上机过程 111
4.5 汇编语言程序上机过程 111
4.5.2 .com文件上机过程 118
4.5.3 高版本——集汇编与连接一起的ML.exe 118
4.6 调用ROM BIOS或DOS中断实现数据的输入输出 119
4.6.1 使用ROM BIOS中断调用 120
4.6.2 使用DOS系统功能调用 128
4.7 简化段定义 132
习题4 135
第5章 程序基本结构及其程序设计 138
5.1 顺序结构及简单程序设计 138
5.2 分支结构及程序实现 139
5.3 循环结构及程序实现 149
习题5 156
6.1.1 含有子程序的程序结构 158
第6章 子程序与宏指令设计 158
6.1 子程序结构及设计方法 158
6.1.2 设计子程序时应注意的问题 160
6.2 子程序参数传递 161
6.2.1 通过寄存器传递 161
6.2.2 同模块中的子程序可直接访问模块中的变量 162
6.2.3 通过地址表传递参数地址 163
6.2.4 通过堆栈传递参数或参数地址 165
6.3 嵌套与递归子程序 171
6.4 宏指令 174
6.4.1 宏定义、宏调用、宏扩展 174
6.4.2 LOCAL伪指令 177
6.4.3 宏指令嵌套 178
6.4.4 宏操作符 180
6.4.5 列表伪指令 184
6.5 宏指令库 185
6.5.1 建立宏指令库 185
6.5.2 包含与删除——INCLUDE和PURGE伪指令 189
6.5.3 使用宏指令库中的宏指令 189
6.5.4 宏指令与子程序的区别 190
6.6 重复伪指令 191
6.6.1 重复伪指令REPT 191
6.6.2 不定重复伪指令 193
6.7 条件伪指令 195
习题6 199
7.1 概述 202
第7章 实模式I/O程序设计 202
7.2 程序查询方式 203
7.3 中断传送方式 208
7.3.1 中断的基本概念 208
7.3.2 中断分类 209
7.3.3 可屏蔽中断的进一步讨论 211
7.3.4 中断优先级与中断嵌套 212
7.3.5 实模式中断处理过程 213
7.3.6 存取中断向量 215
7.3.7 中断处理子程序的设计步骤 215
7.3.8 中断程序设计举例 216
7.4 DMA方式简介 223
7.5.1 文件命名 225
7.5 磁盘文件存取技术 225
7.5.2 DOS的句柄式文件管理功能 226
7.5.3 利用句柄存取文件的程序举例 230
7.5.4 字符设备句柄式输入输出 238
习题7 239
第8章 汇编语言高级编程技巧 241
8.1 模块化程序设计 241
8.1.1 模块通信 242
8.1.2 模块连接 248
8.1.3 模块组织建议 252
8.1.4 模块程序设计上机步骤 253
8.1.5 综合举例 254
8.2.1 在C程序中直接嵌入汇编代码 260
8.2 汇编语言程序与高级语言程序的连接 260
8.2.2 在C程序中直接调用汇编子程序 262
8.2.3 汇编语言程序调用C函数 269
8.3 使用DOS EXEC功能执行程序 269
8.3.1 DOS的内存分配与释放功能简介 269
8.3.2 使用DOS EXEC功能加载并执行程序 270
8.4 TSR程序设计 276
习题8 282
第2部分 保护模式编程 285
第9章 32位CPU及Windows基础 285
9.1 保护模式基础 285
9.1.1 32位CPU内部结构 285
9.1.2 程序不可见寄存器组 287
9.2 内存管理 289
9.2.1 分段内存管理 289
9.2.2 分页内存管理 295
9.2.3 寻址方式的增强 299
9.3 Windows环境 301
9.3.1 Windows程序的执行环境 301
9.3.2 Windows的保护机制 303
9.3.3 32位堆栈 305
习题9 307
第10章 Windows汇编语言程序设计基础 309
10.1 Windows汇编环境 309
10.1.1 Windows下的MASM与LINK 309
10.1.2 Windows汇编源程序的格式 311
10.1.3 图形界面与字符界面 320
10.2 Windows下的子程序设计与函数调用 321
10.2.1 通过全局变量及寄存器传递参数 321
10.2.2 C函数的参数传递方式cdecl 324
10.2.3 伪指令invoke 326
10.2.4 Windows中汇编与C的相互调用 328
10.2.5 在汇编中调用Windows的API 335
10.2.6 C++与汇编 337
10.3 使用Visual C编译调试汇编程序 345
10.3.1 建立工程 345
10.3.2 设置调试选项 347
10.3.3 常用调试命令 350
习题10 351
第11章 深入Windows汇编编程 352
11.1 汇编高级语法 352
11.1.1 条件测试表达式 353
11.1.2 分支伪操作 355
11.1.3 循环伪操作 357
11.2 程序优化 360
11.2.1 运行时间的优化 360
11.2.2 占用空间的优化 366
11.3 文件操作 371
11.3.1 文件操作的基本函数 371
11.3.2 文件处理实例 374
11.4.1 捕捉程序中的异常 381
11.4 结构化异常处理 381
11.4.2 汇编程序中的异常处理 383
习题11 386
第12章 保护模式及其应用 388
12.1 特权级保护 388
12.1.1 对数据访问的保护 388
12.1.2 对程序转移的保护 390
12.1.3 门 392
12.2 任务 395
12.2.1 任务状态段 395
12.2.2 任务切换 399
12.2.3 输入输出保护 403
12.3.1 中断和异常的类型 415
12.3 中断和异常 415
12.3.2 中断门和陷阱门 422
12.3.3 中断和异常的处理过程 424
12.3.4 外部中断源 428
12.3.5 通过任务门的转移 431
12.4 虚拟8086模式 434
12.5 操作系统类指令 437
习题12 438
附录A 汇编语言伪指令和操作符 442
附录B DEBUG调试工具 444
附录C INT 21H DOS系统功能调用中断 447
附录D BIOS中断调用 456
参考文献 460