书籍详情

Windows汇编语言程序设计教程

Windows汇编语言程序设计教程

作者:谭毓安,张雪兰编著

出版社:电子工业出版社

出版时间:2005-04-01

ISBN:9787121009860

定价:¥32.00

购买这本书可以去
内容简介
  本书以Windows操作系统和Intel80x86/Pentium系列CPU为背景,全面系统地介绍了32位保护模式下的汇编语言程序设计,包括Windows编程环境、Intel80x86/Pentium指令系统、MASM的伪指令与操作符等知识,以及分支、循环、子程序、C/C++混合编程、上机调试过程等程序设计方法。本书的核心是Windows下的32位保护模式编程,摒弃了过时的16位DOS实模式编程环境,与当前的软件开发和微机应用环境结合紧密。本书不但能帮助读者顺利地掌握汇编语言程序设计方法,而且能够提高读者的C/C++编程水平。书中的程序具有很强的实用性,强调C/C++和汇编语言的联合编程能力,通过这些实例与其他课程相呼应,有利于各门课程之间的融会贯通。本书适合作为高等院校汇编语言程序设计相关课程的教材或教学辅导书,也可作为希望掌握Windows汇编程序设计的中高级程序开发人员的自学参考书。本书前言前言:汇编语言是执行效率最高、功能最强的一种程序设计语言,它能够直接控制计算机硬件,并最大限度地发挥硬件的能力。在对程序的执行时间和占用空间要求很高的场合,必须使用汇编语言才能满足要求。汇编语言还可以与高级语言进行混合编程,以发挥各自的优势。通过学习汇编语言,有助于理解操作系统和应用程序的运行原理,准确地分析程序错误。它也是掌握加密/解密技术、病毒蠕虫机理、剖析关键代码等高级技术的必备基础。《汇编语言程序设计》是一门程序设计课程,然而目前许多教材仍然基于DOS系统和8086/8088之上,与十几年前的教材相比,仅仅增加了32位指令和保护模式的介绍,而核心内容仍然是DOS下的16位实模式编程。其中的BIOS/DOS功能调用、64KB内存分段结构、上机环境、16位C/汇编混合编程等已经严重落后于当前的应用环境,与国内外主流的软件开发需求严重脱节。我们认为,随着DOS逐步退出操作系统的历史舞台,这门课程的基础知识和实践环节必须与时俱进,需要从DOS下的16位实模式编程过渡到Windows下的32位保护模式编程。本书的编写就是在这样的背景下完成的。本书选择了Windows操作系统和32位Pentium微机作为平台,介绍汇编语言的基础知识和应用,达到与当前软件开发和应用环境紧密结合的目的。本书有以下几个特点。(1)从DOS过渡到Windows。不再介绍过时的BIOS/DOS功能调用和DOS执行环境,取而代之的是Windows的API和C库函数,书中所有的例子都是在Windows保护模式环境下运行的32位程序。(2)实践性强。将实践环节提前,将100多条指令贯穿于全书,全部程序都能上机调试运行,使读者能在实践中掌握汇编语言程序设计并熟悉Pentium的指令系统。尤其是将VisualC/C++作为汇编的开发环境,极大地方便了汇编程序的编写、调试和运行。将各种指令和伪操作等内容分解到全书中,逐步接触并使用这些指令,会达到循序渐进的效果。(3)与C/C++紧密结合。C/C++语言是目前的主流开发语言,往往也是汇编语言的先修课程。书中的部分C/C++程序与汇编程序相对照,在汇编程序中也调用了C库函数。这不但有利于对汇编语言的掌握,而且能够提高C/C++程序的编程水平,理解和解决在C/C++程序开发过程中遇到的结构对齐、字节序、程序运行效率、堆栈溢出、内存覆盖、系统崩溃、访问违例等问题。C/C++和汇编语言联合编程能够应用于当前实际的软件开发过程,具有很强的实践指导性。(4)介绍了保护模式的运行机制。在介绍保护模式时,使用了大量的实例以帮助读者更好地理解描述符、页表、门、任务等复杂概念,其中还介绍了一个Windows内核驱动程序。通过对Pentium保护模式的学习,能够更透彻地理解虚拟内存管理、进程环境等其他相关知识。(5)采用典型编程实例。在示例程序中采用了指针、数组、结构、链表等数据结构,以及冒泡排序、快速排序、折半查找、加密/解密等算法,既体现了汇编语言的编程特点,又具有很强的实用性。(6)知识全面。增加了MASM6.1版本的汇编高级语法等,并介绍了DLL、C库函数、WindowsAPI等内容。(7)适合自学。对部分不能在课堂上讲授的内容,可安排自学。在编写过程中,采用循序渐进的叙述方法,配以大量的实例来帮助读者对这些内容进行理解。书中的许多习题都是以例子程序为基础的,可达到举一反三的效果。Pentium指令系统中还包括浮点运算、MMX多媒体扩展、数据流SIMD扩展(SSE、SSE2)等部分,考虑到它们的使用范围较窄,由于篇幅所限,本书没有介绍这方面的内容,感兴趣的读者可以参考其他书籍。全书共分10章。第1,2,3章由张雪兰教授编写,其余各章由谭毓安副教授编写。7.4节、7.5节、8.2节、8.5节及第10章属于较高要求的内容,在教学时可以根据情况进行删减。在本书的编写过程中,不仅融合了作者多年来讲授汇编语言程序设计课程的经验,还请多位老师和同学阅读了书稿,提出了改进意见,在此深表谢意。同时,本书还参考了国内外的众多教材和资料,在此谨对这些教材和资料的原创者致谢。对书中的错误和不当之处,敬请广大读者批评指正。作者的电子邮箱是:victortan@yeah.net,欢迎通过电子邮件方式向本人索取本书的PowerPoint讲稿和其他教学资料。编者
