80X86汇编语言与计算机体系结构
作者 : (美)Richard C.Detmer
译者 : 郑红 庞毅林 蒋翠玲
丛书名 : 计算机科学丛书
出版日期 : 2006-01-10
ISBN : 7-111-17617-0
定价 : 49.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 332
开本 : 16开
原书名 : Introduction to 80x86 Assembly Language and Computer Architecture
原出版社: Jones and Bartlet Publishers
属性分类: 教材
包含CD :
绝版 :
图书简介

本书从计算机的结构层讨论80x86汇编语言与计算机体系结构,并提供了许多汇编语言代码的例子,便于读者在汇编语言层面上学习和掌握计算机体系结构。本书还集中介绍了高级语言中的一些概念以及一些操作系统的功能,并简要描述了在硬件层用到的逻辑门。另外,本书考察了汇编语言如何翻译为机器语言,为读者进一步学习计算机程序设计和体系结构打下基础,有助于用任何编程语言有效地进行编程,激发读者对计算机设计和体系结构进行更进一步的研究,或者更多地了解某个特定计算机系统的详细内容。

本书特点
●重点介绍了32位平面内存模型
●强调体系结构,如寄存器、内存编址、硬件功能等
●增加了高级语言概念
●初步介绍了汇编语言编程以及Microsoft公司的WinDbg汇编程序
●实例充分,并有针对性的练习和编程实践

随书光盘内容包括:
  Microsoft公司的MASM汇编程序、全屏幕调试器WinDbg和联编器以及完整的源代码和作者自己编写的用于辅助I/O的软件。

图书特色

图书前言

计算机可以从多种不同的层次来认识。有些人只对字处理或者游戏之类的计算机应用软件感兴趣,但是,计算机程序员通常把计算机作为一个工具,用来编写新的应用软件。通过语言编译器,高级语言程序员更深入地认识了计算机,编译器给人的印象是,计算机的内存地址中存储integer、real和array of char等等对象类型,计算表达式的值,调用过程,执行while循环等等。
  然而,事实上计算机是在很低的层次上工作。本书强调计算机的体系结构层,也就是,由机器指令所定义的层次,处理器可以在该层执行。汇编语言指令直接翻译为机器语言指令,这样,当编写一个汇编语言程序时,就可以理解计算机在机器语言级是如何工作的。
  尽管本书强调的是计算机操作的汇编语言/机器语言层,但也可从其他层次来认识计算机。本书讨论了高级语言中的一些概念,例如if语句在机器层是如何实现的。本书还讨论了操作系统的一些功能,并简要描述了在硬件层用到的逻辑门。另外,本书考察了汇编语言是如何翻译为机器语言的。
  为了在任何层次都可以有效地编程,程序员必须了解在机器层的某些基本原理,它们在大多数的计算机体系结构中都要用到。本书将涉及以下基本概念:
  * 存储地址,CPU寄存器及其使用
  * 计算机中数值型格式的数据和字符串的表示
  * 二进制补码整数的操作指令
  * 单个位操作的指令
  * 处理字符串的指令
  * 分支和循环指令
  * 过程编码:控制转移、参数传递、局部变量和调用程序的环境保护
  本书中讨论的主要的计算机体系结构是大多数个人计算机所使用的80x86 CPU系列。但是,几乎每章都有其他体系结构,或者不同的计算机层次的信息。用汇编语言编程以及学习本书中的相关概念,有助于用任何编程语言进行有效的编程,激发对计算机设计和体系结构更进一步的研究,或者更多地了解某个特定的计算机系统的详细内容。

本书的组织结构和内容
  本书中的大多数素材基于我的前一本书—《Fundamentals of Assembly Language Programming Using the IBM PC and Compatibles》。通过多年对这些素材的教学使我得出这样一个结论:对大多数学生而言,汇编语言课程是介绍计算机体系结构最好的课程。相对于编程而言,本书更多地强调体系结构。本书还重点介绍一些通用的概念,而不是某个特定的计算机系统的细节。
  学习这门汇编语言课程要求的前提条件是至少要对高级语言结构有很好的理解。第3章~第6章及第8章是我第一学期课程的核心内容,第1章~第8章的内容我通常讲解得很详细,第9章速度会快些,根据时间和可利用的资源,选择性讲解第10章~第12章的某些主题。例如,有时,我会通过某个C++程序中的汇编语句行来介绍浮点运算。

