1.1 计算机数据表示 1
1.1.1 数制、基数与“位权” 1
1.1.2 二进制数 1
1 汇编语言程序设计基础 1
1.1.3 十六进制数 2
1.1.4 不同数制之间的转换 3
1.2 原码、反码与补码 6
1.2.1 无符号数与有符号数 6
1.2.2 原码 6
1.2.3 反码 6
1.2.4 补码 7
1.3.2 字 9
1.3.3 双字 9
1.3.1 字节 9
1.3 数据存取方式 9
1.3.4 四字 10
1.4 ASCII码 10
1.5 BCD码 11
1.5.1 压缩BCD码 12
1.5.2 非压缩BCD码 12
习题 12
2 Intel微处理器 14
2.1 8086/8088微处理器 14
2.1.1 8086/8088微处理器结构 14
2.1.2 8086/8088内存储器组织 17
2.1.4 内存储器的地址 18
2.1.3 段概念的引进 18
2.1.5 堆栈 19
2.2 80386微处理器 20
2.2.1 80386主要性能 20
2.2.2 80386寄存器及功能 20
2.3 80486微处理器 24
2.4 80586(Pentium)微处理器 25
习题 25
3.1.1 立即寻址 26
3.1.2 寄存器寻址 26
3.1.3 直接寻址 26
3.1 8086/8088寻址方式 26
3 寻址方式与指令系统 26
3.1.4 寄存器间接寻址 27
3.1.5 基址寻址 28
3.1.6 变址寻址 29
3.1.7 基址变址寻址 29
3.1.8 相对基址变址寻址 30
3.1.9 段默认与段跨越 30
3.2 80X86扩展寻址方式 31
3.2.1 80X86工作方式 31
3.2.2 80X86扩展寻址方式 32
3.3 汇编指令语句格式 32
3.3.1 标号 32
3.4 8086/8088指令系统 33
3.3.5 注释 33
3.4.1 数据传送指令 33
3.3.3 目的操作数 33
3.3.4 源操作数 33
3.3.2 指令助记符 33
3.4.2 算术运算指令 39
3.4.3 逻辑运算与移位指令 45
3.4.4 串操作指令 49
3.4.5 控制转移指令 52
3.4.6 处理器控制指令 59
3.4.7 十进制运算调整指令 60
3.5 *80386指令系统 63
3.5.1 数据传送指令 63
3.5.2 算术运算指令 65
3.5.3 逻辑运算与移位指令 67
3.5.4 串操作指令 68
3.5.5 控制转移指令 69
3.5.6 位操作指令 70
3.5.7 保护方式指令 71
3.6 *80486新增指令 71
习题 72
4 操作数运算符与常用伪指令 75
4.1 操作数运算符 75
4.1.1 算术运算符(单目+,单目-,+,-,*,/,MOD) 75
4.1.2 逻辑运算符(NOT,AND,OR,XOR) 76
4.1.3 关系运算符(EQ,NE,LT,LE,GT,GE) 77
4.1.4 数值回送运算符(SEG,OFFSET,TYPE,LENGTH,SIZE) 78
4.1.5 属性运算符(PTR,SHORT,THIS,HIGH,LOW) 79
4.1.6 移位运算符(SHL,SHR) 80
4.1.7 运算符优先级 81
4.2 常用伪指令 81
4.2.1 数据定义伪指令(DB,DW,DD,DF,DT,?,DUP) 82
4.2.2 符号定义伪指令(EQU,=,LABLE) 87
4.2.3 段定义伪指令(SEGMENT,ENDS,ASSUME) 87
4.2.4 过程定义伪指令(PROC,ENDP) 88
4.2.5 汇编控制伪指令(END,ORG,NAME) 90
4.2.6 外部引用伪指令(PUBLIC,EXTRN) 91
4.2.7 列表伪指令(TITLE,PAGE,SUBTTL,%,OUT) 92
4.3 80X86扩展伪指令 93
4.3.1 方式选择伪指令 93
4.3.2 段定义伪指令 94
习题 95
5 汇编语言源程序结构与调试运行 97
5.1 8086/8088汇编源程序结构 97
5.1.1 EXE文件的汇编格式 97
5.1.2 COM文件的汇编格式 100
5.2 80X86汇编源程序结构 102
5.3 DEBUG程序的使用 103
5.3.1 程序的装入与退出 103
5.3.2 程序的运行 103
5.3.3 内容查询 105
5.3.4 修改存储单元和寄存器 106
5.3.5 反汇编 107
5.4.1 建立汇编语言源程序文件(.ASM) 108
5.4 汇编语言程序上机过程 108
5.4.2 生成目标程序(.OBJ) 109
5.4.3 产生可执行文件(.EXE) 113
5.4.4 程序执行 114
5.4.5 交叉索引表 115
5.5 COM文件的建立 115
习题 117
6 程序的基本结构与汇编语言程序设计 118
6.1 程序设计和基本过程 118
6.1.1 准备工作 118
6.1.3 程序评价 119
6.2 程序的基本结构 119
6.1.2 程序设计 119
6.3 顺序结构程序设计 121
6.4 分支结构程序结构 124
6.4.1 利用比较和条件转移指令实现程序分支 125
6.4.2 利用跳转表实现多路分支 130
6.5 循环结构程序设计 134
6.5.1 循环程序控制方法 135
6.5.2 单重循环程序设计 140
6.5.3 多重循环程序设计 140
习题 144
7 子程序与宏指令 146
7.1 BIOS和DOS中断 146
7.1.1 调用BIOS和DOS中断程序的基本方法 147
7.1.2 BIOS中断调用 148
7.1.3 DOS中断功能调用 152
7.2 子程序设计 164
7.2.1 子程序设计中的基本考虑 165
7.2.2 主程序与子程序的联接 165
7.2.3 子程序调用中的数据保护与恢复 167
7.2.4 主程序与子程序中的参数传递 169
7.2.5 子程序嵌套与递归 176
7.3 宏指令 178
7.3.1 宏定义 178
7.3.2 宏调用与宏扩展 179
7.3.3 宏定义中的伪指令 181
7.3.4 宏嵌套 188
7.3.5 宏库的建立与使用 190
习题 193
8 输入/输出控制方式及程序设计 195
8.1 I/O端口的编址方式 195
8.1.1 存储器映射方式 195
8.1.2 单独编址方式 195
8.2 CPU与外设之间数据传送的控制方式及程序设计 196
8.2.1 程序无条件传送方式 196
8.2.2 程序查询方式 197
8.2.3 中断方式 201
8.2.4 DMA方式 205
习题 207
9.2.1 模块层次图 208
9.2 程序模块的划分 208
9 模块化程序设计 208
9.1 概述 208
9.2.2 模块的划分 209
9.3 关于结构化程序设计方法 210
9.4 模块化程序设计 210
9.4.1 符号定义与引用伪指令 210
9.4.2 多个模块的组合形式 212
9.4.3 模块间的符号传送 213
9.4.4 多个模块目标文件的连接 220
习题 220
10.1 汇编语言在数值转换中的应用 221
10.1.1 ASCII码十进制数转换为二进制数 221
10 汇编语言在数据处理中的应用 221
10.1.2 二进制数转换为ASCII码十进制数 222
10.1.3 二进制数转换为ASCII码十六进制数 223
10.1.4 ASCII码十六进制数转换为二进制数 224
10.2 汇编语言在串操作中的应用 225
10.2.1 数据块移动 225
10.2.2 串搜索 226
10.2.3 串比较 227
10.2.4 串插入 228
10.2.5 串删除 229
10.3 汇编语言在代码转换中的应用 230
10.3.1 十进制数的ASCII转换为BCD码 230
10.3.2 BCD码转换为十进制数的ASCII码 231
10.3.3 二进制数转换为BCD码 233
10.3.4 BCD码转换为二进制数 234
习题 235
11 汇编语言在图像处理中的应用 236
11.1 图像显示 236
11.1.1 位面图像的显示 236
11.1.2 灰度图像的显示 239
11.2 屏幕图像的保存 242
11.3 图像滤波 244
11.3.1 邻域平均法 244
11.3.2 中值滤波 246
11.3.3 噪声消除法 248
11.4 图像锐化 251
11.4.1 二阶微分算子(Laplacian算子)锐化 251
11.4.2 模板匹配法 253
12.2 8259A中断控制器 259
12 汇编语言在接口与通信中的应用 259
12.1 计算机通信 259
12.3 串行通信接口 260
12.3.1 可编程串行异步通信接口芯片8250 260
12.3.2 RS-232C标准接口 263
12.4 串行通信程序设计 264
12.4.1 BIOS串行通信功能调用 264
12.4.2 串行接口初始化程序设计 265
12.4.3 串行通信程序设计 266
附录A 8086/80X86指令 270
附录B MASM5.0出错信息 281
附录C 系统中断 286
参考资料 302