前言 1
第1章 基础知识 1
1.1 汇编语言程序设计概述 1
1.1.1 机器语言 1
1.1.2 汇编语言 1
1.1.3 为什么要学习和使用汇编语言 2
1.2 进位计数制及其相互转换 2
1.2.1 进位计数制 2
1.2.2 各种数制间的相互转换 4
1.3 计算机中数的表示 6
1.3.1 原码表示法 7
1.3.2 补码表示法 7
1.3.3 反码表示法 8
1.3.4 移码表示法 8
1.3.5 补码的加法和减法运算 8
1.3.6 定点数和浮点数 9
1.4 计算机中字符的表示 11
1.4.1 ASCⅡ码 11
1.4.2 BCD码 12
习题 12
2.1 Intel8086微处理器的功能结构 14
第2章 IBM PC计算机系统结构 14
2.1.1 执行部件与总线接口部件 16
2.1.2 Intel8086CPU寄存器的结构 19
2.1.3 标志寄存器(FR)及其用途 20
2.2 存储器 21
2.2.1 主存储器的组成 21
2.2.2 8086存储器的组织 22
2.3 堆栈(Stack) 24
2.3.1 堆栈的构造 24
2.3.2 8086堆栈的组织 25
2.3.3 堆栈操作 25
2.4.1 80486和Pentium微处理器的结构 26
2.4 Intel80486和Pentium微处理器的结构及存储管理 26
2.4.2 80486和Pentium微处理器寄存器结构 30
2.4.3 80486和Pentium存储管理 35
习题 35
第3章 指令系统和寻址方式 37
3.1 汇编指令格式 37
3.2 寻址方式 38
3.2.1 立即寻址 38
3.2.2 寄存器寻址 39
3.2.3 存储器寻址 39
3.2.4 隐含固定寻址 44
3.2.5 80x86扩充的寻址方式 45
3.2.6 转移地址寻址方式 46
3.3 8086指令系统 47
3.3.1 指令描述约定 47
3.3.2 数据传送指令 48
3.3.3 算术运算指令 54
3.3.4 位操作指令 67
3.3.5 处理器控制指令 73
3.4 80x86及Pentium扩展指令 74
3.4.1 80286增强和扩展指令 74
3.4.2 80386增强和扩展指令 75
3.4.3 80486新增指令 78
3.4.4 Pentium新增指令 79
习题 79
第4章 汇编语言与源程序结构 82
4.1 汇编语言源程序与汇编程序 82
4.2 汇编语言语句种类及其格式 83
4.2.1 指令语句 84
4.2.2 伪指令语句 84
4.2.3 标识符 85
4.3 汇编语言数据与运算符 85
4.3.1 常量 85
4.3.2 变量 87
4.3.4 表达式和运算符 90
4.3.3 标号 90
4.4 伪指令 97
4.4.1 数据定义伪指令 98
4.4.2 符号定义伪指令 98
4.4.3 段结构伪指令 99
4.4.4 源程序开始和结束伪指令 101
4.4.5 定位伪指令ORG与汇编地址计数器 102
4.5 源程序结构模式 103
4.5.1 用INT21H返回DOS的程序结构模式 103
4.4.6 过程定义伪指令PROC/ENDP 103
4.5.2 用过程返回DOS的程序结构模式 104
4.6 汇编语言程序的上机过程 105
4.6.1 编辑 105
4.6.2 汇编 106
4.6.3 连接 107
4.6.4 调试与运行 108
习题 110
第5章 程序设计基础 112
5.1 程序设计概述 112
5.2 顺序结构程序设计 112
5.3 分支结构程序设计 114
5.3.1 转移指令 115
5.3.2 分支程序设计 119
5.4 循环结构程序设计 128
5.4.1 循环程序的结构 128
5.4.2 循环指令 130
5.4.3 循环控制方法和程序举例 132
习题 140
第6章 子程序设计及系统调用 141
6.1 调用程序与子程序 141
6.2 调用与返回指令 141
6.3.2 子程序的调用与返回 143
6.3.1 子程序定义 143
6.3 子程序设计 143
6.3.3 现场保护与恢复 146
6.3.4 参数的传递方式 147
6.3.5 子程序调用举例 151
6.3.6 子程序的嵌套与递归 155
6.4 DOS系统功能调用 157
6.4.1 系统功能调用方法 157
6.4.2 常用的DOS功能调用 157
习题 159
7.1 串操作 161
7.1.1 串操作指令 161
第7章 非数值运算 161
7.1.2 串操作应用举例 164
7.2 表的处理 170
7.2.1 表的构造 170
7.2.2 表的插入与删除 172
7.2.3 排序 176
7.2.4 查找 181
7.3 代码转换 182
7.3.1 二进制数与ASCII码间的相互转换 183
7.3.2 二进制数与BCD码间的相互转换 184
习题 188
8.1.1 宏定义 190
第8章 高级语言汇编技术 190
8.1 宏汇编 190
8.1.2 宏调用和宏展开 191
8.1.3 宏调用中的参数使用 192
8.1.4 宏嵌套 194
8.1.5 宏汇编中的伪指令 195
8.1.6 宏库 196
8.1.7 宏与子程序的区别 198
8.2 重复汇编 198
8.2.1 使用REPT伪指令的重复汇编结构 198
8.2.3 使用IRPC伪指令的重复汇编结构 199
8.2.2 使用IRP伪指令的重复汇编结构 199
8.3 条件汇编伪指令 200
习题 202
第9章 输入/输出程序设计 203
9.1 输入/输出指令 203
9.1.1 I/O端口寻址 203
9.1.2 输入/输出指令 204
9.2 输入/输出控制方式 207
9.2.1 程序控制方式 207
9.2.2 中断控制方式 210
9.2.3 直接存储器存取方式 210
9.3.1 中断的概念 212
9.3 中断 212
9.3.2 中断源、中断类型码和中断优先级 213
9.3.3 中断矢量表 215
9.3.4 中断过程 216
9.3.5 软中断及有关的中断指令 219
9.4 BIOS中断调用 219
9.4.1 键盘输入中断调用 220
9.4.2 显示器输出控制中断调用 221
9.4.3 时间中断调用 225
9.4.4 中断调用程序举例 225
习题 228
10.1 模块化程序设计概述 229
10.1.1 模块化程序设计概念 229
10.1.2 模块化程序设计的优点 229
10.1.3 模块划分的原则和方法 229
第10章 模块化程序设计 229
10.2 段的定义 230
10.2.1 定位类型 231
10.2.2 组合类型 231
10.2.3 类别 232
10.3 模块间的通信 232
10.4.1 源程序级间的装配连接 234
10.4 模块的连接 234
10.4.2 目标文件级间的装配连接 235
10.5 源程序综合举例 237
习题 241
上机实验指导 242
附录A DOS功能调用INT 21H 265
附录B BIOS中断 271
附录C MASM 5.0宏汇编出错信息 276
附录D DEBUG命令表 282
附录E ASCII码表 283
参考文献 284