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