华信教育资源网
汇编语言程序设计(第5版)
作   译   者:钱晓捷 出 版 日 期:2018-06-01
出   版   社:电子工业出版社 维   护   人:章海涛 
书   代   号:G0315880 I S B N:9787121315886

图书简介:

本书为“十二五”普通高等教育本科国家级规划教材,是教育部‐微软精品课程教学成果。本书以Intel 80x86指令系统和MASM 6.x为主体,共10章,分为基础和提高两部分。前5章为基础部分,以当前“汇编语言程序设计”课程的教学为目标,讲解16位基本整数指令及其汇编语言程序设计的知识,包括:汇编语言程序设计基础知识,8086指令详解,MASM伪指令和操作符,程序格式,程序结构及其设计方法。后5章为提高部分,介绍汇编语言程序设计的深入内容和实际应用知识,包括:32位80x86 CPU的整数指令系统及其编程,汇编语言与C/C++混合编程,80x87 FPU浮点指令系统及其编程,多媒体扩展指令系统及其编程,64位指令简介。本书可作为高等院校“汇编语言程序设计”课程的教材或参考书。本书内容广博、语言浅显、结构清晰、实例丰富,也适合电子信息、自动控制等专业的高校学生和成教学生、计算机应用开发人员、深入学习微机应用技术的普通读者阅读。
定价 52.0
您的专属联系人更多
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源
  • 图 书 内 容

    内容简介

    本书为“十二五”普通高等教育本科国家级规划教材,是教育部‐微软精品课程教学成果。本书以Intel 80x86指令系统和MASM 6.x为主体,共10章,分为基础和提高两部分。前5章为基础部分,以当前“汇编语言程序设计”课程的教学为目标,讲解16位基本整数指令及其汇编语言程序设计的知识,包括:汇编语言程序设计基础知识,8086指令详解,MASM伪指令和操作符,程序格式,程序结构及其设计方法。后5章为提高部分,介绍汇编语言程序设计的深入内容和实际应用知识,包括:32位80x86 CPU的整数指令系统及其编程,汇编语言与C/C++混合编程,80x87 FPU浮点指令系统及其编程,多媒体扩展指令系统及其编程,64位指令简介。本书可作为高等院校“汇编语言程序设计”课程的教材或参考书。本书内容广博、语言浅显、结构清晰、实例丰富,也适合电子信息、自动控制等专业的高校学生和成教学生、计算机应用开发人员、深入学习微机应用技术的普通读者阅读。

    图书详情

    ISBN:9787121315886
    开 本:16开
    页 数:368
    字 数:584.0

    本书目录

    目  录
    第1章  汇编语言基础知识	1
    1.1  计算机系统概述	1
    1.1.1  计算机的硬件	1
    1.1.2  计算机的软件	3
    1.1.3  计算机的程序设计语言	3
    1.2  数据表示	5
    1.2.1  数制	5
    1.2.2  数值的编码	8
    1.2.3  字符的编码	10
    1.3  Intel 80x86系列微处理器	13
    1.3.1  16位80x86微处理器	13
    1.3.2  IA-32微处理器	14
    1.3.3  Intel 64处理器	15
    1.4  微型计算机系统	16
    1.5  8086微处理器	18
    1.5.1  8086的功能结构	18
    1.5.2  8086的寄存器	19
    1.5.3  8086的存储器组织	22
    1.6  8086的寻址方式	25
    1.6.1  8086的机器代码格式	26
    1.6.2  立即数寻址方式	27
    1.6.3  寄存器寻址方式	28
    1.6.4  存储器寻址方式	28
    1.6.5  数据寻址的组合	30
    习题1	31
    第2章  8086的指令系统	33
    2.1  数据传送类指令	33
    2.1.1  通用数据传送指令	33
    2.1.2  堆栈操作指令	36
    2.1.3  标志传送指令	38
    2.1.4  地址传送指令	39
    2.2  算术运算类指令	39
    2.2.1  状态标志	39
    2.2.2  加法指令	41
    2.2.3  减法指令	42
    2.2.4  乘法指令	44
    2.2.5  除法指令	44
    2.2.6  符号扩展指令	45
    2.2.7  十进制调整指令	46
    2.3  位操作类指令	49
    2.3.1  逻辑运算指令	49
    2.3.2  移位指令	50
    2.3.3  循环移位指令	51
    2.4  控制转移类指令	52
    2.4.1  无条件转移指令	53
    2.4.2  条件转移指令	54
    2.4.3  循环指令	57
    2.4.4  子程序指令	58
    2.4.5  中断指令	59
    2.5  处理机控制类指令	61
    习题2	63
    第3章  汇编语言程序格式	68
    3.1  汇编语言程序的开发	68
    3.1.1  汇编语言程序的语句格式	68
    3.1.2  汇编语言的源程序框架	70
    3.1.3  汇编语言程序的开发过程	73
    3.1.4  DOS系统功能调用	82
    3.2  参数、变量和标号	84
    3.2.1  数值型参数	84
    3.2.2  变量定义伪指令	86
    3.2.3  变量和标号的属性	90
    3.3  程序段的定义和属性	92
    3.3.1  DOS的程序结构	92
    3.3.2  简化段定义的格式	93
    3.3.3  完整段定义的格式	97
    3.4  复杂数据结构	100
    3.4.1  结构	100
    3.4.2  记录	102
    习题3	103
    第4章  基本汇编语言程序设计	106
    4.1  顺序程序设计	106
    4.2  分支程序设计	107
    4.2.1  单分支结构	107
    4.2.2  双分支结构	108
    4.2.3  多分支结构	109
    4.3  循环程序设计	112
    4.3.1  计数控制循环	113
    4.3.2  条件控制循环	114
    4.3.3  多重循环	115
    4.3.4  串操作类指令	116
    4.4  子程序设计	121
    4.4.1  过程定义伪指令	122
    4.4.2  子程序的参数传递	124
    4.4.3  子程序的嵌套、递归和重入	127
    4.4.4  子程序的应用	129
    习题4	134
    第5章  高级汇编语言程序设计	137
    5.1  高级语言特性	137
    5.1.1  条件控制伪指令	137
    5.1.2  循环控制伪指令	139
    5.1.3  过程声明和过程调用伪指令	141
    5.2  宏结构程序设计	143
    5.2.1  宏汇编	144
    5.2.2  重复汇编	149
    5.2.3  条件汇编	150
    5.3  模块化程序设计	153
    5.3.1  源程序文件的包含	153
    5.3.2  目标代码文件的连接	158
    5.3.3  子程序库的调入	160
    5.4  输入 / 输出程序设计	162
    5.4.1  输入/输出指令	163
    5.4.2  程序直接控制输入/输出	164
    5.4.3  程序查询输入/输出	165
    5.4.4  中断服务程序	166
    习题5	173
    第6章  32位指令及其编程	176
    6.1  32位CPU的指令运行环境	176
    6.1.1  寄存器	177
    6.1.2  寻址方式	179
    6.1.3  机器代码格式	180
    6.2  32位扩展指令	182
    6.2.1  数据传送类指令	182
    6.2.2  算术运算类指令	184
    6.2.3  位操作类指令	185
    6.2.4  串操作类指令	185
    6.2.5  控制转移类指令	186
    6.3  DOS下的32位程序设计	189
    6.4  32位新增指令	193
    6.4.1  80386新增指令	193
    6.4.2  80486新增指令	196
    6.4.3  Pentium新增指令	197
    6.4.4  Pentium Pro新增指令	201
    6.5  用汇编语言编写32位Windows应用程序	202
    6.5.1  32位Windows应用程序的特点	203
    6.5.2  32位Windows控制台程序	204
    6.5.3  Windows应用程序的开发	208
    6.5.4  创建消息窗口	209
    6.5.5  创建窗口应用程序	210
    习题6	217
    第7章  汇编语言与C/C++的混合编程	221
    7.1  Turbo C嵌入汇编方式	221
    7.1.1  嵌入汇编语句的格式	222
    7.1.2  汇编语句访问C语言的数据	223
    7.1.3  嵌入汇编的编译过程	224
    7.2  Turbo C模块连接方式	225
    7.2.1  混合编程的约定规则	225
    7.2.2  汇编模块的编译和连接	227
    7.2.3  混合编程的参数传递	228
    7.2.4  汇编语言程序对C语言程序的调用	235
    7.3  汇编语言在Visual C++中的应用	238
    7.3.1  嵌入汇编语言指令	238
    7.3.2  调用汇编语言过程	241
    7.3.3  使用汇编语言优化C++代码	245
    7.3.4  使用Visual C++开发汇编语言程序	248
    习题7	251
    第8章  80x87浮点指令及其编程	254
    8.1  浮点数据格式	254
    8.1.1  实数和浮点格式	254
    8.1.2  80x87的数据格式	257
    8.2  浮点寄存器	259
    8.3  浮点指令的程序设计	262
    8.3.1  浮点传送类指令	263
    8.3.2  算术运算类指令	265
    8.3.3  超越函数类指令	268
    8.3.4  浮点比较类指令	269
    8.3.5  FPU控制类指令	273
    习题8	277
    第9章  多媒体指令及其编程	280
    9.1  MMX指令系统	280
    9.1.1  MMX的数据结构	280
    9.1.2  MMX指令	282
    9.1.3  MMX指令的程序设计	289
    9.2  SSE指令系统	291
    9.2.1  SIMD浮点指令	291
    9.2.2  SIMD整数指令	299
    9.2.3  高速缓存优化处理指令	301
    9.2.4  SSE指令的程序设计	302
    9.3  SSE2指令系统	306
    9.3.1  SSE2的数据类型	306
    9.3.2  SSE2浮点指令	307
    9.3.3  SSE2扩展指令	312
    9.3.4  SSE2指令的程序设计	314
    9.4  SSE3指令系统	316
    9.4.1  SSE3指令	316
    9.4.2  SSE3指令的程序设计	318
    习题9	319
    第10章  64位指令简介	321
    10.1  64位方式的运行环境	321
    10.2  64位方式的指令	324
    附录A  调试程序DEBUG	328
    A.1  DEBUG程序的调用	328
    A.2  DEBUG命令的格式	328
    A.3  DEBUG的命令	329
    A.4  程序片段的调试方法	333
    A.5  可执行程序文件的调试方法	334
    A.6  使用调试程序的注意事项	336
    附录B  调试程序CodeView	338
    B.1  CodeView的菜单命令	338
    B.2  CodeView的窗口	340
    B.3  CodeView的设置	342
    B.4  使用CodeView的调试示例	343
    附录C  汇编程序MASM的伪指令和操作符	346
    附录D  80x86整数指令系统	347
    附录E  常见汇编错误信息	353
    附录F  输入/输出子程序库	355
    参考文献	356
    展开

    前     言

    前  言
    本书以Intel 80x86指令系统和MASM 6.x为主体,在个人微机的MS-DOS和Windows操作系统平台上,依据循序渐进的原则,以浅显的语言、清晰的结构、丰富的实例,全面而系统地介绍整数指令、浮点指令、多媒体指令的汇编语言程序设计方法,以及汇编语言的模块化开发、32位Windows应用程序的编写、与C/C++混合编程等高级技术。
    全书共10章,分为前5章的基础部分和后5章的提高部分。
    第1章总结性地给出进行汇编语言程序设计所需要学习的基本知识,包括微型计算机系统的软件和硬件组成、数据表示,并重点展开8086通用寄存器和寻址方式。第2章详尽讲述8086微处理器整数指令的功能和使用,并引导读者正确书写每条指令、理解程序段的功能,以及编写常见问题的汇编语言程序。第3章结合汇编语言源程序格式,引出程序开发、语句格式、常用伪指令和操作符、段定义等内容。第4章以程序设计技术为主线,结合大量的程序实例详述顺序、分支、循环、子程序结构的汇编语言程序设计方法。第5章介绍汇编语言的高级程序设计技术,包括MASM的高级语言特性、宏结构程序、模块化程序设计和I/O程序设计。 
    第6章首先将16位指令及编程扩展到32位环境,其次介绍新增整数指令及其应用,最后重点展开利用汇编语言编写32位Windows控制台和窗口应用程序的开发环境和基本方法。第7章讨论汇编语言与高级语言Turbo C和Visual C++的混合编程,并说明如何利用汇编语言优化C++代码,以及利用Visual C++集成环境开发汇编语言程序的方法。第8章介绍Intel 80x87浮点数据格式、浮点指令及其程序设计方法。第9章介绍MMX、SSE、SSE2和SSE3多媒体指令及其编程方法。第10章简介Intel 64结构的64位指令。
    附录内容包括:① DEBUG调试程序,可用于配合前5章,尤其是第1章和第2章寻址方式、指令功能、程序片段的学习;② CodeView调试程序的使用方法,可用于第3章以后进行源程序级的程序调试;③ 汇编程序MASM 6.11的伪指令、Intel 80x86整数指令和常见汇编错误列表;④ 与本书配套的输入/输出子程序库的使用说明。
    每章最后配有相当数量的习题,既可以作为课后作业,也可以作为上机练习。
    本书特点
    本书自2000年出版以来获得广大师生读者好评,相继被评为普通高等教育“十一五”国家级规划教材、“十二五”普通高等教育本科国家级规划教材。作者主持的“汇编语言程序设计”课程为教育部—微软精品课程和河南省精品课程。总结教学经验和改革思路,结合师生反馈,我们在前4版的基础上编写了本书,并保持了原来的诸多特点。
    (1)知识全面
    本书的编写参照国内高校和自学考试“汇编语言程序设计”课程的本、专科教学大纲,兼顾相关专业教学要求,既满足当前教学需求,又面向今后改革方向。
    本书全面讲解80x86指令系统及编程,除完整的8086指令外,还包括32位指令、浮点指令、多媒体指令。本书不仅介绍基本的汇编语言程序设计知识,还介绍高级汇编语言程序设计技术,如开发大型程序需要的模块化方法、实际应用当中的混合编程实用技术、32位Windows应用程序编写等。本书采用MASM 6.x汇编程序,采用简化段定义源程序格式,涉及DOS和Windows操作系统平台的汇编语言程序设计。 
    (2)教材实用
    本书示例中的指令、程序片段和完整的源程序都经过验证,能够运行通过。本书经过4个版本、16年的使用,已经发现并纠正了绝大多数错误。
    本书采用浅显、明晰、循序渐进的描述方法,具有前后对照、贯穿始终的风格,加上清晰的结构、丰富的示例,使得本书既适合课堂教学,又适合读者自学。配合本书,作者制作有精美的多媒体电子教案(PowerPoint演示文档),为教师利用现代化教学手段提供方便。
    (3)突出实践
    本书特别强调上机实践,不仅在正文中引导读者通过调试程序或者带输出结果的源程序理解指令、程序功能,各章还配有丰富的习题和上机练习题;附录介绍调试程序的使用方法、调试指令和程序的步骤。
    本书的结构安排适合尽早上机实践,并将实践过程贯穿始终。第1章引出MASM开发软件包,可用于熟悉命令行MS-DOS基本操作(基于Windows),第2章充分利用调试程序学习指令功能和调试程序段,第3章引出完整的源程序格式,并给出程序开发方法。后续章节通过大量程序强化编程开发,还介绍了开发Windows应用程序的MASM32环境、利用Visual C++开发调试汇编语言程序的方法。
    写给教师
    “汇编语言程序设计”的教学内容在高校相关学科的教学中有两种处理方式。一种作为独立的课程,这主要是用在计算机专业的本科、专科教学中;而在电子、通信、自动控制等专业则将汇编语言作为主体融入微机原理课程。本书内容自成一个相对完整的知识体系,适合作为独立课程的教材,也可以作为微机原理课程的参考书和补充教材。传统上,“汇编语言程序设计”课程在MS-DOS操作系统平台上采用微软的MASM汇编程序,介绍16位8086微处理器指令系统的程序设计。当前,有些院校已将汇编语言的教学重点转向32位IA-32微处理器指令系统,操作系统平台也过渡为Windows,也出现在Linux环境下的汇编语言课程。
    本书从简单的16位汇编语言入手,使其满足当前教学要求(包括与“微机原理与接口技术”、“计算机组成原理”等课程的配合);在32位汇编语言展开许多深入的内容,使其面向以后的应用需求。本书在组织教学内容上,体现了许多新的理念。例如,没有从纯软件角度介绍汇编语言,教学的重点是硬指令而不是伪指令,强调程序设计不是程序格式,引出实用技术但淡化具体应用,通过程序实例和上机实践掌握程序设计方法,而不是通过大量细节的描述讲解程序设计。
    汇编语言的基本语句是处理器指令。对于Intel 80x86系列微处理器,由于其属于复杂指令集计算机CISC,再加上几十年发展的历史沉淀,因此它的指令系统非常庞大和复杂。虽然作为本书的一个特色,介绍了Pentium 4及之前处理器的所有指令,但教材的重点教学内容却是常用的简单指令,全书的实例程序也主要采用各种处理器指令系统所共有的基本指令编写。教师尤其应该注意这个问题,否则许多学生会面对繁杂的指令望而却步、失去进一步学习的兴趣。
    各种高级语言程序设计的教学中,调试程序及程序的调试方法往往被忽略或回避,但作为低级程序语言的汇编语言不应避而不谈。在汇编语言的教学过程中,可以利用调试程序的单步执行和断点执行能力,直观地理解指令和程序的功能,进而掌握程序的动态调试和排错。对于专科层次或程度较低的学生,掌握调试程序本身就是一个似乎不可逾越的难关。一方面,教师可以通过多媒体教学手段,演示调试程序的使用;学生通过上机实践学习调试程序。另一方面,本书自编了一个显示输出和键盘输入的I/O子程序库,教师和学生可以直接使用其中的子程序来编写具有显示结果的源程序,同时可以配合列表文件,暂时避开调试程序这个难点。这个I/O子程序库可以作为一个教学案例,用于组织学习中有余力的学生围绕输入输出子程序库进行项目开发。
    教材在主体教学内容上保持了兼容,仍然遵循由浅入深、循序渐进的原则:先16位8086指令系统、基本汇编语言编程技术,然后介绍32位指令编程,并将汇编语言知识加深,从混合编程、浮点编程、多媒体编程等角度展开。
    与前一版相比,本书保持整体结构不变,主要修改集中在前4章,对相关知识单元(或知识点)进行更清晰的描述,具体如下:
    ① 第1章:改写第1.2节(数据表示),修改寄存器等部分内容,添加若干数据寻址的图形、增写第1.6.5节(数据寻址的组合)。
    ② 第2章:修改堆栈、符号扩展指令、指令寻址等部分内容,添加条件转移、循环和子程序指令的若干图形。
    ③ 第3章:改写第3.1.1节(语句格式)和3.1.2节(源程序框架),强调源程序框架的作用,删除第3、4、5章中示例程序的框架性语句。修改配套软件包组成、增加64位平台操作方法等。
    ④ 第4章:改写第4.1节(顺序程序设计),增加了多分支和循环的3个图示。
    ⑤ 其他章:改写第8.1.1节(浮点格式)、增写舍入处理示例,第10章中补充64位寄存器图示和一个64位Windows示例程序。
    写给学生
    学习汇编语言到底有什么用途?这是许多学生首先要提问的。
    在计算机科学与技术的知识体系当中,“汇编语言程序设计”课程的教学内容属于计算机系统结构的一个方面。汇编语言配合“计算机组成原理”和“微机原理及接口技术”等相关课程,帮助学生从软件角度理解计算机工作原理;同时,为“操作系统”、“编译原理”等课程提供必须的基础知识,也是自动控制等与硬件相关应用领域的程序设计基础。“汇编语言程序设计”课程是继“高级语言程序设计”后的又一门计算机语言程序设计课程,但汇编语言是一种低级语言。通过汇编语言的学习,学生能比较全面地了解程序设计语言,利于更深入地学习和应用高级语言。
    随着高级语言的发展、可视化开发工具的应用,汇编语言往往被应用程序开发人员忽略,其应用领域也逐渐萎缩。但是,作为一个面向机器的程序设计语言,汇编语言具有直接有效控制硬件的能力,能够编写出运行速度快、代码量小的高效程序,在许多场合具有不可替代的作用,如操作系统的核心程序段、实时控制系统的软件、智能仪器仪表的控制程序、频繁调用的子程序或动态连接库、加密解密软件、分析和防治计算机病毒,等等。
    学习什么样的汇编语言呢?这是许多学生感到困惑的。
    汇编语言与处理器指令系统相关,不同的处理器指令系统具有不同的汇编语言。但是,作为一个底层开发语言,它还是有许多共性的。从指令系统的典型性、实用性、编程环境以及教学内容连续性等方面考虑,Intel 80x86指令系统作为“汇编语言程序设计”课程的主要教学内容具有显而易见的优势,应成为计算机及相关学科的首选。
    日常工作和学习中广泛使用的个人微机(PC)采用Intel 80x86或与之兼容的微处理器。个人微机过去使用DOS操作系统,现在主要使用Windows或Linux操作系统。由于DOS操作系统平台比较简单,对程序员限制少,是一个相对理想的教学环境,所以本书利用这个平台展开汇编语言,选用DOS和Windows平台下最常用的微软MASM汇编程序。
    许多学生总感觉16位指令、8086微处理器、DOS操作系统都是很“古老”和“陈旧”的内容,但它们实际上是32位指令、Pentium 4微处理器、Windows或Linux操作系统的基础,都是基本知识。它们已经足够复杂、完全能够满足教学要求。当然,本书在提高部分也对使用32位指令编写Windows应用程序进行了详细讲解。因为有了16位汇编语言基础,这部分提高内容也就比较容易掌握了。如果直接从32位指令和Windows平台入门,往往需要大家学习很多其他内容才能够真正进入汇编语言的教学。国内外以所谓32位保护方式展开Windows汇编语言教学的教材,实际上是利用了Windows控制台环境。而Windows控制台环境的操作和外观与DOS操作系统一样,其基本教学内容几乎相同,不同的仅仅是调用操作系统功能的方法。介绍用汇编语言编写Windows窗口应用程序的教材都要求读者初步掌握汇编语言程序设计,并具有调用Windows应用程序接口API的编程经验(往往需要学习Visual C++之后才能够达到这个要求)。本书从基础知识入手,囊括上述所有教学内容。相信读者阅读本书后,会对此有深刻的体会。
    怎样才能学好汇编语言呢?这又是许多学生深感无助的。
    其实,学习汇编语言程序设计对先修知识要求不高。学生如果具备微机软件的操作能力,尤其是DOS环境和常用命令的使用,可以更好地完成上机实践(本书补充有这方面的知识,并构造一个MASM开发环境)。学生的高级语言(如C/C++)程序设计知识或经验,将有助于更好地理解程序结构和混合编程。程序设计属于软件方面的内容,但由于汇编语言与硬件相关的特点,学生在计算机或微型机原理方面的知识对于深刻体会指令功能大有益处。“汇编语言程序设计”课程的相关课程是“微机原理与接口技术”或者“计算机组成原理”,后者是微机的硬件知识,加强了汇编语言在输入/输出和中断等方面的应用。两者共同为学生建立微型计算机的完整知识体系。
    循序渐进的学习是对任何课程都有效的。不以循序渐进方式进行学习,往往会浪费宝贵的时间去盲目探索,最终学习到的内容可能是相对零散的知识,不能建立完整的、系统的知识结构。所以,建议学生遵循循序渐进的方法进行学习。首先,学生应理解每条常用指令的功能,能够正确书写每条指令;其次,学生通过阅读示例程序,掌握常见功能程序段的编写;再次,学生利用伪指令将程序段扩展成完整的源程序文件;随后,学生就各种程序结构编写常见问题的程序;最后,学生才编写较大型程序和有一定难度的程序。
    对程序设计类课程,没有上机编程的实践是无法真正掌握的。所以,学生需要加强实践环节,应完成基本的上机指导编程要求,同时争取多进行编程实践,因为只有通过实际编程才能发现程序设计中的许多问题。不要轻视调试程序的作用,它是深入理解指令功能和程序执行过程的关键。请不要直接复制源程序代码,一条一条语句的录入编辑过程就是书写正确语句、加深语句理解的绝好机会。
    本书由钱晓捷主编,昝红英、穆玲玲、邱保志参与了前两版的编写和修订,关国利、张青、程楠也给予了帮助。作者对十多年来合作的同事深表谢意,大家共同的努力成就了本书、创建了精品课程。作者要特别感谢使用本书的教师、学生和读者,是你们宝贵的意见建议和一贯支持催生了本版教材。
    本书为任课教师提供配套的教学资源(含电子教案),需要者可登录华信教育资源网站(http://www.hxedu.com.cn),注册之后进行免费下载。
    作  者
    展开

    作者简介

    本书暂无作者简介
  • 样 章 试 读
  • 图 书 评 价 我要评论
华信教育资源网