第1章 基础知识 1
1.1 数据表示方法 1
1.1.1 数与数制 1
1.1.2 数制转换 3
1.1.3 计算机中的数据表示 4
1.1.4 基本数据类型 7
1.2 80x86和Pentium微处理器的功能结构 8
1.2.1 8086/8088微处理器功能结构 8
1.2.2 80286微处理器功能结构 8
1.2.3 80386微处理器功能结构 10
1.2.4 80486微处理器功能结构 11
1.2.5 Pentium微处理器功能结构 12
1.3 80x86和Pentium微处理器的寄存器结构 13
1.3.1 基本体系结构寄存器 13
1.3.2 系统级寄存器和调试与测试寄存器 16
1.4 汇编语言程序设计概述 18
1.4.1 程序设计语言 18
1.4.2 汇编语言的特点和使用场合 19
1.4.3 流程图的画法 20
1.4.4 汇编语言程序设计的基本步骤 20
1.4.5 汇编语言程序质量的评价标准 22
习题1 22
第2章 实模式下的存储器组织与寻址方式 24
2.1 实模式下的存储器组织 24
2.1.1 存储单元的地址和内容 24
2.1.2 存储器的地址分段 25
2.2 寻址方式 28
2.2.1 数据寻址方式 28
2.2.2 程序存储器寻址方式 32
习题2 33
第3章 伪指令及汇编语言源程序结构 35
3.1 汇编语言语句类型及格式 35
3.1.1 语句类型 35
3.1.2 语句格式 35
3.2 伪指令 38
3.2.1 符号定义伪指令 38
3.2.2 数据定义伪指令 39
3.2.3 段定义伪指令 43
3.2.4 简化段定义伪指令 45
3.2.5 程序开始和结束伪指令 46
3.2.6 指令集选择伪指令 46
3.2.7 过程定义伪指令 47
3.3 汇编语言源程序结构 47
3.3.1 完整段定义结构 47
3.3.2 简化段定义结构 49
3.3.3 程序段前缀结构 50
3.3.4 可执行程序结构 50
习题3 53
第4章 基本指令系统与顺序结构程序设计 55
4.1 基本指令系统 55
4.1.1 数据传送指令 55
4.1.2 算术运算指令 60
4.1.3 十进制算术运算指令 67
4.1.4 逻辑运算指令 69
4.1.5 处理器控制指令 76
4.2 顺序结构程序设计 77
习题4 82
第5章 转移指令与分支结构程序设计 85
5.1 转移指令 85
5.1.1 无条件转移(JMP)指令 85
5.1.2 条件转移指令 87
5.2 分支结构程序设计 89
5.2.1 双分支结构程序设计 90
5.2.2 多分支结构程序设计 93
习题5 100
第6章 循环指令与循环结构程序设计 103
6.1 循环控制指令 103
6.2 循环程序的结构 107
6.2.1 循环程序的组成 107
6.2.2 循环程序的结构 108
6.2.3 循环次数的控制方法 109
6.3 多重循环程序设计 112
6.4 串操作程序 115
6.4.1 串操作指令 115
6.4.2 串操作程序举例 117
6.5 循环程序设计举例 120
习题6 125
第7章 子程序设计 127
7.1 概述 127
7.2 子程序调用和返回指令 129
7.2.1 子程序调用指令 129
7.2.2 返回指令 130
7.3 子程序的定义、调用和返回 131
7.3.1 子程序的定义 131
7.3.2 子程序的调用和返回 134
7.4 子程序的参数传递方法 135
7.4.1 通过寄存器传递参数 135
7.4.2 通过堆栈传递参数 138
7.4.3 通过存储单元传递参数 141
7.5 子程序的嵌套与递归 144
7.5.1 子程序的嵌套调用 144
7.5.2 子程序的递归调用 146
7.6 子程序设计举例 147
7.6.1 输入/输出子程序 147
7.6.2 代码转换子程序 149
7.6.3 多位数运算子程序 153
习题7 162
第8章 实模式下的中断程序设计 164
8.1 中断概述 164
8.1.1 中断与中断源 164
8.1.2 中断分类 165
8.1.3 中断向量表 166
8.1.4 中断过程 167
8.1.5 中断优先级 167
8.1.6 中断指令 168
8.2 中断处理程序设计 168
8.2.1 中断处理程序的编写 168
8.2.2 设置和获取中断向量 169
8.2.3 中断程序设计举例 171
8.3 BIOS中断调用 172
8.3.1 BIOS概述 172
8.3.2 BIOS中断调用方法 173
8.4 DOS功能调用 175
8.4.1 DOS功能调用概述 175
8.4.2 基本I/O功能调用 176
8.4.3 应用举例 178
8.5 磁盘文件管理 180
8.5.1 传统文件管理方式 180
8.5.2 扩充文件管理方式 184
习题8 189
第9章 输入/输出程序设计 191
9.1 概述 191
9.1.1 CPU与I/O设备之间的接口信息 191
9.1.2 典型的I/O接口形式 192
9.1.3 输入/输出的寻址方式与指令 193
9.2 CPU与外设数据传送方式 195
9.2.1 程序直接控制方式 195
9.2.2 程序中断方式 197
9.2.3 直接存储器存取方式 199
9.2.4 通道传送方式 200
习题9 200
第10章 保护模式下的存储器管理 202
10.1 工作模式概述 202
10.1.1 80x86的几种工作模式 202
10.1.2 保护模式的特点 203
10.2 保护模式 204
10.2.1 存储组织 204
10.2.2 存储保护 205
10.3 段式管理机制 206
10.3.1 段定义和地址转换 207
10.3.2 存储段描述符 208
10.3.3 描述符表 210
10.3.4 段选择子 210
10.3.5 段描述符高速缓冲寄存器 211
10.4 页式管理机制 212
10.4.1 页式管理机制概述 212
10.4.2 线性地址到物理地址的转换 213
10.4.3 页级保护和虚拟存储器支持 215
10.4.4 页异常 217
10.5 控制寄存器和系统地址寄存器 217
10.5.1 控制寄存器 218
10.5.2 系统地址寄存器 219
10.6 任务状态段和控制门 220
10.6.1 系统段描述符 220
10.6.2 门描述符 222
10.6.3 任务状态段 223
习题10 226
第11章 保护模式下的程序设计简介 228
11.1 保护模式编程基础 228
11.1.1 处理器类型伪指令 228
11.1.2 A20地址线的使用 229
11.1.3 头文件 229
11.2 实模式与保护模式之间的切换 235
11.2.1 两种模式之间切换 235
11.2.2 两种模式切换实例 235
11.3 控制转移 241
11.3.1 任务内无特权级切换的转移 241
11.3.2 任务内不同特权级的切换 243
11.3.3 任务切换 244
11.3.4 任务切换实例 246
11.4 中断和异常 253
11.4.1 80386的中断和异常 253
11.4.2 异常类型 254
11.4.3 中断和异常的转移方法 258
11.4.4 中断处理实例 262
11.5 操作系统类指令 266
11.5.1 实模式和任何特权级下可执行的指令 266
11.5.2 实模式及特权级0下可执行的指令 267
11.5.3 只能在保护模式下执行的指令 269
11.6 输入/输出保护 272
11.6.1 输入/输出保护的方法 272
11.6.2 重要标志保护 274
11.6.3 输入/输出保护实例 275
11.7 页式管理机制实例 283
11.8 虚拟8086模式 289
11.8.1 V86模式 289
11.8.2 进入和离开V86模式 289
11.8.3 V86模式下的敏感指令 292
习题11 292
第12章 高级汇编技术 293
12.1 宏汇编 293
12.1.1 宏指令的定义、调用和展开 293
12.1.2 宏操作符 296
12.1.3 LOCAL伪指令 298
12.1.4 宏嵌套 300
12.1.5 宏程序库 302
12.1.6 宏指令与子程序的区别 302
12.2 重复汇编和条件汇编 302
12.2.1 重复汇编 302
12.2.2 条件汇编 304
习题12 306
附录A 汇编语言的上机过程 307
附录B 动态调试程序DEBUG 313
附录C 80x86/Pentiu.m指令系统 322
附录D 常用DOS功能调用表 326
参考文献 332