前言
随着计算资源的日益丰富和开发环境的日趋完善,直接运用汇编语言编写程序的场合越来越少,因此汇编语言课程需要新定位,汇编语言课程需要新概念。
在这样的背景下,本书设定新的目标,采用新的方法,基于新的平台,讲解IA32结构系列(80x86系列)CPU的32位编程。学习汇编语言的新目标是深入理解计算机系统的工作原理,全面提升高级语言程序设计能力,而不再是熟练运用汇编语言编写程序。汇编语言课程将起到“上承高级语言,下启机器系统”的桥梁作用。学习汇编语言的新方法是依托高级语言。在学习汇编语言之前,通常已经具备高级语言(C或者C++语言等)程序设计的基础。通过采用嵌入汇编和分析目标代码等方法,不仅可以降低学习和掌握汇编格式指令的难度,而且有助于“知其然,知其所以然”,有助于更好地掌握高级语言。实践汇编语言的新平台是虚拟机。目前虚拟机已经十分流行,它是很理想的“裸机”。基于虚拟机不仅可以突破操作系统的约束,为所欲为地操纵“机器”,从而轻松调试设备驱动程序或者系统程序,而且有助于熟悉计算机系统的启动过程,有助于明了计算机系统硬件和软件的相互关系。
本书分为4个部分,共10章。第一部分由前五章组成,利用VC 2010环境的嵌入汇编和目标代码,讲解IA32系列(80x86系列)CPU的基本功能和32位编程技术。第1章介绍基础知识; 第2章说明IA32系列CPU的基本功能; 第3章和第4章讲解利用IA32系列CPU的指令设计程序; 第5章分析VC源程序的目标代码。第二部分由第6章、第7章和第8章组成,利用汇编器NASM和虚拟机,讲解汇编语言和系统输入输出。第6章基于汇编器NASM介绍汇编语言; 第7章在介绍BIOS和主引导记录之后,说明虚拟机的原理及其使用方法; 第8章基于虚拟机讲解计算机系统底层输入输出的实现方式。第三部分是第9章,详细讲解基于IA32系列CPU的保护方式程序设计,该章内容十分丰富。第四部分是第10章,简要说明相关工具的使用,包括开源汇编器NASM、开源虚拟机VirtualBox和开源模拟器Bochs等。
本书依托高级语言,讲解低级语言; 利用虚拟平台,演示系统原理。第一部分和第二部分可作为学习汇编语言的教材,第三部分可作为学习保护方式编程技术的教材或参考书。本书还提供教学用PPT。
杨季文撰写第1~4章和第6~9章,朱晓旭撰写第5章,胡沁涵撰写第10章,赵雷参与部分工作。杨季文负责全书统稿、定稿。
本书得到了指导老师钱培德教授的大力支持,在此表示衷心感谢。本书还得到了同事
朱巧明、吕强、李云飞和李培峰
等教授的大力帮助,在此表示感谢。还要感谢同事卢维亮、查伟忠、陈宇和王莉等老师的帮助。
由于编者时间仓促和水平所限,书中难免有不妥之处,恳请读者批评指正。
作者
2017年6月