本书以Microsoft宏汇编MASM 6.1x为背景,系统讲述了8086指令系统及汇编语言程序设计的基本方法和技术,介绍了32位x86指令及其程序设计,并以Microsoft Visual C++6.0为背景,介绍了Windows 9x/2000等32位环境下C/C++语言与汇编语言的混合编程。全书共分9章,主要内容包括:汇编语言程序设计的基础知识、8086指令系统、源程序的基本框架、程序设计的基本技术、宏指令、多模块程序设计、输入输出和中断程序设计、32位x86指令及其程序设计等。其中,第1章至第8章可供学习8086汇编语言的读者使用。对于熟悉8086汇编语言的读者,也可从第9章得到32位x86指令及其程序设计的有关知识。书中提供了大量的程序实例,所有实例都经过上机验证。每章后均附有习题。\r\n 本书不仅可作为高等院校计算机及相关专业的学生学习8086汇编语言的教材或参考书,也可供学习32位x86汇编语言的读者使用。
出版说明\r\n前言\r\n\r\n第1章 基础知识\r\n\r\n1.1 数制及其转换\r\n1.1.1 数制\r\n1.1.2 数制之间的转换\r\n1.1.3 二进制与十六进制的运算规则\r\n1.2 程序设计语言\r\n1.2.1 机器语言\r\n1.2.2 汇编语言\r\n1.2.3 高级语言\r\n1.2.4 学习汇编语言的意义\r\n1.3 数据表示\r\n1.3.1 数据组织\r\n1.3.2 无符号数与带符号数\r\n1.3.3 字符的ASCII码表示\r\n1.3.4 BCD码\r\n1.3.5 从不同角度看待一个二进制数\r\n1.4 基本逻辑操作\r\n1.5 习题\r\n\r\n第2章 8086计算机的基本结构与寻址方式\r\n\r\n2.1 8086计算机的基本结构\r\n2.1.1 CPU\r\n2.1.2 内存\r\n2.1.3 I/O子系统\r\n2.1.4 系统总线\r\n2.2 8086的寄存器组与内存管理\r\n2.2.1 8086 CPU的寄存器组\r\n2.2.2 8076的物理内存组织\r\n2.2.3 内存的分段管理\r\n2.3 标志位\r\n2.3.1 状态标志\r\n2.3.2 控制标志\r\n2.4 8086寻址方式\r\n2.4.1 立即寻址\r\n2.4.2 寄存器寻址\r\n2.4.3 内存寻址\r\n2.4.4 段超越\r\n2.5 习题\r\n\r\n第3章 8086指令系统\r\n\r\n3.1 指令系统\r\n3.1.1 数据传送指令\r\n3.1.2 算术指令\r\n3.1.3 位操作指令\r\n3.1.4 控制转移指令\r\n3.1.5 标志处理指令\r\n3.1.6 串操作指令\r\n3.1.7 处理器控制指令\r\n3.2 容易犯的错误\r\n3.3 实例\r\n3.4 习题\r\n\r\n第4章 汇编语言程序格式\r\n\r\n4.1 变量、标号与表达式\r\n4.1.1 数值表达式\r\n4.1.2 变量与标号\r\n4.1.3 地址表达式\r\n4.1.4 地址计数器\r\n4.2 基本伪指令\r\n4.2.1 段定义伪指令\r\n4.2.2 符号定义伪指令\r\n4.2.3 变量定义伪指令\r\n4.2.4 LABEL\r\n4.2.5 ASSUME\r\n4.2.6 源程序结束伪指令\r\n4.2.7 ORG\r\n4.2.8 对齐伪指令\r\n4.3 语句格式\r\n4.4 操作符\r\n4.5 源程序的基本框架\r\n4.6 汇编语言程序的开发\r\n4.6.1 开发步骤\r\n4.6.2 汇编与连接\r\n4.6.3 调试器圆DEBUG\r\n4.7 结构\r\n4.7.1 结构类型的定义\r\n4.7.2 结构变量的定义\r\n4.7.3 结构变量及其字段的访问\r\n4.8 习题\r\n\r\n第5章 基本控制结构\r\n\r\n5.1 顺序结构\r\n5.2 字符与字符串的输入/输出\r\n5.3 分支结构\r\n5.3.1 对标号的进一步说明\r\n5.3.2 无符号数以及带符号数的比较\r\n5.3.3 实现无条件转移的多种方法\r\n5.3.4 双分支结构\r\n5.3.5 多分支结构\r\n5.4 循环结构\r\n5.4.1 循环结构的基本形式\r\n5.4.2 循环程序的控制方法\r\n5.5 数据串处理\r\n5.5.1 串操作指令的用途\r\n5.5.2 字符串处理\r\n5.6 习题\r\n\r\n第6章 过程\r\n\r\n6.1 过程的定义、调用与返回\r\n6.1.1 过程定义\r\n6.1.2 过程调用与返回\r\n6.1.3 实现过程调用的多种方法\r\n6.2 过程的参数传递\r\n6.2.1 用变量传递参数\r\n6.2.2 用寄存器传递参数\r\n6.2.3 用地址表传递参数\r\n6.2.4 用堆栈传递参数\r\n6.3 递归过程\r\n6.4 习题\r\n\r\n第7章 宏与多模块程序设计\r\n\r\n7.1 宏指令\r\n7.1.1 宏定义、宏调用与宏展开\r\n7.1.2 与宏有关的伪指令\r\n7.1.3 宏操作符\r\n7.1.4 宏指令与过程的区别\r\n7.2 重复块\r\n7.2.1 REPEAT\r\n7.2.2 FOR\r\n7.2.3 FORC\r\n7.3 条件汇编\r\n7.4 多模块程序设计\r\n7.4.1 源文件的包含\r\n7.4.2 目标文件的连接\r\n7.4.3 模块间的组合\r\n7.4.4 模块间的通信\r\n7.5 习题\r\n\r\n第8章 输入/输出与中断\r\n\r\n8.1 输入/输出\r\n8.1.1 输入/输出原理\r\n8.1.2 输入/输出指令\r\n8.2 中断\r\n8.2.1 中断的基本概念\r\n8.2.2 中断指令\r\n8.2.3 中断分类\r\n8.3 DOS与BIOS服务\r\n8.3.1 DOS系统调用\r\n8.3.2 BIOS服务\r\n8.4 DOS环境下的可执行程序\r\n8.4.1 程序段前缀PSP\r\n8.4.2 .EXE文件与.COM文件\r\n8.4.3 程序退出的另一种方法\r\n8.5 中断服务程序设计\r\n8.5.1 中断服务程序设计的基本方法\r\n8.5.2 键盘程序设计\r\n8.6 习题\r\n\r\n第9章 32位x86指令及其程序设计\r\n\r\n9.1 32位x86 CPU的寄存器组\r\n9.2 32位x86 CPU的工作模式\r\n9.3 32位扩展寻址方式\r\n9.4 32位扩展指令\r\n9.4.1 数据传送指令\r\n9.4.2 算术指令\r\n9.4.3 位操作指令\r\n9.4.4 控制转移指令\r\n9.4.5 串操作指令\r\n9.4.6 32位保护模式下指令的功能\r\n9.5 32位指令的程序设计\r\n9.5.1 程序格式\r\n9.5.2 调试器Code View\r\n9.5.3 程序实例\r\n9.6 汇编语言与C/C++语言的混合编程\r\n9.6.1 嵌入汇编语言\r\n9.6.2 C/C++程序调用汇编语言过程\r\n9.7 习题\r\n\r\n附录\r\n\r\n附录A 标淮ASCII码字符集\r\n附录B 8086指令系统\r\n附录C 32位x86指令系统\r\n附录D Windows 104键键盘扫描码\r\n\r\n参考文献
随着计算机技术的发展和各种软件开发平台的不断涌现,目前完全用汇编语言实现的软件系统已极为罕见,汇编语言也难以胜任大型软件系统的开发。然而,作为一种最能充分发挥计算机硬件特性的程序设计语言,汇编语言可以实现高级语言难以胜任甚至无法完成的任务,尤其适合对时空效率要求较高、与机器硬件密切相关的软件,例如,操作系统的部分核心代码,要求能快速响应的实时系统等。
“汇编语言程序设计”作为高等院校计算机及相关专业本科生的技术基础课,是学习操作系统与编译原理等课程的基础。同时,掌握汇编语言知识,对于提高程序设计水平、加深对计算机系统的理解也是非常重要的。
考虑到读者学习8086汇编语言的需要,而8086指令系统又是整个x86指令系统的基础,为此,本书首先以8086指令系统为背景,基于Microsoft宏汇编MASM 6.1x,系统讲述了汇编语言程序设计的基本方法和技术,最后介绍了32位x86指令及其程序设计。
全书共分9章。第1章介绍了学习汇编语言所需的基础知识;第2章介绍了8086计算机的基本结构与寻址方式;第3章详细介绍了8086指令系统,并给出了大量的指令使用实例;第4章介绍了MASM汇编语言源程序的基本框架以及程序开发过程;第5章结合具体实例,讲述了用三种基本控制结构(顺序结构、分支结构与循环结构)设计汇编语言程序的基本方法;第6章讨论了过程及其参数传递方法;第7章简要介绍了宏与多模块程序设计;第8章讲述了输入/输出与中断程序设计的基本方法;第9章介绍了32位x86指令系统及其程序设计,并以Microsoft Visual C++6.0为背景,讲述了Windows 9x/2000等32位环境下C/C++语言与汇编语言混合编程的基本方法。
本书注重实用性,力求做到通俗易懂。书中含有大量的程序实例,所有实例都经过上机验证,许多实例都给出了多种解决方法。每章后均有习题,以便读者复习和检查学习效果。
通过本书的第1—8章,读者可以系统学习8086汇编语言程序设计的基本技术。这一部分内容自成体系,无需其他先修知识。如果读者具备高级语言(如Pascal、C等)程序设计的基础,将有助于对部分内容的深入理解。对32位x86指令系统及其程序设计感兴趣的读者,可从第9章学到有关知识。因此,本书不仅可作为学习8086汇编语言的的教材或参考书,也可供学习32位x86汇编语言的读者使用。
欢迎读者对书中的错误与不妥之处提出批评并给予指正。
编者