目录 1
第1章 汇编语言基础知识 1
1.1 汇编语言的由来与特点 1
1.1.1 机器语言 1
1.1.2 汇编语言 1
1.1.3 汇编语言的应用领域与地位 2
1.2 系统结构 2
1.2.1 微型计算机的系统结构 2
1.2.2 INTEL 8086/808816位机的系统结构 4
1.2.3 INTEL 80386 32位机的系统结构 9
1.3 数据表示 17
1.3.1 数制及其转换 17
1.3.2 有符号数的表示法 19
1.3.3 BCD码和字符编码 20
1.4 小结 21
1.5 习题 21
第2章 16位汇编程序设计 24
2.1 16位汇编程序设计概述 24
2.1.1 汇编语言程序的特点 24
2.1.2 指令寻址方式 26
2.2 16位指令系统 32
2.2.1 数据传送类指令 32
2.2.2 算术运算类指令 44
2.2.3 位运算类指令 56
2.2.4 串操作类指令 61
2.2.5 控制转移类指令 67
2.2.6 处理机控制类指令 77
2.3 伪指令 79
2.3.1 常量、变量、标号和表达式 79
2.3.2 伪指令语句 84
2.3.3 结构 89
2.3.4 记录 91
2.4 宏汇编程序格式 93
2.4.1 完整段定义格式 94
2.4.2 简化段定义格式 97
2.4.3 与完整段定义有关的伪指令 98
2.4.4 与简化段定义有关的伪指令 100
2.5 汇编程序设计过程 103
2.5.1 汇编程序的设计步骤 103
2.5.2 程序流程图 104
2.5.3 宏汇编MASM611命令行方式上机操作 106
2.5.4 DEBUG及CV调试程序的使用 109
2.6 小结 117
2.7 习题 117
第3章 程序设计技巧 125
3.1 顺序程序结构形式 125
3.2 分支程序 128
3.2.1 分支程序结构 128
3.2.2 条件控制伪指令 129
3.2.3 双分支程序设计 132
3.2.4 多分支程序设计 134
3.3 循环程序 139
3.3.1 循环程序概述 139
3.3.2 循环控制指令及伪指令 141
3.3.3 循环程序设计方法 142
3.3.4 多重循环程序设计方法 150
3.4 子程序与扩展子程序 151
3.4.1 一般过程定义(子程序)伪指令 151
3.4.2 子程序参数传递方法 154
3.4.3 扩展过程定义(扩展子程序)伪指令 162
3.5 中断程序 167
3.5.1 中断的有关概念 167
3.5.2 8086/8088的中断源及其优先级 168
3.5.3 中断向量表 171
3.5.4 中断处理的基本过程 172
3.6 输入输出程序 176
3.6.1 输入输出原理 176
3.6.2 I/O程序设计方法 178
3.7 宏结构程序 183
3.7.1 宏汇编 183
3.7.2 重复汇编 192
3.7.3 条件汇编 194
3.8 模块化程序 197
3.8.1 模块化的特点 198
3.8.2 源程序文件包含 198
3.8.3 目标代码文件包含 200
3.8.4 子程序库 209
3.9 小结 210
3.10 习题 210
第4章 16位汇编应用举例 215
4.1 模拟C语言函数实现 215
4.1.1 数据转换 215
4.1.2 字符串操作 219
4.2 键盘中断 222
4.2.1 键盘控制原理 222
4.2.2 通过中断获取键盘信息 224
4.3 视频控制程序 226
4.3.1 直接控制显存 226
4.3.2 使用BIOS 228
4.3.3 使用DOS功能 234
4.4 磁盘控制程序 235
4.4.1 常用的INT 13H功能 235
4.4.2 设计一个简单钥匙软盘程序 236
4.4.3 设计软盘扫描程序 239
4.4.4 读写大硬盘扇区数据 243
4.5 中断程序设计 248
4.5.1 设计自己使用的中断程序 249
4.5.2 设计驻留内存的中断程序 251
4.6 引导程序设计 254
4.6.1 引导程序原理 254
4.6.2 引导程序的编写与安装 256
4.7 定时器应用程序 261
4.7.1 产生时钟原理 261
4.7.2 定时器代码实现 262
4.8 用Debug修改程序结构 266
4.8.1 修改代码原理 267
4.8.2 修改程序代码 269
4.9 加密一个EXE文件 270
4.9.1 加密前的代码识别 271
4.9.2 加密方法的实现 271
4.10 小结 274
4.11 习题 274
第5章 32位汇编程序设计 276
5.1 32位指令系统 276
5.1.1 32位的寻址方式 276
5.1.2 32位扩展指令 278
5.1.3 80386新增指令 281
5.1.4 80486新增指令 285
5.1.5 Pentium新增指令 287
5.1.6 Pentium Pro新增指令 290
5.2 DOS下32位汇编程序 290
5.2.1 32位程序编写规范 291
5.2.2 DOS 32位程序举例 292
5.3 Windows下32位汇编程序 295
5.3.1 Windows汇编语言特点 296
5.3.2 Masm32的使用服务 298
5.4 Windows程序的反汇编 302
5.4.1 W32Dasm的使用 302
5.4.2 W32Dasm的反汇编代码阅读 304
5.5 Windows程序的调试 307
5.6 小结 311
5.7 习题 311
第6章 Windows 32位汇编应用举例 313
6.1 窗口设计程序 313
6.1.1 窗口程序的运行过程 313
6.1.2 在窗口上添加子窗口 320
6.1.3 子窗口的控制 322
6.1.4 复杂形状的窗口 324
6.1.5 资源 325
6.1.6 一个简单对话框 329
6.1.7 菜单应用举例 331
6.2 键盘控制程序 335
6.2.1 获取输入字符 335
6.2.2 虚拟键盘信息 335
6.3 鼠标控制程序 337
6.3.1 获取鼠标信息 337
6.3.2 鼠标的控制 338
6.4 视频控制程序 339
6.4.1 在窗口中绘图 339
6.4.2 位图按钮 343
6.5 磁盘文件操作与内存操作 344
6.5.1 文件操作 345
6.5.2 内存操作 347
6.5.3 内存与文件使用举例 349
6.6 定时器程序 353
6.6.1 建立定时器 353
6.6.2 定时器应用举例 354
6.7 进程控制 355
6.7.1 获取命令行参数 356
6.7.2 建立进程 356
6.8 控制台程序 358
6.9 动态链接库 359
6.9.1 动态链接库的概念 359
6.9.2 动态链接库的建立 360
6.9.3 动态链接库的使用 362
6.10 小结 364
6.11 习题 364
参考文献 366