第1章 概述 1
1.1 计算机语言是人机交流工具 1
1.1.1 机器语言 1
1.1.2 自然语言与汇编语言的对比 2
1.1.3 汇编程序和连接程序 2
1.1.4 汇编语言的构成 3
1.1.5 汇编语言的特点 4
1.2 预备知识 4
1.2.1 数制及其转换 4
1.2.2 无符号数与带符号数 7
1.2.3 原码和补码 8
1.2.4 逻辑运算 10
1.2.5 8086/8088支持的数据类型 11
本章要点 12
习题一 12
第2章 微型计算机的内部结构 14
2.1 微型计算机的构成 14
2.2 8086/8088MPU的内部结构 15
2.2.1 运算器 15
2.2.2 通用寄存器组 16
2.2.3 标志寄存器 17
2.2.4 段寄存器组 17
2.2.5 指令指针 18
2.2.6 地址加法器 18
2.2.7 其它部件 18
2.3 内存与物理地址 19
2.4 PC/XT微型计算机的内存分配 20
2.4.1 地址空间 20
2.4.2 8088系统的地址空间分配 20
2.5 逻辑地址到物理地址的变换 21
2.5.1 由逻辑地址计算物理地址 21
2.5.2 把内存划分成逻辑段 22
2.5.3 逻辑段的重叠 23
本章要点 24
习题二 25
第3章 基本指令与简单程序设计 26
3.1 寻址方式 26
3.1.1 立即数型寻址方式 26
3.1.2 寄存器型寻址方式 27
3.1.3 内存型寻址方式 27
3.14 外设型寻址方式 33
3.2 基本指令 34
3.2.1 MOV指令 34
3.2.2 ADD指令 35
3.2.3 SUB指令 36
3.2.4 MUL指令 37
3.2.5 DIV指令 38
3.3 单个字符的输入输出 39
3.3.1 DOS的1号子功能——单字符输入 40
3.3.2 DOS的2号子功能——单字符输出 40
3.4 源程序的基本格式 41
3.4.1 行的格式 42
3.4.2 段的格式 42
3.4.3 程序格式 43
3.4.4 完整程序实例 43
3.5 顺序程序设计 44
本章要点 47
习题三 48
第4章 分支与循环程序设计 50
4.1 条件标志位的设置规则 50
4.1.1 CF——进位和借位标志 50
4.1.2 SF——符号标志 51
4.1.3 OF——溢出标志 52
4.1.4 ZF——零标志 53
4.1.5 MOV、ADD、SUB、MUL、DIV指令对标志位的影响 53
4.1.6 CMP指令 53
4.2 跳转类指令 54
4.2.1 无条件跳转指令——JMP 54
4.2.2 条件跳转指令 54
4.3 分支程序设计 59
4.3.1 简单分支 59
4.3.2 两路分支 60
4.3.3 复杂条件的处理 61
4.3.4 多路分支 63
4.4 循环程序设计 65
4.4.1 先判断再循环 65
4.4.2 先循环再判断 66
4.4.3 计数型循环 67
4.4.4 循环嵌套 69
本章要点 70
习题四 70
第5章 变量 72
5.1 变量定义 72
5.1.1 变量名 72
5.1.2 定义变量的方法 73
5.1.3 变量的3个基本属性 74
5.2 为变量分配内存 77
5.2.1 内存图 77
5.2.2 变量定义与内存分配的关系 78
5.3 字符串输入输出方法 79
5.3.1 字符串输出 80
5.3.2 字符串输入 82
5.3.3 字符串输入输出程序实例 84
5.4 进一步的数据处理手段 85
5.4.1 带进位CF的加法 85
5.4.2 增1指令 86
5.4.3 带借位CF的减法 87
5.4.4 减1指令 87
5.4.5 求补操作 87
5.4.6 带符号数乘法 88
5.4.7 带符号数除法 88
5.4.8 字节型符号扩展 89
5.4.9 字型符号扩展 89
5.4.10 交换指令 89
5.4.11 查表转换 90
5.4.12 逻辑与 91
5.4.13 逻辑或 92
5.4.14 逻辑非 92
5.4.15 逻辑异或 92
5.4.16 位测试 93
5.5 常用伪指令 94
5.5.1 OFFSET 94
5.5.2 SEG 95
5.5.3 ASSUME 95
5.5.4 PTR 97
5.5.5 ORG 97
5.5.6 ? 98
5.5.7 =和EQU 99
本章要点 102
习题五 102
第6章 子程序 105
6.1 堆栈 105
6.1.1 堆栈段 105
6.1.2 进栈与出栈指令 106
6.2 子程序的基本格式和有关指令 108
6.2.1 汇编语言子程序格式 108
6.2.2 子程序相关指令 108
6.2.3 子程序的调用与返回 109
6.3 应用子程序进行编程 112
6.3.1 子程序实例 112
6.3.2 保护子程序中用到的寄存器 113
6.3.3 带参数的子程序 114
6.3.4 参数传递的方法 116
6.3.5 子程序的嵌套调用 121
6.4 整数输入与输出 122
6.5 子程序共享的方法 127
6.5.1 复制子程序的源代码 128
6.5.2 INCLUDE伪指令 128
6.5.3 库文件(.LIB) 129
6.6 递归 131
本章要点 137
习题六 137
第7章 编程中的高级处理技术 139
7.1 移位指令与应用 139
7.1.1 逻辑左移 139
7.1.2 算术左移 140
7.1.3 逻辑右移 140
7.1.4 算术右移 140
7.1.5 循环左移 141
7.1.6 循环右移 141
7.1.7 带进位的循环左移 141
7.1.8 带进位的循环右移 141
7.2 串操作 143
7.2.1 DF标志位 143
7.2.2 串操作指令 143
7.2.3 串重复前缀 148
7.3 宏 152
7.3.1 宏定义 152
7.3.2 宏调用 152
7.3.3 带参数的宏 153
7.3.4 宏操作中形参与实参的对应关系 155
7.3.5 宏体中的标号 157
7.3.6 宏的嵌套 158
7.3.7 宏与子程序的比较 159
7.4 重复汇编 159
7.4.1 有规律变化的重复 159
7.4.2 无规律变化的重复 160
本章要点 161
习题七 161
第8章 输入输出方法 164
8.1 输入输出的基本概念 164
8.1.1 外设接口 164
8.1.2 8088的独立编址方式 165
8.13 控制外设的指令 165
8.1.4 输入输出方式 167
8.2 无条件方式输入输出 168
8.3 查询方式输入输出 170
8.4 中断方式输入输出 173
8.4.1 中断的基本概念 173
8.4.2 中断处理过程 177
8.4.3 与中断有关的指令 179
8.4.4 系统提供的中断服务子程序 180
8.4.5 中断与子程序的比较 181
8.4.6 编写中断服务程序 182
本章要点 186
习题八 186
第9章 文件操作与终端控制 188
9.1 磁盘操作 188
9.1.1 文件名与文件代号 188
9.1.2 对文件中数据的操作 189
9.1.3 有关文件外部特性与目录的操作 194
9.2 控制键盘的技术 194
9.2.1 9号中断与键盘工作原理 195
9.2.2 16H号中断 195
9.2.3 DOS的输入子功能 196
9.2.4 封锁键盘的方法 196
9.3 字符方式下的屏幕控制技术 197
9.3.1 屏幕与光标 197
9.3.2 字符的属性 198
9.3.3 字符方式的显示缓冲区 198
9.3.4 BIOS的10H号中断服务程序 199
9.3.5 编程实例 203
本章要点 210
习题九 211
第10章 高档机汇编语言介绍 212
10.1 80386/80486新增功能 212
10.1.1 80386/80486的内部结构 212
10.1.2 80386/80486的工作模式 213
10.1.3 80386/80486的新增寻址方式 214
10.2 80386的新增指令 214
10.2.1 新增的数据传送类指令 214
10.2.2 新增的运算指令 215
10.2.3 新增位操作指令 216
10.3 80386编程示例 216
本章要点 219
附录一 8088汇编语言指令系统简表 220
附录二 汇编语言伪指令简表 225
附录三 DOS中断(21H号)子功能简表 227
附录四 BIOS中断调用简表 230
附录五 ASCII与扫描码表 232
附录六 使用DEBUG软件调试程序 233
A6.1 调试的基本过程 233
A6.2 DEBUG常用命令 233
A6.3 调试示例 238
参考文献 243