第1章 汇编语言运算基础 1
1.1 二进制数 1
1.1.1 二进制 1
1.1.2 二进制数运算 3
1.1.3 十六进制数值运算规则 5
1.1.4 二、八、十六、十进制数相互转换 6
1.2 计算机中二进制数的表示及运算 8
1.2.1 不带符号的整数表示 9
1.2.2 带符号的整数表示 9
1.2.3 浮点数表示 12
1.3 计算机中字符表示 13
1.3.1 ASCII码 14
1.3.2 汉字编码 15
1.4 计算机中逻辑值表示及运算 17
1.4.1 “与”运算 17
1.4.2 “或”运算 17
1.4.3 “非”运算 18
1.4.4 “异或”运算 18
1.4.5 逻辑代数基本公式 19
习题 20
第2章 微型计算机的体系结构 21
2.1 微型计算机基本组成 21
2.2 微处理器 22
2.2.1 Intel公司微处理器简介 22
2.2.2 Intel 8086/8088微处理器功能结构 23
2.3 Intel 8086/8088 CPU寄存器组 26
2.3.1 通用寄存器 27
2.3.2 段寄存器 28
2.3.3 控制寄存器 29
2.4 存储器 32
2.4.1 存储器的段结构 32
2.4.2 物理地址与逻辑地址 33
2.4.3 内存地址空间 35
2.5 堆栈 36
2.5.1 堆栈的概念 36
2.5.2 堆栈的组织 37
2.5.3 堆栈的操作 38
2.6 输入/输出设备 40
习题 40
第3章 汇编语言程序及其操作过程 42
3.1 机器语言程序 42
3.1.1 机器语言程序 42
3.1.2 机器语言程序的输入和运行 43
3.1.3 Debug调试工具 44
3.2 汇编语言程序 50
3.2.1 汇编语言 50
3.2.2 汇编语言程序 50
33.3 Emu8086的使用 52
3.3 汇编语言程序的编辑、编译、连接和运行 55
3.3.1 汇编语言程序的编辑 55
3.3.2 MASM汇编开发环境 57
3.3.3 汇编语言程序的编译、连接和运行 61
习题 65
第4章 汇编语言指令系统和寻址方式 67
4.1 汇编语言指令的格式 67
4.2 指令系统分类 68
4.2.1 数据传送类指令 68
4.2.2 算术运算类指令 69
4.2.3 位操作类指令 70
4.2.4 控制转移类指令 70
4.2.5 字符串处理类指令 71
4.2.6 处理器控制类指令 71
4.3 操作数的类型 72
4.3.1 立即数操作数 72
4.3.2 寄存器操作数 73
4.3.3 存储器操作数 74
4.4 立即寻址方式 74
4.5 寄存器寻址方式 75
4.6 存储器寻址方式 76
4.6.1 直接寻址方式 77
4.6.2 寄存器间接寻址方式 79
4.6.3 寄存器相对寻址方式 81
4.6.4 基址变址寻址方式 83
4.6.5 相对基址变址寻址方式 85
4.6.6 字符串操作寻址方式 87
习题 87
第5章 汇编语言源程序组成 89
5.1 汇编语言源程序的格式 89
5.1.1 段的定义 89
5.1.2 简化段定义格式 93
5.1.3 完整段定义格式 94
5.2 汇编语言数据 96
5.2.1 常量 96
5.2.2 变量 98
5.2.3 标号 103
5.2.4 变量和标号的属性 103
5.3 表达式与运算符 107
5.3.1 算术运算符 107
5.3.2 移位运算符 109
5.3.3 逻辑运算符 109
5.3.4 关系运算符 110
5.3.5 其他运算符 110
5.3.6 运算符的优先级 111
5.4 常用伪指令 112
5.4.1 属性定义伪指令LABEL 112
5.4.2 段寻址伪指令ASSUME 113
5.4.3 过程定义伪指令PROC/ENDP 114
5.4.4 调整偏移量伪指令 115
5.4.5 标题伪指令TITLE 117
5.4.6 程序结束伪指令END 118
5.4.7 模块连接伪指令PUBLIC和EXTRN 119
5.5 汇编语言源程序正常结束方式 121
5.5.1 使用4CH系统功能调用正常结束 121
5.5.2 使用程序段前缀正常结束 121
习题 123
第6章 8086/8088常用指令 125
6.1 数据传送类指令 125
6.1.1 通用数据传送指令 126
6.1.2 堆栈操作指令 128
6.1.3 数据交换指令 130
6.1.4 查表转换指令 131
6.1.5 地址传送指令 131
6.1.6 标志位传送指令 133
6.1.7 端口输入/输出指令 134
6.2 算术运算类指令 136
6.2.1 加法指令 136
6.2.2 减法指令 139
6.2.3 乘法指令 142
6.2.4 除法指令 144
6.2.5 符号扩展指令 145
6.2.6 BCD码十进制调整指令 146
6.3 位操作类指令 147
6.3.1 逻辑运算指令 147
6.3.2 移位指令 150
6.3.3 循环移位指令 153
6.4 处理器控制类指令 156
6.4.1 标志位操作指令 156
6.4.2 CPU控制指令 157
习题 158
第7章 基本程序设计 160
7.1 程序设计方法 160
7.1.1 程序设计步骤 160
7.1.2 程序流程图 161
7.2 顺序结构程序设计 162
7.2.1 顺序程序设计 162
7.2.2 简单查表法代码转换 165
7.3 分支程序设计 167
7.3.1 无条件转移指令 168
7.3.2 条件转移指令 172
7.3.3 单分支程序设计 176
7.3.4 双分支程序设计 177
7.3.5 多分支程序设计 179
7.4 循环结构程序设计 186
7.4.1 循环控制指令 186
7.4.2 循环程序的结构 188
7.4.3 单重循环程序设计 189
7.4.4 多重循环程序设计 195
习题 197
第8章 子程序设计 199
8.1 子程序的定义 199
8.1.1 子程序的格式 199
8.1.2 子程序的说明信息 200
8.2 子程序的调用和返回 201
8.2.1 调用指令 202
8.2.2 返回指令 205
8.2.3 现场保护和恢复 207
8.3 子程序与主程序间的参数传递 208
8.3.1 利用寄存器传递参数 208
8.3.2 利用堆栈传递参数 210
8.3.3 利用约定存储单元传递参数 213
8.4 子程序的嵌套与递归调用 215
8.4.1 子程序的嵌套调用 215
8.4.2 子程序的递归调用 216
习题 218
第9章 输入/输出与中断程序设计 220
9.1 输入和输出的基本概念 220
9.1.1 I/O端口地址 220
9.1.2 I/O端口编址 221
9.1.3 I/O指令 223
9.2 数据传送方式 224
9.2.1 程序控制方式 225
9.2.2 中断控制方式 229
9.2.3 直接存储器存取方式 230
9.3 中断 230
9.3.1 中断的分类 231
9.3.2 中断向量表 232
9.3.3 中断优先级和中断嵌套 235
9.3.4 中断指令 237
9.3.5 中断过程 238
9.3.6 中断处理程序的设计 241
9.4 BIOS与DOS中断调用 243
9.4.1 BIOS与DOS中断概述 243
9.4.2 键盘BIOS功能调用 246
9.4.3 键盘DOS功能调用 249
9.4.4 显示器BIOS功能调用 252
9.4.5 显示器DOS功能调用 260
9.4.6 打印机BIOS功能调用 261
9.4.7 时钟BIOS和DOS功能调用 261
习题 262
第10章 简单应用程序设计 263
10.1 汇编语言的字符串 263
10.1.1 字符串及其操作命令 263
10.1.2 重复前缀 270
10.2 十进制数算术运算调整指令及其应用 274
10.2.1 压缩BCD码的算术运算调整指令 276
10.2.2 非压缩BCD码的算术运算调整指令 279
10.3 代码转换 283
10.3.1 其他进制数到二进制数的转换 283
10.3.2 二进制数到其他进制数的转换 291
习题 296
附录A ASCII码字符表 298
附录B DOS系统功能调用(INT 21H) 300
附录C BIOS中断调用(INT n) 307
附录D 指令表 312
附录E 伪指令表 318