Intel汇编语言程序设计(第四版)本书全面细致地讲述了汇编语言程序设计的各个方面。从微处理器体系结构、工作机制到指令集;从最基本的编译器链接器的使用到高级过程、结构和宏的使用;从用纯汇编编写程序到用VC++,BC++等最新编译器与汇编的混合接口编程;从16位实模式下BIOS,DOS实模式文本及图形程序设计到32位保护模式的Windows程序设计;从磁盘基础知识到Intel指令编码、浮点运算等相关知识都做了深入而细致的讲解。本书是佛罗里达国际大学等多所美国大学采用的计算机基础教材,内容广博,但又讲解得非常深入,书中结合最令人感兴趣的编程问题逐步引出汇编语言的解答,书后有编译器的安装使用以及常用的编程参考资料,随书附带的CD-ROM中配有较新的免费MASM6.11编译器,为读者掌握汇编语言扫清一切障碍,另配以丰富和颇具特色的习题集及解答,使读者能够快速掌握这门公认为很难的语言。如果读者是汇编语言的初学者,本书则提供了最好的起点,如果读者已经熟练掌握了这门语言,重读本书,亦当有所收获。本书对计算机体系结构及基本原理做了相当篇幅的介绍,因此本书不仅可作为高等院校计算机专业汇编语言的教材,也可以作为计算机体系结构和原理的参考资料。本书着重讲述了如何在机器层次思考并解决程序设计的问题,具有以下特点:·详细讲述了数制系统和数据存储的基础知识·所有的例子程序都在Microsoft的MASM6.15编译器下测试通过·讲述了高级语言内嵌汇编代码以及汇编语言程序同实地址模式及保护模式的C/C++程序的链接·附带扩展的指令集手册,其中包含了指令格式和CPU标志的使用·讲述了中断和量和设备I/O·随书附带的CD-ROM中包含了MicrosoftMASM6.15汇编编译器、程序编辑器、一个宏库和本书的源代码第四版的新增内容:·Win32程序设计,包含控制台API和图形应用程序·对过程、递归、堆栈参数、结构和联合进行了更多的介绍·布尔表达式、真值表和流程图·基本的字符串处理、排序和查找算法·实地址模式和保护模式下的位映射图形·IEEE浮点二进制表示法·虚拟机体系结构,IA-32保护模式分段和分页·介绍指令执行周期、内存、多任务、流水线和超标量体系结构·磁盘基础知识,包括磁盘的物理结构、FAT32和NTFS文件的结构在广大的学生和编程爱好者眼中,汇编语言一直被认为是最难学的语言之一,究其原因,主要是因为汇编程序员在着眼于程序逻辑实现的同时还要注重太多的其他细节,这些在学习其他语言时可以不必涉及的细节包括上百条机器指令的用法。一大堆中断的用法和很多与硬件相关的知识。但是很多的汇编书籍似乎并没有考虑到读者的难题,这些书籍往往根据内容而不是根据读者的学习感受来设置章节,数制原理、计算机的硬件结构。寻址、指令、宏的使用和中断等内容都被分割在单独的章节中讲述,这样,读者就不得不在开始学习程序设计方法之前单独学习这些内容,但不和实际应用相结合,这些内容的学习和死记硬背手册无异,难度可想而知。作为作者,KipR.Irvine似乎很了解这一点,所以我们很高兴地看到,本书内容的编排非常适合于学生们从一无所知开始学习汇编语言,作者做了很大的努力使章节之间循序渐进,衔接自然。所有的指令被自然分割在各章中讲述,只有在学习的过程中真正用到某些指令的时候,才详细介绍这些指令。寻址方法、宏的使用、中断的使用等内容也是如此安排的,这样当学生们集中精力学完了汇编语言和高级语言对应的内容后,却惊奇地发现自己已经自然而然地过了指令学习等各种难关。在精心编排讲述传统的16位汇编语言知识的同时,作者也没有忘记在内容的深度和广度上下功夫:书中对虚拟机、多级流水线、超标量体系结构、多任务、IA-32保护内存的寻址和分页。指令编码和有限状态机等概念进行了详细的介绍,另外,本书以大量的篇幅介绍了汇编语言和C语言等高级语言的接口。代码优化实例。数组的实现、查找和排序算法等大量实用性很强的内容,最后,考虑到汇编语言向Windows平台迁移的趋势是不可逆转的,本书在所有内容的介绍中都涉及了32位编程的讲解,并以单独的一章讲述了32位Windows程序编程的基本方法。为了便于读者学习,本书将所有的例子代码收录在本书附带的光盘中,并在作者的网站上提供了更多的源代码例子。每章的最后都设置了习题,并在网站上提供了习题的答案。本书非常适合于作为大中院校汇编课程的教材,也是汇编语言爱好者不可多得的自学教材。本书的第11章由罗云彬翻译,其他所有章节由温玉杰。张家生翻译。另外,罗云彬负责本书全书的审校工作。由于时间紧促,加上译者水平有限,书中难免存在不足和疏漏之处,敬请读者指正和谅解。《Intel汇编语言程序设计》一书第四版介绍的知识是基于IntelIA-32处理器体系结构的。从程序员的角度来看,本书适合作为下列计算机专业课程的教材:●汇编语言程序设计●计算机系统基础知识●计算机体系结构基础知识尽管本书最初是为普通高校的学生编写的,但现在的读者群已经远不止于此了。很多大学都使用本书作为计算机体系结构课程的入门教材。例如,佛罗里达国际大学就采用本书作为计算机系统基础知识:一门将引出更全面深人地探讨计算机体系结构的课程的教材。本书的当前版本包含了以下主题,这些主题将自然地引出计算机体系结构、操作系统和编译器编写等后续课程:●虚拟机的概念●基本的布尔运算●指令执行周期●内存访问中时钟周期的使用●中断●多级流水线●超标量体系结构●多任务●加载和执行程序●浮点数的二进制表示本书中的其他一些主题则是与IA-32体系结构相关的,书中使用的信息来自于它的手册:●IA-32保护内存的寻址和分页●实地址模式下的内存分段●中断处理●直接硬件I/O●指令编码对于以后将要学习计算机科学课程的读者来说,书中给出的下列例子是很有帮助的:●查找和排序算法●高级语言接口●有限状态机●代码优化实例本书的当前版本还涉及以下一些与程序设计相关的新内容:●有关数据定义的更全面详尽的解释●有关寻址方式的更细致的讲解●适用于几乎所有过程的简化链接库,它们所需的输人参数更少,如新的显示CPU寄存器和内存内容的过程以及延时过程●对于自顶向下程序设计的讲解和说明●使用流程图作为代码生成工具●对汇编语言伪指令、宏和操作符等内容的更加全面而详尽的说明。例如:本书全面深入地讲解了PROC,PROTO和INVOKE伪指令●更完整地介绍了结构,包括嵌套结构和结构数组●IF,WHILE和REPEAT等块结构语句(这是MASM的高级特性)●介绍了视频显示,包括使用BIOS和直接内存映射技术●鼠标程序设计●Win32控制台程序设计,直接调用WindowsKernel32库●更多的数组操作实例本书仍然是一本程序设计教材读者要注意的是,本书的着重点仍然在于其原来的任务:教会学生如何在硬件层次编写和调试程序。本书并不能够替代那些全面介绍计算机体系结构的书籍,但它的确给了学生们在计算机真实工作的环境中编写软件的第一手经验,这一点的价值绝不可低估,因为他们将在同机器的即时接触中牢记大量的理论知识。在工程课程中,学生们将学习如何构建原型,在软件课程中,学生们将学习如何编写程序。在这两种课程中,原来获得的经验将给予他们在任何操作系统或面向机器的环境中工作的信心。实模式和保护模式教师们都表示愿意转向使用Intel保护内存模式的32位程序设计,本书强调了32位保护模式,但其中仍然有三章全部讲述实模式程序设计。书中用一整章内容讲述键盘。视频显示(包括图形)和鼠标的BIOS程序设计,还有一整章是关于使用中断功能调用MS-DOS程序设计的。对于学生们而言,获得一些直接面向固件和硬件的程序设计经验是非常有益的。本书前面部分的例子几乎全部是32位的基于文本的应用程序,它们运行于保护模式下并使用平坦模式,这样程序就显得非常直观,学生们不必处理段-偏移寻址这类问题。书中用特别标记的段落及提示框提示学生实模式和保护模式程序设计之间的细微差别,其中的大部分差别都封装在本书的两个链接库中了。链接库学生们使用两个版本的链接库进行基本的输入输出。32位版本的链接库(Irvine32.lib)可在任何版本的MS-Windows的Win32控制台模式下工作,16位版本可在MS-DOS,MS-Windows和Linux的DOS模拟器下工作.在本书后面部分的章节中,两个链接库中的所有函数都被逐一例举,读者还可以根据自己的需要修改库.应该注意的是,链接库仅仅是为了方便使用,面不是用来阻止学生们学习自己进行输入输出编程的。包含的软件和例子本书中所有例子程序都已经使用Microsoft6.15版本的宏汇编编译器测试通过。在大多数情况下,例子程序可以用Borland的TASM4.和5.编译,但是有些特性是Borland汇编编译器所不支持的。网站信息有关更新和勘误可以在下面的网站上找到,其中包括教授们要在章节授课结束时布置的额外的程序设计项目:http://www.nuvisionmiami.com/books/asm如果由于某种原因造成上面的网址无法访问的话,可通过在www.prenhall.com搜索书名或作者全名"Kiplrvine"来获取关于本书的信息以及网站的最新链接。作者的e-mail地址是kip@nuvisionmiami.Com。总体目标本书的每个目标都是为了激发学生们对汇编语言相关主题的兴趣,以此来拓展他们的知识:●IntelIA-32处理器体系结构和程序设计●汇编语言伪指令、宏、运算符和程序结构●程序设计方法学,展示如何使用汇编语言创建系统级软件工具和应用程序●计算机硬件控制●汇编语言程序、操作系统和其他应用程序之间的交互。作者的目标之一是帮助学生在机器层次思考并处理程序设计中遇到的问题。在程序设计时,把CPU看成是一个交互工具并学会尽可能直接地监视其各种动作是很重要的。调试器是程序员最好的朋友,这不仅仅是因为它可以用来捕捉错误,更重要的是它可以作为了解有关CPU和操作系统的教学工具。作者鼓励学生们探究高级语言表象之下的内在细节,这样可以认识到大多数高级语言都被设计成可移植的,从而使其独立于主机系统。除了简短的例子之外,书中还包括了115个马上就可以运行的例子程序,这些程序解释了教材中相应的指令和一些思想。MS-DOS中断和指令助记符等参考材料可在本书"前言"的最后找到。书中一个全面的链接库使学生在写第一个程序时更容易访问用户界面,书中包含的宏库也可能会为教授和学生的进一步开发提供灵感。需要的背景知识至少应该已经能够用其他一门程序设计语言自信地编写程序,最好是使用Pascal,Java,C或C++,书中的一章研究了汇编语言和C++的接口,其内容有一定的深度,因此读者手头有一个编译器是很有帮助的。作者在计算机科学和管理信息系统专业课还有其他一些工程课上使用了本书作为教材,授课时使用了MicrosoftVisualC++6.和BorlandC++5.来处理与高级语言接口的例子。本书特点完整的程序清单本书附带的CD-ROM包括了书中所有例子的源代码,作者的网站上有更多的程序清单。本书还包含了一个扩展链接库,其中包含了3多个用于简化用户输入输出、数值处理、磁盘和文件操作以及字符串处理的函数。在课程的开始阶段,学生可以使用该库增强他们的程序,随后可以创建自己的过程并把它们添加到链接库中。16位和32位库的完整源代码均已给出。程序设计逻辑书中的两章强调了布尔逻辑和位操作,作者有意尽量把高级语言程序设计逻辑同机器的底层细节联系起来,这有助于学生高效地实现程序并更好地理解语言编译器是如何生成目标代码的。硬件和操作系统的概念前两章介绍了基本的计算机硬件和数据表示方法的概念,包括二进制数。CPU体系结构。状态标志和内存映射等。另外还包括了计算机硬件的概览和对Intel系列处理器历史演变的介绍,这些有助于读者更好地理解目标计算机系统。结构化程序设计方法从第5章开始,本书重点强调了过程和模块分解。学生们要解决复杂的程序设计问题,这需要精心组织代码并处理复杂性的能力。磁盘存储概念学生们将从硬件和软件两个方面学习PC磁盘存储系统的基本原理。创建链接库学生们可在本书链接库中自由地添加新过程,也可以创建自己的库。他们将学会使用工具箱方法进行程序设计,编写在多个程序中可重用的代码。宏和结构本书中有专门一章讲述如何创建结构。联合和宏,这在汇编语言和高级语言中都是很重要的。带高级操作符的条件宏使宏更加专业。与高级语言的接口本书用一章的内容专门讲述汇编语言与C和C++的接口,这对于那些可能要以高级语言程序设计谋职的学生来说实在是很重要的,他们将学会优化自己编写的代码并看到编译器优化代码的实际例子。教学辅助所有的程序清单都可在随书附带CD-ROM和Web站点上找到,上面还为教师提供了所有习题。编程练习的解答和汇编语言的相关资源。授课顺序第1章至第8章讲述了汇编语言的基础知识,授课时应当按顺序讲授。作者做了很大的努力使章节之间衔接自然。第1章(基本概念):汇编语言应用程序,基本概念,机器语言和数据表示法。第2章(1A-32处理器体系结构):基本微处理器设计,指令执行周期,IA-32处理器体系结构,IA-32内存管理,微机构成,输入输出系统。第3章(汇编语言基础):汇编语言的介绍,链接和调试,定义常量和变量。第4章(数据传送。寻址和算术运算):简单的数据传送和算术运算指令,汇编-链接-执行周期,操作符。指令。表达式。JMP和LOOP指令以及间接寻址。第5章(过程):与外部库的链接,本书链接库的描述,堆栈操作,定义和使用过程,流程图,自顶向下的结构化设计。第6章(条件处理):布尔和比较指令,条件跳转和循环,高级逻辑结构,有限状态机。第7章(整数算术指令):移位和循环移位指令,乘法和除法指令,扩展加法和扩展减法指令,ASCII和压缩十进制算术指令。第8章(高级过程):堆栈框架,局部变量,参数声明,递归和高级参数传递。在第9章至第16章中,教师可以根据课程设置的情况,选择与课程最适合的主题以任意顺序讲授。第9章(字符串和数组):字符串操作指令,字符和整数数组的操作,二维数组,数组的排序和查找。第1章(结构和宏):结构,宏,条件汇编指令,定义重复块。第11章(32位Windows编程):保护模式内存管理。使用MicrosoftWindowsAPl在控制台上显示文本及色彩。第12章(高级语言接口):参数传递约定,高级语言内嵌汇编代码,汇编代码模块同C/C++,程序相链接。第13章(16位MS-DOS程序设计):调用MS-DOS中断进行控制台和文件输入输出操作。第14章(磁盘基础知识):磁盘存储系统,扇区.簇和目录,文件分配表,处理MS-DOS错误码,驱动器和目录操作。第15章(BIOS程序设计):键盘输入.视频文本和图形编程以及鼠标程序设计。第16章(高级MS-DOS程序设计):自定义的段,运行时程序结构和中断处理。第17章(高级主题):使用I/O端口控制硬件,指令编码,浮点数的二进制表示,浮点算术运算。●附录A:汇编编译器的安装和使用●附录B:Intel指令集●附录C:BIOS和MS-DOS中断●附录D:MASM参考手册