风格和教学
  本书主要是例证教学。早在第3章本书就给出了一个完整的汇编语言程序,并且在学生能够理解的层次上,仔细地考察了程序的各个部分。随后的章节包含了许多汇编语言代码的例子,同时,对一些新的或者难以理解的概念给出了恰当的解释。
  本书使用了大量的图表和例子。给出许多“指令执行前”和“指令执行后”的例子来讲解指令。本书还有一些演示调试程序(debugger)使用的例子。这些例子可以帮助学生深入了解计算机内部的工作。
  每章的后面都有练习。答案简短的练习可以加深学生对学过的内容的理解,而且每章后面的编程练习也为学生提供了一个将书中的内容运用到汇编语言编程中的机会。

软件环境
  “标准”的80x86汇编器是微软宏汇编器(MASM),版本为6.11。尽管该汇编器生成的代码用于32位的平面内存模式编程,非常适合Windows 95、Windows NT或者32位的微软操作系统环境,但是,与该软件包对应的链接器和调试程序并不适合在这样的系统环境中使用。本书附带一张光盘,包含MASM(ML)的汇编程序、最新的微软链接器、32位的全屏调试程序WinDbg(也来自于微软)以及必要的支持文件。该软件包为生成和调试控制台的应用程序提供了一个良好的环境。
  本书配套光盘中不仅有本书的内容,也有可供学生使用的简单的输入/输出设计的软件包。因此,它强调的重点仍然是计算机体系结构而不是操作系统的细节。这个I/O包在本书中广泛使用。最后,该光盘还包含了每个程序的源代码,这些程序都会在书中出现。

致谢
  我想感谢我的学生们,他们对本书的最初版本付出了很多努力,让我经常能及时地得到素材。这些学生非常善于捕捉错误。我也要感谢Hong Shi Yuan,在他的汇编语言课程上,他用了本书的最初版本,并提供了有价值的反馈意见。
  我还要感谢花了很多时间来检查本书手稿的人们:Houston-Clear Lake大学的Dennis Bouvier、美国空军学院的Barry Fagin、Worcester工艺学院的Glynis Hamel、犹他谷州立大学的Dennis Fairclough、东南路易斯安娜大学的Thomas Higginbotham、Worcester工艺学院的Clifford Nadler。
  我的妻子Carol值得称赞。当我在计算机前处理书稿时,经常忽略了她,而她都给予了理解。

Richard C. Detmer

作者简介

(美)Richard C.Detmer:Richard C.Detmer: 于1966年毕业于肯塔基大学,后于威斯康星大学获硕士学位和博士学位,现任中田纳西州大学计算机科学系教授和系主任。

译者简介

郑红 庞毅林 蒋翠玲:暂无简介

译者序

关于这本书的意义和它的主要内容,本书的作者在前言中已经讲得很详细了。我只想简单谈谈在翻译过程中的一些感想。
  首先,我很高兴有机会翻译这本书,因为,在过去我们学习计算机课程时,汇编语言课程是使用单独的教材,很少和计算机体系结构结合在一起,学习汇编语言常常令人觉得有些枯燥,并且似乎有些难学易忘;同样,在教授计算机体系结构时,也没有过多地讨论汇编语言程序设计。但这本书很好地将软件设计与硬件结构知识融合在一起,通过一些精选的实例,由浅入深地介绍了汇编语言程序设计的特点以及计算机的工作。因此,通过翻译这本书,不仅让我重温了这两门课程,而且更深层次地理解了计算机的体系结构。
  其次,我要感谢机械工业出版社对我的信任,在对书稿的处理过程中,诸位编辑给予了很多帮助,特别是范运年编辑和朱起飞编辑反复征询译者的意见,对本书的译稿提出了许多宝贵的建议。此外,文欣秀老师和朱法枝老师对本书翻译中遇到的个别问题,提出了中肯的意见,在此一并表示感谢。
  最后,我要感谢我的家人,他们的支持和鼓励使我能够完成翻译工作。尤其是我的孩子,刚开始翻译时,他尚未出生,他还在孕育中就陪我一起经过了初稿阶段。此后,尽管我常常因为校稿要把他放在一边,减少了对他的照顾,但是,只要我离开电脑向他走去,他总是用最开心、最灿烂的笑容迎接我。
  本书的第1章、第4章、第7章由庞毅林翻译,蒋翠玲参与了第9章的翻译,其余章节主要由郑红翻译,全书最后由郑红和庞毅林统稿。由于译者水平所限,加之时间仓促,译文中难免有不妥之处,恳请广大读者不吝批评指正。

