上篇 理论篇 3
1 计算机中数的表示 3
1.1 计算机数据的表示 3
1.1.1 数制、基数与“位权” 3
1.1.2 二进制数 3
1.1.3 十六进制数 4
1.1.4 不同数制之间的转换 5
1.2 原码、反码与补码 8
1.2.1 无符号数与有符号数 8
1.2.2 原码 8
1.2.3 反码 8
1.2.4 补码 9
1.3 数据存取方式 11
1.3.1 字节数 11
1.3.2 字数据 11
1.3.3 双字数据 11
1.4 ASCⅡ码 12
1.5 BCD码 13
1.5.1 压缩BCD码 13
1.5.2 非压缩BCD码 14
1.6 扩展的键盘代码 14
习题1 15
2 Intel微处理器 16
2.1 8086/8088微处理器 16
2.1.1 8086/8088微处理器的结构 16
2.1.2 8086/8088内存储器的组织 19
2.1.3 段概念的引入 19
2.1.4 内存储器的地址 20
2.1.5 堆栈 20
2.2 80386微处理器 21
2.2.1 80386微处理器的主要性能 21
2.2.2 80386 CPU的结构 21
2.2.3 80386寄存器及其功能 22
2.3 80486微处理器 24
2.3.1 80486的特点 24
2.3.2 80486 CPU的结构 25
2.3.3 80486寄存器组 25
2.4 80586(Pentium)微处理器 26
2.5 80X86的工作方式 26
习题2 27
3 寻址方式与指令系统 28
3.1 8086/8088的寻址方式 28
3.1.1 立即寻址 28
3.1.2 直接寻址 28
3.1.3 寄存器寻址 29
3.1.4 寄存器间接寻址 29
3.1.5 基址寻址 30
3.1.6 变址寻址 30
3.1.7 基址变址寻址 30
3.1.8 相对基址变址寻址 31
3.1.9 段默认与段跨越 31
3.2 80X86扩展寻址方式 32
3.3 汇编指令语句格式 33
3.3.1 标号 33
3.3.2 指令助记符 33
3.3.3 目的操作数 33
3.3.4 源操作数 33
3.3.5 注释 34
3.4 8086/8088指令系统 34
3.4.1 数据传送指令 34
3.4.2 算术运算指令 40
3.4.3 逻辑运算与移位指令 45
3.4.4 串操作指令 49
3.4.5 控制转移指令 52
3.4.6 处理器控制指令 59
3.4.7 十进制运算调整指令 59
3.5 实方式32位指令 62
3.5.1 32位数据传送指令 62
3.5.2 32位算术运算指令 64
3.5.3 32位逻辑运算与移位指令 66
3.5.4 32位串操作指令 67
3.5.5 32位控制转移指令 68
3.5.6 32位位操作指令 69
3.5.7 32位保护方式指令 70
3.5.8 32位交换与比较指令 70
3.6 Pentium微处理器新增指令 71
习题3 71
4 操作数运算符与常用伪指令 74
4.1 操作数运算符 74
4.1.1 算术运算符(单目+,单目-,+,-,*,/,MOD) 74
4.1.2 逻辑运算符(NOT,AND,OR,XOR) 75
4.1.3 关系运算符(EQ,NE,LT,LE,GT,GE) 76
4.1.4 数值回送运算符(SEG,OFFSET,TYPE,LENGTH,SIZE) 76
4.1.5 属性运算符(PTR,SHORT,THIS,HIGH,LOW) 78
4.1.6 移位运算符(SHL,SHR) 79
4.1.7 运算符优先级 80
4.2 常用伪指令 80
4.2.1 数据定义伪指令(DB,DW,DD,DF,DQ,DT,?,DUP) 81
4.2.2 符号定义伪指令(EQU,=,LABLE) 82
4.2.3 段定义伪指令(SEGMENT,ENDS,ASSUME) 83
4.2.4 过程定义伪指令(PROC,ENDP) 88
4.2.5 汇编控制伪指令(END,ORG,NAME) 89
4.2.6 列表伪指令(TITLE,PAGE,SUBTTL,% OUT) 90
4.3 80X86扩展伪指令 91
4.3.1 方式选择伪指令 91
4.3.2 段定义伪指令 92
习题4 93
5 汇编语言源程序结构与调试运行 96
5.1 8086/8088汇编源程序结构 96
5.1.1 EXE文件的汇编格式 96
5.1.2 COM文件的汇编格式 99
5.2 80X86汇编源程序结构 101
5.3 汇编语言程序调试过程 102
5.3.1 基本过程 102
5.3.2 Windows环境下的上机步骤 102
5.3.3 汇编列表文件、交叉引用文件、连接列表文件说明 102
5.4 COM文件的建立 105
习题5 107
6 程序的基本结构与汇编语言程序设计 108
6.1 程序设计的基本过程 108
6.1.1 准备工作 108
6.1.2 程序设计 109
6.1.3 程序评价 109
6.2 程序的基本结构 109
6.3 顺序结构程序设计 111
6.4 分支结构程序设计 114
6.4.1 利用比较和条件转移指令实现程序分支 114
6.4.2 利用跳转表实现多路分支 120
6.5 循环结构程序设计 124
6.5.1 循环程序控制方法 124
6.5.2 单重循环程序设计 129
6.5.3 多重循环程序设计 130
习题6 133
7 系统功能调用 135
7.1 BIOS和DOS中断 135
7.2 调用BIOS和DOS中断程序的基本方法 135
7.3 BIOS中断调用 136
7.3.1 文本方式属性 137
7.3.2 INT 10H主要功能调用 138
7.4 DOS中断功能调用 141
7.4.1 DOS中断基本功能 141
7.4.2 DOS系统功能(INT 21H)调用示例 141
习题7 153
8 子程序与宏指令 154
8.1 子程序设计中的基本要素 154
8.2 主程序与子程序的连接 154
8.3 子程序调用中的数据保护与恢复 157
8.4 主程序与子程序之间的参数传递 158
8.4.1 寄存器传递 158
8.4.2 存储单元传递 159
8.4.3 堆栈传递 163
8.5 子程序嵌套与递归 165
8.6 宏指令 167
8.6.1 宏定义 167
8.6.2 宏调用与宏扩展 168
8.7 宏定义中的伪指令 171
8.8 宏嵌套 177
8.9 宏库的建立与使用 179
习题8 182
9 输入/输出控制方式及程序设计 184
9.1 I/O端口的编址方式 184
9.1.1 存储器映射方式 184
9.1.2 独立编址方式 184
9.2 CPU与外设之间数据传送的控制方式及程序设计 185
9.2.1 程序无条件传送方式 185
9.2.2 程序查询方式 186
9.2.3 8086/8088中断方式 189
9.2.4 DMA方式 194
9.3 IBM PC/XT中断 195
习题9 196
10 模块化程序设计 197
10.1 概述 197
10.2 程序模块的划分 197
10.2.1 模块层次图 197
10.2.2 模块的划分 198
10.3 结构化程序设计方法 199
10.4 模块化程序设计 199
10.4.1 符号定义与引用伪指令 199
10.4.2 多个模块的组合形式 201
10.4.3 模块间的符号传送 201
10.4.4 多个模块目标文件的连接 209
习题10 209
下篇 应用篇 213
11 汇编语言在数据处理中的应用 213
11.1 汇编语言在数制转换中的应用 213
11.1.1 ASCⅡ码十进制数转换为二进制数 213
11.1.2 二进制数转换为ASCⅡ码十进制数 214
11.1.3 二进制数转换为ASCⅡ码十六进制数 215
11.1.4 ASCⅡ码十六进制数转换为二进制数 215
11.2 汇编语言在串操作中的应用 217
11.2.1 数据块移动 217
11.2.2 串搜索 218
11.2.3 串比较 219
11.2.4 串插入 220
11.2.5 串删除 221
11.3 汇编语言在代码转换中的应用 222
11.3.1 十进制数的ASCⅡ码转换为BCD码 222
11.3.2 BCD码转换为十进制数的ASCⅡ码 223
11.3.3 二进制数转换为BCD码 224
11.3.4 BCD码转换为二进制数 225
习题11 226
12 汇编语言在图像处理中的应用 227
12.1 图像显示 227
12.1.1 位面图像的显示 227
12.1.2 灰度图像的显示 230
12.2 屏幕图像的保存 233
12.3 图像滤波 235
12.3.1 邻域平均法 235
12.3.2 中值滤波 237
12.3.3 噪声消除法 240
12.4 图像锐化 242
12.4.1 二阶微分算子(Laplacian算子)法 242
12.4.2 模板匹配法 244
13 汇编语言在接口与通信中的应用 250
13.1 计算机通信 250
13.2 8259A中断控制器 250
13.3 串行通信接口 251
13.3.1 可编程串行异步通信接口芯片8250 251
13.3.2 RS-232C标准接口 254
13.4 串行通信程序设计 255
13.4.1 BIOS串行通信功能调用 255
13.4.2 串行接口初始化程序设计 256
13.4.3 串行通信程序设计 257
14 实习指导 261
14.1 源程序的编辑、汇编、连接和调试 261
14.2 分支程序设计 262
14.3 循环程序设计 266
14.4 文件管理程序设计 269
14.5 子程序设计 272
14.6 递归子程序设计 275
14.7 打印输出程序设计 277
14.8 模块化程序设计 279
14.9 代码转换程序设计 282
14.10 位面图像存储程序设计 284
附录A 8086/80X86指令集 288
附录B MASM5.0出错信息 297
附录C 系统中断 302
参考文献 318