第1章 汇编语言基础知识 3
1.1 汇编语言概述 3
1.1.1 汇编语言基本概念 3
第一部分 8086/8088汇编语言程序设计 3
1.1.2 汇编语言的特点 4
1.2 进位计数制及其转换 5
1.2.1 数与数制 6
1.2.2 不同数制之间的转换 7
1.3 计算机中数与字符的表示方法 11
1.3.1 数值型数据的编码 11
1.3.2 非数值型数据的编码 17
小结 20
习题 21
第2章 IBM-PC系统结构 22
2.1 微型计算机发展概述 22
2.2.1 硬件 23
2.2 微型计算机系统 23
2.2.2 软件 25
2.3 8086/8088CPU的内部结构 25
2.3.1 8086/8088CPU功能结构 25
2.3.2 8086/8088CPU的寄存器组 27
2.4 8086/8088的存储器结构 31
2.4.1 存储单元的地址和内容 31
2.4.2 存储器的分段 31
2.4.3 物理地址的形成 32
习题 33
第3章 8086/8088寻址方式和指令系统 34
3.1 指令的基本格式 34
3.2 8086/8088寻址方式 34
3.2.1 与数据有关的寻址方式 35
3.2.2 与转移地址有关的寻址方式 40
3.3.1 数据传送指令 42
3.3 8086/8088的指令系统 42
3.3.2 算术运算指令 46
3.3.3 逻辑指令 51
3.3.4 串处理指令 54
3.3.5 控制转移指令 57
3.3.6 处理器控制指令 60
习题 61
第4章 8086/8088汇编语言(格式) 65
4.1 汇编语言和汇编程序的基本概念 65
4.1.1 汇编语言 65
4.1.2 汇编程序 65
4.2 汇编语言源程序书写格式 66
4.2.1 汇编语言源程序的分段结构 66
4.2.2 汇编语言源程序的语句类型 66
4.3 伪指令语句 66
4.3.1 数据定义及存储器分配伪指令 66
4.3.2 符号定义伪指令 67
4.3.3 段定义伪指令 69
4.3.4 过程定义伪指令 71
4.3.5 汇编结束伪指令END 71
4.4 8086/8088汇编语言程序格式 72
4.4.1 名字项 72
4.4.2 操作数项 73
4.4.3 表达式 76
4.5 汇编语言的上机过程 77
4.5.1 汇编语言的工作环境及上机步骤 77
4.5.2 汇编语言程序运行实例 77
习题 81
第5章 基本程序设计 84
5.1 程序设计方法概述 84
5.1.1 编写汇编语言程序的步骤 85
5.1.2 判断程序质量的标准 85
5.1.3 汇编语言程序的开发过程 85
5.1.4 完整的汇编语言程序框架 86
5.2 流程图 87
5.2.1 流程图的功能及意义 87
5.2.2 流程图的画法规定 88
5.3 结构化程序设计 88
5.4 顺序结构的程序设计 90
习题 92
第6章 输入/输出程序设计 93
6.1 输入/输出指令 93
6.1.1 I/O端口编址方式 93
6.1.2 输入/输出指令 94
6.1.3 I/O端口寻址方式 94
6.2 CPU与外设传送数据的控制方式 94
6.3 程序查询传送方式 97
6.4 中断传送方式 99
6.4.1 中断的概念 99
6.4.2 8086/8088中断系统 100
6.4.3 中断传送方式程序举例 106
习题 107
第7章 8086/8088循环程序设计 109
7.1 循环程序结构 109
7.2 循环程序设计 111
习题 115
第8章 8086/8088分支程序设计 118
8.1 分支程序的结构形式 118
8.2 分支结构程序设计 119
8.2.1 测试法分支程序设计 119
8.2.2 跳跃表法 120
8.2.3 举例 121
习题 126
第9章 子程序设计 129
9.1 子程序设计方法 129
9.1.1 子程序的定义 129
9.1.2 子程序调用与返回 130
9.1.3 寄存器内容的保护与恢复 132
9.2 子程序的参数传递 132
9.2.1 用寄存器传递参数 133
9.2.2 用存储单元传递参数 135
9.2.3 用堆栈传递参数 136
9.3 子程序嵌套与递归 138
9.4 子程序库 139
习题 142
第10章 数据运算程序设计 144
10.1 多精度的加减运算 144
10.1.1 二进制加减运算 144
10.1.2 压缩型BCD码加减运算 146
10.1.3 非压缩型BCD码(ASCII码)加减运算 147
10.2 乘除运算 149
10.2.1 一般整数二进制乘除运算 149
10.2.2 多字节整数十进制乘除运算 151
小结 154
习题 154
第11章 高级汇编语言技术 156
11.1 宏汇编 156
11.1.1 宏定义 156
11.1.2 宏调用和宏扩展 157
11.1.3 宏定义和宏调用中参数的使用 158
11.1.4 宏嵌套 162
11.2 重复汇编 163
11.2.1 使用REPT伪指令的重复汇编结构 163
11.2.2 使用IRP伪指令的重复汇编结构 164
11.2.3 使用IRPC伪指令的重复汇编结构 165
11.3 条件汇编 166
11.3.1 条件汇编的概念及条件汇编结构 166
11.3.2 条件汇编伪指令 166
习题 171
11.4.2 库的使用 171
11.4 库的使用 171
11.4.1 库的建立 171
第12章 BIOS和DOS中断调用 173
12.1 BIOS中断调用 173
12.1.1 显示输出管理(INT 10H) 174
12.1.2 键盘输入管理(INT 16H) 178
12.1.3 打印输出管理(INT 17H) 180
12.1.4 时间中断调用(INT 1AH) 180
12.2 DOS功能调用 182
12.2.1 常用DOS操作系统中断调用 183
12.2.2 常用INT 21H系统功能中断 184
习题 189
第13 汇编语言与C/C++的混合编程 191
13.1 C/C++语言参数调用协议 191
13.1.1 入口参数传递规则 191
13.1.2 返回参数传递规则 192
13.2.1 模块连接法 193
13.2 汇编语言与C/C++语言的连接 193
13.2.2 嵌入式汇编法 198
小结 200
习题 201
第14章 80286/386/486/Pentium 202
14.1 80x86 CPU特点及其寄存器组 202
14.1.1 80x86CPU特点 202
14.1.2 80x86寄存器组 204
14.2 80x86工作模式 206
14.3 80286、80386、80486和Pentium处理器的指令 207
14.3.1 数据传送类指令 207
14.3.2 算术运算类指令 209
14.3.3 位操作类指令 209
14.3.4 比较类指令 210
14.3.5 串操作类指令 210
14.3.6 逻辑运算类指令 211
14.3.7 堆栈操作类指令 212
14.3.8 条件设置和控制转移类指令 213
14.3.9 类型转换类指令 214
14.3.10 I/O类指令 214
习题 215
第二部分 基于ARM核的汇编语言程序设计 219
第15章 ARM CPU概述 219
15.1 ARM-Advancei RISC Machines 219
15.2 ARM微处理器的应用领域及特点 220
15.2.1 ARM微处理器的应用领域 220
15.2.2 ARM微处理器的特点 220
15.3 ARM微处理器系列 220
15.3.1 ARM7微处理器系列 221
15.3.2 ARM9微处理器系列 221
15.3.4 ARM10E微处理器系列 222
15.3.3 ARM9E微处理器系列 222
15.3.5 SecurCore微处理器系列 223
15.3.6 StrongARM微处理器系列 223
15.3.7 Xscale处理器 223
15.4 ARM微处理器结构 224
15.4.1 RISC体系结构 224
15.4.2 ARM微处理器的寄存器结构 224
15.5 ARM微处理器的应用选型 225
15.4.3 ARM微处理器的指令结构 225
小结 226
习题 226
第16章 ARM系统结构 227
16.1 ARM微处理器的工作状态 227
16.2 ARM微处理器的工作模式 228
16.3 ARM微处理器的寄存器组织 229
16.3.1 ARM状态下的寄存器组织 229
16.3.2 Thumb状态下的寄存器组织 231
16.3.3 程序状态寄存器 233
16.4 ARM异常处理 234
16.4.1 ARM中的异常类型 235
16.4.2 ARM对异常的响应 235
16.4.2 ARM从异常的返回 236
16.4.3 异常向量地址及优先级 236
16.5 ARM体系中的存储系统 236
16.5.1 ARM体系中的存储空间 236
16.5.2 ARM存储器格式 237
小结 237
习题 238
第17章 ARM/Thumb汇编语言 239
17.1 ARM指令的分类及格式 239
17.1.1 ARM指令的分类 239
17.1.2 ARM指令一般编码格式 239
17.1.3 ARM指令基本语法格式 240
17.2 ARM指令的寻址方式 242
17.3 ARM汇编语言的语句格式 244
17.3.1 在汇编语言程序中常用的符号 244
17.3.2 汇编语言程序中的表达式和运算符 245
小结 248
习题 248
第18章 ARM指令系统 249
18.1 概述 249
18.2 ARM指令的格式与条件码 250
18.2.1 ARM指令的格式与条件码 250
18.2.2 ARM指令的条件码 252
18.3 单寄存器存取指令 253
18.4 多寄存器存取指令 255
18.5 数据交换指令 256
18.6 数据处理指令 256
18.7 乘法指令与乘加指令 260
18.8 ARM分支指令 262
18.9 软件中断指令 263
18.10 程序状态寄存器访问指令 263
18.11 ARM伪指令 264
小结 266
习题 266
第19章 Thumb指令系统 267
19.1 概述 267
19.2 Thumb存储器访问指令 268
19.2.1 单寄存器加载/存储指LDR和STR 268
19.2.2 寄存器入栈及出栈指令PUSH和POP 270
19.2.3 多寄存器加载/存储指令LDMIA和STMIA 270
19.3 Thumb数据处理指令 271
19.3.1 Thumb数据处理指令——数据传送指令 271
19.3.2 Thumb数据处理指令——算术逻辑运算指令 272
19.4 Thumb分支指令 277
19.5 Thumb杂项指令SWI 278
19.6 Thumb伪指令 279
小结 280
习题 280
第20章 ARM汇编程序设计 281
20.1 ARM汇编器所支持的伪指令 281
20.1.1 符号定义(Symbol Definition)伪指令 281
20.1.2 数据定义(Data Definition)伪指令 283
20.1.3 汇编控制(Assembly Control)伪指令 285
20.1.4 其他常用的伪指令 287
20.2 汇编语言的程序结构 291
20.2.1 汇编语言的程序结构 291
20.2.2 汇编语言的子程序调用 292
20.2.3 汇编语言程序示例 293
20.2.4 汇编语言与C/C++的混合编程 297
小结 299
习题 299