第1章 概述 1
1.1 计算机语言是人机交流工具 1
1.1.1 机器语言 1
1.1.2 汇编语言 2
1.1.3 高级语言 3
1.1.4 三种语言的特点比较 3
1.2 汇编语言的架构 5
1.2.1 汇编语言源程序的架构 5
1.2.2 汇编程序和连接程序 6
1.3 计算机的数据表示 7
1.3.1 数制及其转换 7
1.3.2 数值数据在机内的表示形式 13
1.3.3 字符数据在机内的表示形式 16
习题1 16
第2章 微型计算机的内部结构 18
2.1 微型计算机的构成 18
2.2 中央处理器 19
2.2.1 中央处理器(CPU)的组成 19
2.2.2 算术逻辑部件(ALU) 20
2.2.3 80X86寄存器组 20
2.2.4 地址加法器 25
2.2.5 其他部件 25
2.2.6 80X86 CPU的工作模式 25
2.3 内存储器 27
2.3.1 内存单元的地址和内容 28
2.3.2 实地址模式下的内存储器寻址 29
2.4 外部设备 33
习题2 34
第3章 寻址方式 35
3.1 立即数型寻址方式 36
3.2 寄存器型寻址方式 36
3.3 内存型寻址方式 37
3.3.1 直接寻址方式 37
3.3.2 寄存器间接寻址方式 38
3.3.3 寄存器相对寻址方式 39
3.3.4 基址变址寻址方式 41
3.3.5 基址变址相对寻址方式 42
3.3.6 段寄存器 43
3.4 外部设备型寻址方式 44
习题3 45
第4章 数据类型与数据表示 46
4.1 数据类型 46
4.2 常数 47
4.3 常量与变量 47
4.3.1 标志符 47
4.3.2 常量 48
4.3.3 数值表达式 48
4.3.4 变量 49
4.4 数组 51
4.4.1 一维数组 51
4.4.2 二维数组 54
4.5 变量的属性 56
4.5.1 段属性 56
4.5.2 偏移属性 57
4.5.3 类型属性 58
4.5.4 数据存储单元数 59
4.5.5 数据存储字节数 59
4.6 变量的内存分配 60
4.6.1 变量的内存图 60
4.6.2 数据在内存中的存放原则 61
4.6.3 数据段 61
4.6.4 简单的内存分配 61
4.6.5 可调整的内存分配 61
习题4 62
第5章 基本指令与顺序程序设计 64
5.1 汇编指令格式 64
5.2 基本汇编指令 65
5.2.1 MOV(传数指令) 65
5.2.2 ADD(加法指令) 67
5.2.3 ADC(带进位CF的加法指令) 69
5.2.4 INC(增1指令) 70
5.2.5 SUB(减法指令) 71
5.2.6 SBB(带借位CF的减法指令) 71
5.2.7 DEC(减1指令) 72
5.2.8 NEG(求补操作指令) 73
5.2.9 MUL(无符号数的乘法指令) 73
5.2.10 DIV(无符号数的除法指令) 75
5.2.11 IMUL(带符号数乘法指令) 76
5.2.12 IDIV(带符号数除法指令) 76
5.2.13 CBW(字节型符号扩展指令) 76
5.2.14 CWD(字型符号扩展指令) 77
5.2.15 LEA(取偏移地址指令) 78
5.3 常用的汇编伪指令 78
5.3.1 处理器选择伪指令 78
5.3.2 数据定义伪指令 79
5.3.3 符号定义伪指令 79
5.3.4 段定义伪指令 80
5.3.5 源程序结束伪指令 83
5.4 单个字符的输入/输出 83
5.4.1 DOS的1号子功能——单字符输入 84
5.4.2 DOS的2号子功能——单字符输出 84
5.5 源程序的基本架构 85
5.5.1 行的格式 85
5.5.2 段的格式 85
5.5.3 源程序格式 86
5.5.4 完整程序实例 86
5.6 算术表达式与赋值语句 87
5.6.1 算术表达式 87
5.6.2 赋值语句 88
5.7 顺序程序设计 88
习题5 92
第6章 分支与循环程序设计 93
6.1 程序状态标志寄存器PSW的变化规则 93
6.1.1 CF(进位和借位标志位) 93
6.1.2 SF(符号标志位) 94
6.1.3 ZF(零标志位) 95
6.1.4 OF(溢出标志位) 95
6.1.5 算术类指令对标志位的影响 96
6.2 CMP(比较指令) 96
6.3 跳转类指令 97
6.3.1 标号 97
6.3.2 无条件跳转指令(JMP) 97
6.3.3 条件跳转指令 100
6.4 分支程序设计 108
6.4.1 简单的if语句结构 108
6.4.2 if-else语句结构 111
6.4.3 嵌套的if语句结构 113
6.4.4 switch语句结构 117
6.5 循环程序设计 123
6.5.1 关于循环结构的指令 123
6.5.2 基于for结构的循环 124
6.5.3 基于while结构的循环 127
6.5.4 基于do-while结构的循环 129
习题6 131
第7章 串型数据的处理 133
7.1 字符串的输入/输出 133
7.1.1 DOS的9号子功能——字符串输出 133
7.1.2 DOS的10号子功能——字符串输入 136
7.2 串操作 138
7.2.1 DF标志位 138
7.2.2 串操作指令 139
7.2.3 串重复前缀 146
习题7 149
第8章 子程序 150
8.1 堆栈 150
8.1.1 堆栈段 151
8.1.2 栈操作 151
8.2 子程序设计 154
8.2.1 子程序的基本格式 154
8.2.2 子程序相关指令 155
8.2.3 现场保护与恢复现场 158
8.2.4 子程序使用方法说明 160
8.2.5 子程序的设计方法 160
8.2.6 参数的传递 161
8.2.7 子程序的嵌套调用和递归调用 167
8.2.8 子程序实例 171
8.3 子程序共享的方法 176
8.3.1 复制子程序的源代码 176
8.3.2 使用INCLUDE伪指令 177
8.3.3 使用库文件(.LIB) 178
8.3.4 共享方式的比较 180
习题8 181
第9章 编程中的高级处理技术 182
9.1 移位指令与应用 182
9.1.1 SHL(逻辑左移指令) 182
9.1.2 SAL(算术左移指令) 183
9.1.3 SHR(逻辑右移指令) 183
9.1.4 SAR(算术右移指令) 183
9.1.5 ROL(循环左移指令) 184
9.1.6 ROR(循环右移指令) 184
9.1.7 RCL(带进位的循环左移指令) 185
9.1.8 RCR(带进位的循环右移指令) 185
9.1.9 移位指令应用实例 185
9.2 宏 187
9.2.1 宏汇编 187
9.2.2 宏指令的定义、调用和展开 188
9.2.3 宏操作符 191
9.2.4 LOCAL伪指令 195
9.2.5 宏嵌套 198
9.2.6 宏程序库 200
9.2.7 宏指令与子程序的区别 200
9.2.8 宏名的命名 201
9.3 重复汇编和条件汇编 201
9.3.1 重复汇编 201
9.3.2 条件汇编 204
习题9 206
第10章 输入/输出程序设计 207
10.1 输入/输出地址空间 207
10.2 输入/输出指令 207
10.2.1 IN(输入指令) 208
10.2.2 OUT(输出指令) 208
10.3 输入/输出方式 209
10.3.1 无条件传送方式 209
10.3.2 查询传送方式 211
10.3.3 直接存储器传送方式 216
10.3.4 中断传送方式 216
10.4 ROM BIOS中断调用举例 222
10.4.1 ROM BIOS概述 222
10.4.2 常用的BIOS中断调用举例 222
习题10 235
第11章 文件操作 237
11.1 文件名和文件代号 237
11.2 文件属性 238
11.3 常用的文件管理的系统功能调用 238
11.4 文件操作举例 239
习题11 247
第12章 宏汇编语言编程的上机操作 248
12.1 上机操作的环境 248
12.2 上机操作的步骤 248
12.3 子程序库的建立和使用 251
习题12 252
附录A 动态调试程序DEBUG 253
A1 DEBUG的启动 253
A2 DEBUG命令用法的规定 254
A3 DEBUG的主要命令 254
附录B ASCII码与扫描码表 261
附录C ASCII码的编码方案表 263
附录D 键盘扫描码的编码方案表 264
参考文献 265