第1章 基础知识 1
1.1 汇编语言程序的一般概念 1
1.1.1 机器语言 1
1.1.2 高级语言 2
1.1.3 汇编语言 3
1.2 进位计数制及其相互转换 3
1.2.1 进位计数制 3
1.2.2 各种数制间的相互转换 4
1.3 计算机中数和字符的表示 9
1.3.1 带符号数的表示 9
1.3.2 字符的表示 13
1.4 基本逻辑运算 14
习题1 15
第2章 IBM PC微型计算机基本构成 17
2.1 IBM PC微型计算机的基本结构 17
2.1.1 微型计算机系统的组成 17
2.1.2 Intel 8086/8088微处理器的功能结构 20
2.2 Intel 8086/8088 CPU的寄存器组 23
2.2.1 通用寄存器 23
2.2.2 段寄存器 25
2.2.3 控制寄存器 26
2.3 存储器 30
2.3.1 IBM PC存储器的组织 30
2.3.2 存储器的段结构 31
2.3.3 逻辑地址与物理地址 33
2.4 堆栈 36
2.4.1 堆栈的概念 36
2.4.2 堆栈的组织 37
2.4.3 堆栈的操作 38
习题2 40
第3章 Intel 8086/8088的寻址方式与指令系统 42
3.1 寻址方式 42
3.1.1 寄存器寻址 43
3.1.2 立即数寻址 43
3.1.3 存储器寻址 44
3.2 指令系统 54
3.2.1 传送类指令 54
3.2.2 算术运算类指令 65
3.2.3 位操作类指令 71
3.2.4 处理器控制类指令 80
3.3 指令编码 81
3.3.1 双操作数指令编码格式 82
3.3.2 单操作数指令编码格式 87
3.3.3 与AX或AL有关的指令编码格式 88
3.3.4 其他指令编码格式 89
习题3 90
第4章 基本汇编语言 94
4.1 汇编语言语句种类及其格式 94
4.1.1 指令语句 94
4.1.2 伪指令语句 95
4.1.3 标识符 96
4.2 汇编语言数据 96
4.2.1 常量 96
4.2.2 变量 97
4.2.3 标号 104
4.3 表达式与运算符 105
4.3.1 算术运算符 105
4.3.2 移位运算符 106
4.3.3 逻辑运算符 107
4.3.4 关系运算符 108
4.3.5 数值返回运算符 108
4.3.6 属性修改运算符 112
4.3.7 运算符的优先级 113
4.4 常用的伪指令 114
4.4.1 符号定义伪指令 114
4.4.2 数据定义伪指令 116
4.4.3 LABEL属性定义伪指令 118
4.4.4 SEGMENT/ENDS段定义伪指令 119
4.4.5 ASSUME段寻址伪指令 122
4.4.6 PROC/ENDP过程定义伪指令 124
4.4.7 ORG定位伪指令和$当前位置计数器 125
4.4.8 TITLE标题伪指令 126
4.4.9 END程序结束伪指令 126
4.4.10 PUBLIC和EXTRN模块连接伪指令 126
4.5 汇编源程序的结构 128
4.5.1 程序的段结构 128
4.5.2 段寄存器的装入 130
4.6 程序返回操作系统 133
4.6.1 用4CH系统功能调用实现返回 133
4.6.2 用程序段前缀实现返回 134
习题4 135
第5章 顺序、分支与循环程序设计 140
5.1 概述 140
5.2 顺序程序设计 143
5.3 分支程序设计 145
5.3.1 无条件转移指令 147
5.3.2 条件转移指令 150
5.3.3 分支程序设计 154
5.4 循环程序设计 163
5.4.1 循环控制指令 163
5.4.2 循环程序结构 164
5.4.3 单重循环程序设计 166
5.4.4 多重循环程序设计 171
习题5 175
第6章 子程序设计 180
6.1 子程序的调用与返回 181
6.1.1 子程序的定义 181
6.1.2 调用指令 181
6.1.3 返回指令 183
6.2 子程序设计的基本要求 184
6.3 子程序与主程序间的参数传递 186
6.3.1 用寄存器传递参数 186
6.3.2 用堆栈传递参数 188
6.3.3 用地址表传递参数 190
6.4 子程序的嵌套与递归调用 192
6.4.1 子程序的嵌套调用 192
6.4.2 子程序的递归调用 192
习题6 194
第7章 汇编语言简单应用程序设计 198
7.1 算术运算调整指令及其应用 198
7.1.1 BCD码校正及其加减法BCD码校正指令 198
7.1.2 乘除法运算及其BCD码校正指令 204
7.1.3 开方运算 212
7.2 串和表的处理 216
7.2.1 串操作指令 216
7.2.2 表的处理 221
7.3 代码转换及其应用 225
7.3.1 十六进制ASCII码与二进制数之间的转换 225
7.3.2 二进制数与十进制数之间转换 229
习题7 230
第8章 高级宏汇编语言 231
8.1 结构 231
8.1.1 结构的定义 232
8.1.2 结构的预置与存储分配 232
8.1.3 对结构变量及其字段的操作 234
8.1.4 程序举例 235
8.2 记录 237
8.2.1 记录的定义 237
8.2.2 记录的预置与存储分配 238
8.2.3 记录运算符 239
8.2.4 对记录及其字段的操作 240
8.3 宏指令 241
8.3.1 宏指令的使用过程 241
8.3.2 宏操作符 244
8.3.3 局部符号伪指令 246
8.3.4 宏库 247
8.4 重复汇编 249
8.4.1 定重复伪指令 249
8.4.2 不定重复伪指令 250
8.5 条件汇编 251
习题8 255
第9章 输入输出和中断 259
9.1 输入输出指令 259
9.1.1 I/O端口 259
9.1.2 I/O端口寻址 260
9.1.3 I/O指令 261
9.2 输入输出控制方式 263
9.2.1 程序控制方式 263
9.2.2 中断控制方式 267
9.2.3 直接存储器存取方式 267
9.3 中断 269
9.3.1 中断源及中断类型码 270
9.3.2 中断矢量表 271
9.3.3 中断优先级 272
9.3.4 中断过程 272
9.3.5 如何编写中断处理程序 275
9.4 BIOS和DOS中断调用 277
9.4.1 键盘BIOS功能调用 279
9.4.2 键盘DOS功能调用 281
9.4.3 打印机BIOS功能调用17H 282
9.4.4 时钟BIOS和DOS功能调用 283
9.4.5 显示器BIOS功能调用 284
9.4.6 显示器DOS功能调用 286
9.5 程序举例 286
习题9 290
第10章 32位微处理器指令及编程基础 291
10.1 80x86系列微处理器结构 291
10.1.1 80386微处理器的特点 291
10.1.2 80386微处理器的内部结构 292
10.1.3 80386微处理器的寄存器 293
10.1.4 80486微处理器 295
10.1.5 Pentium微处理器 296
10.2 80x86系列微处理器指令的特点 296
10.2.1 微处理器的工作模式 296
10.2.2 寻址方式 298
10.3 80x86系列微处理器的指令 298
10.3.1 数据传送指令 298
10.3.2 算术运算指令 299
10.3.3 逻辑运算与移位指令 300
10.3.4 堆栈操作指令 300
10.3.5 串操作指令 301
10.3.6 控制转移指令 301
10.3.7 位操作指令 302
10.3.8 I/O指令 302
10.3.9 特权指令 303
10.4 程序设计举例 303
习题10 305
第11章 汇编语言程序的开发 306
11.1 汇编语言程序的开发过程 306
11.2 编辑 307
11.3 汇编器的使用 308
11.4 连接器的使用 311
11.5 调试与运行 313
11.5.1 调试程序DEBUG的主要特点 313
11.5.2 DEBUG程序的启动与退出 314
11.5.3 显示命令 315
11.5.4 修改命令 316
11.5.5 程序运行 318
11.5.6 其他常用DEBUG命令 318
11.5.7 调试程序的基本步骤 320
附录A ASCII码字符表 323
附录B 80x86系列微处理器指令系统汇总表 324
附录C DOS系统功能调用(INT 21H) 353
附录D BIOS中断调用 359
参考文献 364