目录 1
1 汇编语言基础知识 1
1.1 数据在计算机内的表示 1
1.1.1 数值数据的表示 1
1.1.2 字符数据的表示 3
1.2 计算机系统简介 5
1.2.1 计算机的硬件 5
1.2.2 计算机的软件 7
1.3 Intel8086 CPU简介 7
1.3.1 执行单元 9
1.3.2 总线接口单元 11
1.4 Intel8086的内存和堆栈 13
1.4.1 内存储器 13
1.4.2 堆栈 13
1.4.3 存储器物理地址的形成 14
1.5 计算机语言概述 15
1.5.1 机器语言 16
1.5.2 汇编语言 16
1.5.3 高级语言 17
1.5.4 各种语言的比较 18
习题与思考题 19
2 汇编语言程序组织 20
2.1 汇编源程序举例 20
2.1.1 源程序例题1 20
2.1.2 源程序例题2 23
2.2 汇编语言源程序结构 27
2.2.1 汇编语言的语句格式 27
2.2.2 汇编语言各语句项 28
2.3.1 变量定义伪指令 30
2.3 常用伪指令 30
2.3.2 赋值伪指令EQU 32
2.3.4 符号定义伪指令LABEL 33
2.3.5 段定义伪指令SEGMENT…ENDS 33
2.3.3 等号伪指令= 33
2.3.6 假定伪指令ASSUME 34
2.3.7 置汇编地址计数器伪指令ORG 35
2.3.8 结束伪指令END 35
2.4 常用DOS输入输出功能调用 36
2.4.1 一个字符的输出 36
2.4.2 字符串的输出 37
2.4.3 键盘输入一个字符 37
2.4.4 控制台输入一个字符 38
2.4.5 键盘输入字符串 38
2.5 宏汇编语言程序的上机全过程 39
2.5.1 建立与修改汇编源程序(源程序文件的扩展名为ASM) 39
2.5.2 对源程序文件汇编产生相应的目标文件(目标文件的扩展名为OBJ) 40
2.5.3 连接目标文件生成可执行文件(可执行文件的扩展名为EXE) 43
2.5.4 运行可执行文件 45
习题与思考题 45
实验题 46
3 寻址方式与常用的汇编指令 47
3.1 寻址方式 47
3.1.1 立即寻址(Immediate Addressing) 47
3.1.2 直接寻址(Direct Addressing) 48
3.1.3 寄存器寻址(Register Addressing) 49
3.1.4 寄存器间接寻址(Register Indirect Addressing) 49
3.1.5 变址寻址(Indexed Addressing) 50
3.1.6 基址加变址寻址(Based Indexed Addressing) 51
3.1.7 跨段问题 52
3.1.8 寻址方式综合例子 53
3.2.1 数据传送指令 54
3.2 常用的指令系统 54
3.2.2 算术运算类指令 58
3.2.3 逻辑运算与移位类指令 63
3.2.4 十进制算术运算指令 68
3.3 汇编语言中的表达式 71
3.3.1 数值表达式 71
3.3.2 地址表达式 72
3.3.3 运算符的优先级 76
习题与思考题 78
实验题 82
4.1 顺序结构程序设计 84
4 基本结构程序设计 84
4.1.1 顺序程序设计的结构形式 85
4.1.2 顺序程序举例 86
4.2 分支结构程序设计 87
4.2.1 转移指令 89
4.2.2 分支程序设计 94
4.2.3 树形分支程序设计 97
4.3 循环结构程序设计 99
4.3.1 循环程序的结构 100
4.3.2 循环程序的控制 101
4.3.3 多重循环程序的设计 109
4.4 子程序的设计 111
4.4.1 子程序的结构 111
4.4.2 子程序参数传递 115
4.4.3 子程序的嵌套 120
4.5 应用举例 121
习题与思考题 126
实验题 128
5 高级汇编程序设计 129
5.1 字符串操作 129
5.1.1 字符串传送指令 130
5.1.2 串比较指令 133
5.1.3 串搜索指令 135
5.1.4 串读取指令 137
5.1.5 串存储指令 138
5.2.1 宏定义 141
5.2 宏结构程序设计 141
5.2.2 宏调用与宏扩展 142
5.2.3 宏指令中参数的使用 145
5.2.4 宏库的建立与使用 149
5.2.5 宏指令与子程序的比较 151
5.3 多模块程序设计 152
5.3.1 多模块程序设计举例 153
5.3.2 模块之间的组合方式 157
5.4 子程序库的建立方法 159
5.3.3 模块之间的通信方式 159
5.5 汇编综合举例 161
习题与思考题 168
实验题 168
6 中断程序设计及系统调用 170
6.1 输入输出指令 170
6.1.1 I/O端口 170
6.1.2 IN/OUT指令 170
6.2 中断 172
6.2.1 中断概念 172
6.2.2 中断向量表 175
6.2.3 中断服务程序 176
6.3.2 DOS系统功能调用 179
6.3.1 BIOS与DOS中断调用概述 179
6.3 常用BIOS与DOS中断调用 179
6.3.3 BIOS系统中断调用 180
6.4 磁盘文件管理 183
6.4.1 磁盘文件管理的基本要求 183
6.4.2 磁盘文件管理的功能调用 184
习题与思考题 187
实验题 189
7 汇编语言与C语言的连接 190
7.1.1 嵌入C语言程序中的汇编语句的格式 190
7.1 C语言程序中直接嵌入汇编程序 190
7.1.2 汇编语句访问C语言的数据 191
7.1.3 嵌入汇编语句的C语言程序的编译过程 192
7.2 C语言与汇编语言的混合编程 194
7.2.1 混合编程的约定规则 194
7.2.2 在C程序中直接调用汇编子程序 196
7.2.3 混合编程的参数传递 198
7.2.4 汇编语言程序对C语言程序的调用 203
习题与思考题 206
实验题 206
8 80X86及Pentium汇编指令介绍 208
8.1 32位微处理器 208
8.2 32位扩展指令 209
8.2.1 数据传送类指令 210
8.2.2 算术运算类指令 212
8.2.4 串操作类指令 214
8.2.3 位操作类指令 214
8.2.5 控制转移类指令 215
8.2.6 高级语言支持 215
8.3 80386新增指令 216
8.3.1 双精度移位指令 216
8.3.2 位扫描指令 217
8.3.3 位操作指令 217
8.3.4 条件设置指令 218
8.4 80486新增指令 219
8.4.1 字节交换指令 219
8.4.2 交换加指令 219
8.4.3 比较交换指令 219
8.5.1 8字节交换指令 220
8.5 Pentium新增指令 220
8.4.4 高速缓存(Cache)无效指令 220
8.4.5 回写及高速缓存无效指令 220
8.4.6 TLB无效指令 220
8.5.2 处理器特征识别指令 221
8.5.3 读时间标记计数器指令 222
8.5.4 读模型专用寄存器指令RDMSR 222
8.5.5 写模型专用寄存器指令WRMSR 223
8.5.6 系统管理方式返回指令RSM 223
习题与思考题 223
附录 225
附录A IBM-PC ASCII码表 225
附录B DEBUG命令表 226
B.1 运行DEBUG 226
B.2 DEBUG命令的一些共同特点 226
B.3 DEBUG命令 226
C.1 数据传送指令 229
附录C 8086指令表 229
C.2 算术运算指令 230
C.3 位操作指令 232
C.4 串操作指令 233
C.5 控制转移指令 234
C.6 处理机控制指令 235
附录D 伪指令表 236
D.1 数据定义伪指令 236
D.3 义段、组、过程的伪指令 237
D.2 符号定义伪指令 237
D.4 程序模块的定义与通信伪指令 238
D.5 宏定义伪指令 238
D.6 其他伪指令 239
附录E 汇编错误代码信息表 239
E.1 错误代码 239
E.2 未编号的错误信息 244
参考文献 246