作者简介
暂缺《Windows汇编语言程序设计教程》作者简介
目录
第1章 基础知识 1
1.1 常用数制及其相互转换 1
1.2 存储器内的数字表示 3
1.2.1 存储器 3
1.2.2 存储顺序 6
1.3 数据表示 8
1.3.1 整数的表示 8
1.3.2 字符的表示 9
1.3.3 汉字的表示 9
1.3.4 Unicode标准 10
1.3.5 BCD码 11
习题1 11
第2章 Intel 80x86系列微处理器 13
2.1 Intel CPU的发展 13
2.1.1 4位CPU:4004 13
2.1.2 8位CPU:8008. 8080 13
2.1.3 16位CPU:8086. 8088. 80286 13
2.1.4 32位CPU:80386. 80486 14
2.1.5 准64位CPU:Pentium. PⅡ. PⅢ. P4 14
2.1.6 64位CPU:Itanium 16
2.2 PC机操作系统的发展 16
2.2.1 MS-DOS 16
2.2.2 桌面Windows系统 17
2.2.3 Windows NT系列 17
2.2.4 Linux 18
2.3 16位CPU及DOS基础 19
2.3.1 执行单元 19
2.3.2 总线接口单元 20
2.3.3 寄存器 20
2.3.4 存储器的分段 22
2.3.5 DOS的内存布局 23
2.3.6 I/O地址空间 25
2.4 32位CPU及Windows基础 25
2.4.1 三种工作模式 25
2.4.2 寄存器 27
2.4.3 Windows应用程序的内存布局 29
2.4.4 Windows的保护机制 32
习题2 34
第3章 Windows汇编程序基础 36
3.1 机器语言. 汇编语言和高级语言 36
3.1.1 机器语言 36
3.1.2 汇编语言 37
3.1.3 高级语言 38
3.1.4 三种语言的比较 38
3.2 汇编语言程序的上机过程 39
3.2.1 汇编程序的开发过程 40
3.2.2 MASM汇编器 41
3.2.3 LINK链接器 42
3.2.4 汇编链接步骤 42
3.3 汇编源程序的格式 43
3.3.1 一个显示字符串的汇编程序 43
3.3.2 程序格式 44
3.3.3 一个Windows界面的汇编程序 51
3.4 操作数的寻址方式 52
3.4.1 立即寻址 53
3.4.2 寄存器寻址 53
3.4.3 直接寻址 54
3.4.4 寄存器间接寻址 54
3.4.5 寄存器相对寻址 55
3.4.6 基址变址寻址 56
3.4.7 基址变址相对寻址 57
3.4.8 基址变址比例相对寻址 57
3.4.9 寻址方式总结 58
3.4.10 段超越 59
3.5 数据定义 60
3.5.1 常数的表示 60
3.5.2 简单数据类型 61
3.5.3 DUP伪操作 62
3.5.4 数据定义的例子程序 62
3.6 操作符 66
3.6.1 常用伪操作 66
3.6.2 算术操作符 71
3.6.3 逻辑操作符 72
3.6.4 关系操作符 72
3.7 寻址方式的应用 72
3.7.1 立即数 72
3.7.2 数组元素的访问 73
3.7.3 指针 74
习题3 76
第4章 数据操作 78
4.1 传送指令 78
4.1.1 通用数据传送指令 78
4.1.2 数据交换指令 81
4.1.3 取地址指令 82
4.2 算术运算 83
4.2.1 加法指令 83
4.2.2 减法指令 86
4.2.3 符号位扩展指令 89
4.2.4 乘法指令 91
4.2.5 除法指令 93
4.3 BCD码算术运算 95
4.3.1 压缩BCD码调整指令 95
4.3.2 非压缩BCD码调整指令 96
4.4 位运算指令 98
4.4.1 逻辑运算指令 98
4.4.2 位操作指令 102
4.4.3 移位指令 104
习题4 109
第5章 分支与循环程序设计 111
5.1 转移 111
5.1.1 无条件转移指令 111
5.1.2 条件转移指令 112
5.2 分支结构程序设计 114
5.2.1 单分支结构和双分支结构 115
5.2.2 多分支结构 116
5.2.3 折半查找程序 119
5.2.4 有序表插入 121
5.3 循环程序设计 123
5.3.1 循环指令 124
5.3.2 不定次数的循环 128
5.3.3 循环体中操作的控制 128
5.3.4 多重循环 130
5.4 跳转表 132
5.4.1 switch语句 132
5.4.2 跳转表 133
习题5 135
第6章 子程序设计 137
6.1 堆栈 137
6.1.1 堆栈空间 137
6.1.2 进栈和出栈指令 138
6.1.3 堆栈的用途 141
6.2 子程序 143
6.2.1 子程序的定义和调用 144
6.2.2 调用和返回指令 144
6.2.3 C语言函数的参数传递方式 147
6.2.4 汇编语言子程序的参数传递方式 153
6.2.5 带参数子程序的调用 154
6.2.6 子程序中的局部变量 157
6.2.7 子程序的嵌套 163
6.2.8 子程序的递归 163
6.3 Windows API 166
习题6 168
第7章 常用数据结构 171
7.1 数组与内存块 171
7.1.1 块操作 172
7.1.2 块传送指令 173
7.1.3 块存储指令 178
7.1.4 块装入指令 178
7.1.5 块比较指令 179
7.1.6 块扫描指令 181
7.2 字符串处理 182
7.2.1 常用字符串处理函数 183
7.2.2 常用内存块处理函数 185
7.3 结构 188
7.3.1 表示时间的结构 188
7.3.2 结构的声明和定义 190
7.3.3 结构数组 193
7.4 链表 198
7.4.1 动态分配和释放内存 198
7.4.2 链表中元素的插入与删除 199
7.4.3 链表的排序 204
7.4.4 双向链表 207
7.5 函数指针 207
7.5.1 指向子程序(函数)的指针 208
7.5.2 结构中的函数指针 210
7.6 程序执行环境 212
7.6.1 输入/输出重定向 212
7.6.2 命令行参数及程序返回值 213
习题7 214
第8章 汇编语言高级编程技术 216
8.1 宏 216
8.1.1 宏指令的定义和使用 216
8.1.2 宏指令中参数的使用 220
8.1.3 特殊的宏操作符 222
8.1.4 宏与子程序的区别 226
8.1.5 重复汇编 227
8.1.6 条件汇编 230
8.2 汇编高级语法 236
8.2.1 条件测试表达式 237
8.2.2 分支伪操作 239
8.2.3 循环伪操作 241
8.3 模块化程序设计 244
8.3.1 模块化程序设计基本概念 244
8.3.2 模块间的通信 245
8.4 C和汇编的混合编程 247
8.4.1 直接嵌入 247
8.4.2 C程序调用汇编子程序 249
8.4.3 汇编调用C函数 259
8.4.4 C 与汇编 261
8.5 程序优化 268
8.5.1 运行时间的优化 269
8.5.2 占用空间的优化 276
习题8 280
第9章 I/O程序设计 283
9.1 I/O操作 283
9.1.1 I/O端口及其分配 283
9.1.2 I/O指令 286
9.1.3 保护模式下I/O指令的限制 288
9.2 直接传送方式 289
9.2.1 CMOS数据的读取 289
9.2.2 扬声器发声程序 292
9.2.3 串行I/O 294
9.2.4 并行I/O 296
9.3 中断传送方式 298
9.3.1 基本原理 298
9.3.2 中断服务程序 300
9.4 DMA传送方式 302
9.4.1 DMA传送的过程 303
9.4.2 软盘控制器与DMA 304
9.5 文件I/O 304
9.5.1 文件 305
9.5.2 文件操作的基本函数 307
9.5.3 文件处理实例 310
习题9 316
第10章 保护模式及其编程 318
10.1 保护模式基础 318
10.1.1 32位CPU内部结构 318
10.1.2 三种运行模式 320
10.1.3 寄存器 321
10.1.4 显示CPU寄存器的值 327
10.2 虚拟内存管理 331
10.2.1 段式内存管理功能 331
10.2.2 页式内存管理功能 336
10.3 特权级保护 347
10.3.1 对数据访问的保护 348
10.3.2 对程序转移的保护 350
10.3.3 门 351
10.4 任务 354
10.4.1 任务状态段 354
10.4.2 任务切换 358
10.4.3 输入/输出保护 362
10.4.4 编写驱动程序修改I/O位图 364
10.5 中断和异常 369
10.5.1 中断和异常的类型 369
10.5.2 中断门和陷阱门 376
10.5.3 中断和异常的处理过程 378
10.5.4 通过任务门的转移 381
10.5.5 结构化异常处理 384
10.6 虚拟8086模式 389
10.6.1 虚拟8086任务 389
10.6.2 虚拟8086模式的进入和退出 391
10.7 操作系统类指令 394
10.7.1 在实模式和任何特权级下可执行的指令 395
10.7.2 仅在实模式及特权级0下可执行的指令 396
10.7.3 仅在保护模式下可执行的指令 397
习题10 401
附录A 使用VC编译调试汇编程序 403
附录B ASCII码表 410
附录C 汇编语言伪指令和操作符 412
参考文献 414
猜您喜欢

读书导航