译 者
2005年11月

图书目录

第1章  计算机中数的表示 1
1.1 二进制和十六进制数 1
1.2 字符编码 4
1.3 有符号整数的二进制补码表示 6
1.4 二进制补码数的加减法 9
1.5 数的其他表示法 13
本章小结 15
第2章  计算机系统的组成 17
2.1 微机硬件:存储器 17
2.2 微机的硬件:CPU 18
2.3 微机硬件:输入/输出设备 22
2.4 PC软件 23
本章小结 25
第3章  汇编语言的要素 26
3.1 汇编语句 26
3.2 一个完整的实例 28
3.3 程序的汇编、链接和运行 33
3.4 汇编器清单文件 38
3.5 常数操作数 43
3.6 指令中的操作数 46
3.7 使用IO.H中宏的输入/输出 49
本章小结 52
第4章 基本指令 54
4.1 复制数据指令 54
4.2 整数的加法和减法指令 61
4.3 乘法指令 69
4.4 除法指令 76
4.5 大数的加减 84
4.6 其他知识:微代码抽象级 86
本章小结 87
第5章  分支和循环 88
5.1 无条件转移 88
5.2 条件转移、比较指令和if结构 92
5.3 循环结构的实现 103
5.4 汇编语言中的for循环 113
5.5 数组 118
5.6 其他:流水线 123
本章小结 124
第6章  过程 126
6.1 80x86堆栈 126
6.2 过程体、调用和返回 131
6.3 参数和局部变量 138
6.4 递归 145
6.5 其他体系结构:没有堆栈的过程 149
本章小结 150
第7章  串操作 151
7.1 串指令 151
7.2 重复前缀和其他串指令 156
7.3 字符转换 166
7.4 二进制补码整数转换为ASCII码串 169
7.5 其他体系结构: CISC和RISC设计 172
本章小结 173
第8章  位运算 174
8.1 逻辑运算 174
8.2 移位和循环移位指令 181
8.3 ASCII字符串到二进制补码整数的转换 190
8.4 硬件级—逻辑门 194
本章小结 195
第9章  汇编过程 197
9.1 两次扫描汇编和一次扫描汇编 197
9.2 80x86指令编码 200
9.3 宏定义及其展开 209
9.4 条件汇编 213
9.5 IO.H中的宏 218
本章小结 221
第10章  浮点数运算 222
10.1 80x86浮点数结构 222
10.2 浮点型指令编程 234
10.3 浮点数的模拟 245
10.4 浮点数和嵌入式汇编 252
本章小结 253
第11章  十进制数运算 254
11.1 压缩的BCD码表示 254
11.2 压缩的BCD码指令 260
11.3 未压缩的BCD码表示和指令 266
11.4 其他体系结构:VAX压缩的十进制指令 274
本章小结 275
第12章  输入/输出 276
12.1 使用kernel32库的控制台输入/输出 276
12.2 使用Kernel 32库的连续文件的输入/输出 282
12.3 低级输入/输出 288
本章小结 289
附录A  十六进制/ASCII码的转换 291
附录B  常用的MS-DOS命令 293
附录C  MASM 6.11保留字 294
附录D  80x86指令(带助记符) 298
附录E  80x86指令(带操作码) 316

教学资源推荐
作者: [美]雷蒙德·盖拉多(Raymond Gallardo) 斯科特·霍梅尔(Scott Hommel) 索娅·坎南(Sowmya Kannan) 琼尼·戈登(Joni Gordon) 沙伦·比奥卡·扎卡沃(Sharon Biocca Zakhour)著
作者: 贾伯琪 顾为兵 苏仕华 张四海 何克东 编著
作者: Charles N.Fischer, Richard J.LeBlanc,Jr.
作者: Brian W.Kernighan,Rob Pike
参考读物推荐
作者: (美)Eugene Agafonov 著
作者: [美]杰夫·苏哈伊(Jeff Szuhay) 著
作者: [德] 斯蒂芬·罗斯(Stephan Roth) 著
作者: [美]马克·卢茨(Mark Lutz)著