本课程通过自顶向下的程序设计演示和解释,教授学生如何在机器层面上编写和调试程序,并将有效的设计技巧应用于多种程序设计课程。这种方法简化并消除了学生在学习更高级的计算机体系结构和操作系统课程之前需要掌握的概念。
本书介绍x86和Intel64处理器的汇编语言编程与架构,适合作为下述几类大学课程的教材: 汇编语言编程 计算机系统基础 计算机体系结构基础 学生使用Intel或AMD处理器,用Microsoft宏汇编器(Microsoft Macro Assembler,MASM)编程,并运行在Microsoft Windows的最新版本上。尽管本书的初衷是作为大学生的编程教材,但它也是计算机体系结构课程的有效补充。本书广受欢迎,前几个版本已被翻译成多种语言。 重点主题。本版本所包含的下列主题可以自然过渡到计算机体系结构、操作系统及编写编译器的后续课程: 虚拟机概念 指令集架构 基本布尔运算 指令执行周期 内存访问和握手 中断和轮询 基于硬件的I/O 浮点数的二进制表示 下列主题则专门针对x86和Intel64架构: 受保护的内存和分页 实地址模式下的内存分段 16位中断处理 MS-DOS和BIOS系统调用(中断) 浮点单元架构和编程 指令编码 本书中的某些例子还适用于计算机科学课程体系中的后续课程: 查找与排序算法 高级语言结构 有限状态机 代码优化示例 第8版的新内容 这个版本代表了本书向交互式电子教科书的过渡。我们对此非常兴奋,因为读者第一次能够针对复习题、代码动画、教程视频以及多输入习题进行实验和互动。 各章中的“本节回顾”都已改写成交互式问题,可以对读者的答案给出即时反馈。同时,新增加和删除了一些问题,并修改了很多问题。 代码动画使得读者能单步执行程序代码,并查看变量值和代码注释。读者再也不必在程序代码与下一页上的文本解释之间来回跳跃。 教材中插入了适时的教程视频的链接,这样读者就能得到关于教材中相关主题的辅导。以前,对于这些呈现为清单的整套视频,读者需要单独购买订阅才能访问。在本版本中,视频是免费的。 多输入习题允许用户浏览程序清单,并在代码旁边的方框内插入变量值。读者可接收到即时、彩色的反馈,有机会进行尝试,直至所有输入值都正确。 关键术语的超文本定义贯穿了全教材,这些定义都连接到一个在线的词汇表。 简而言之,我们提取了本书的精华内容(经过很多版本的精雕细琢),并将其置入交互式电子教科书中。 本书关注的首要目标仍然是教授学生编写并调试机器级程序。它不能代替计算机体系结构的完整教材,但它确实能在一个对学生讲授计算机如何工作的环境中给予学生编写软件的第一手经验。我们认为,理论联系实际能让学生更好地掌握知识。在工程课程中,学生构建原型;而在计算机体系结构课程中,学生应编写机器级程序。在这两种情况下,学生都能获得难忘的经验,从而有信心在任何OS/面向机器的环境中工作。 保护模式编程是从第1章到第13章的重中之重。由此,学生就能创建32位和64位程序,并运行于最新版本的Microsoft Windows下。其余三章是传统的章节,讲述了16位编程。这些章包含BIOS编程、MS-DOS服务、键盘和鼠标输入、磁盘存储基础、视频编程以及图形处理。 子例程库。本书为学生提供了三个版本的子例程库,用于基本输入/输出、模拟、定时以及其他有用的任务。Irvine32和Irvine64库运行于保护模式。16位版本的库(Irvine16.lib)运行于实地址模式,且只用于第14~16章。这些库的完整源代码可见于配套的网站。链接库是为了使用方便,而不是阻止学生自行对输入/输出编程。我们鼓励学生创建自己的库。 所含软件和示例。所有示例程序均采用运行于写作本书时最新的Microsoft Visual Studio中的Microsoft Macro Assembler进行了测试。此外,我们还提供了批处理文件,使得学生可在Windows命令提示符下汇编和运行应用程序。本书的信息更新与勘误可参见配套的网站,其中包括一些额外的编程项目,教师可以在各章结束时布置给学生。 总体目标 本书的以下目标旨在拓展学生对汇编语言相关主题的兴趣和知识: Intel和AMD处理器的架构及编程。 实地址模式和保护模式编程。 汇编语言伪指令、宏、操作符以及程序结构。 编程方法,展示如何使用汇编语言来创建系统级软件工具和应用程序。 计算机硬件操作。 汇编语言程序、操作系统以及其他应用程序之间的交互作用。 我们的目标之一是帮助学生以机器级的思维方式来处理编程问题。将CPU视为交互工具,学习尽可能直接地监控其操作是很重要的。调试器是程序员最好的朋友,它不仅可以捕捉错误,还可以用作讲授CPU和操作系统的教学工具。我们鼓励学生探究高级语言表面之下的内部机制,要让他们意识到大多数编程语言都被设计为可移植的,因而也独立于其宿主机。除了简短的示例外,本书还包含几百个可运行的程序,用来演示书中讲述的指令和思想。本书末尾有一些参考资料,比如MS-DOS中断和指令助记符指南。 背景知识要求。读者应能自如地使用至少一种高级语言进行编程,比如Python、Java、C或C++。本书有一章涉及C++接口,因此,如果手边有编译器就会非常有帮助。本书不仅已经用于计算机科学和管理信息系统专业的课堂,而且还已用于其他工程课程。 特色 完
基普·R. 欧文(Kip R. Irvine)拥有迈阿密大学计算机科学硕士、音乐艺术博士学位,现为佛罗里达国际大学高级讲师,教授计算机相关的课程。著有多本编程教材,被翻译成多国语言,涵盖的主题如汇编语言、C++、Visual Basic和COBOL。