《汇编语言程序设计/21世纪高等学校规划教材·计算机科学与技术》通过大量例子详细生动地介绍了16位汇编语言的基本知识、程序结构及上机操作和调试步骤。在介绍程序结构时,融合了基本语句语法知识的介绍及相关指令的分析。
《汇编语言程序设计/21世纪高等学校规划教材·计算机科学与技术》共7章,分别介绍汇编语言程序的结构形式、常用的各种伪指令和上机操作步骤、与汇编语言程序相关的硬件知识、汇编语言程序中用到的各种指令、程序的结构、子程序结构和参数的传递方法、宏汇编的知识等。
《汇编语言程序设计/21世纪高等学校规划教材·计算机科学与技术》可作为高等院校计算机、软件工程专业及信息安全专业本科生、研究生的教材,也可为广大汇编爱好者及广大科技工作者和研究人员提供参考。
随着现代软件系统越来越庞大复杂,大量经过了封装的高级语言也应运而生。这些高级语言使软件开发人员在开发过程中能够快速、高效地进行编码,从而能够从复杂的编码中解放出来,而专注于程序逻辑的实现。汇编语言是面向机器指令的低级语言,由于其复杂性使得其适用领域逐步减小。那么是不是汇编语言已经无用武之地了呢?是不是我们就不需要学习这门语言了呢?答案是否定的。由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他语言相比具有更高的运行速度,占用更小的内存空间,因此在一些对于时效性和执行效率要求很高的程序,以及许多大型程序的核心模块,尤其是工业控制中对硬件操作的底层代码,都还要求助于汇编语言。另外,由于高级语言最终都要翻译为机器语言才能被处理器执行,而汇编语言非常接近于机器语言,通过学习汇编语言,软件开发人员可以更清楚地理解能够被处理器执行的机器指令,这对于透彻掌握一门高级语言的底层逻辑也有很大的帮助。所以,各高等院校的计算机科学类专业仍把汇编语言作为学生的必修课,以让学生深入了解计算机的运行原理,为深入理解高级语言的编程打下坚实的基础。
汇编语言作为最接近硬件的计算机编程语言,它既有对硬件直接编程的便利,又有接近于人类自然语言的指令,所以学习汇编语言需要一定的硬件基础知识,严密的思维逻辑和良好的编程习惯。学习汇编语言的难点,在于很多指令的执行需要事先设置默认的寄存器参数。在学习时,要注重各种指令的执行要求,明确默认的参数设置,正确使用各条指令。
本书是编者经过多年的教学总结,把汇编语言的基础教学内容基于学生能快速掌握的原则进行了合理编排整理而成的。王勇编写第1章,徐建平编写第2和第7章,刘辉编写第3~第6章,全书由王勇负责审阅。在讲课安排上,可以把第3章的内容分散到第4~第6章中,结合例题讲解; 上机实验操作,可以根据讲课内容安排相应的编程操作,刚开始时可以让学生调试书上的例题,让学生掌握上机操作的步骤; 基本步骤熟练后让学生自己编程,具体题目可以参照每章的上机实验题目。
本书的配套资源有课程课件、习题答案和例题的源程序。例题源程序的编号,以ex开头,如例4.1的源程序为ex401.asm; 习题中的编程题目的源程序,以test开头,如习题5.3,源程序为test53.asm; 源程序和上机操作使用的编译软件在sourceasm文件夹中。使用中有任何建议和疑问,可与编者联系。
第1章 汇编语言程序基本知识
1.1 汇编语言程序的结构形式
1.2 汇编语言的各种伪指令
1.2.1 数据定义伪指令
1.2.2 符号定义伪指令
1.2.3 段定义伪指令
1.2.4 地址计数器与对准伪操作
1.2.5 操作数伪操作
1.2.6 过程定义伪指令
1.2.7 模块定义与连接伪指令
1.2.8 处理器选择伪指令
1.3 MASM的上机操作步骤
1.3.1 上机操作步骤
1.3.2 常用的调试命令及功能
1.4 Windows环境下MASM32的上机步骤
上机实验1:Debug命令实验
习题1
第2章 汇编语言中的硬件知识
2.1 寄存器
2.1.1 通用寄存器组
2.1.2 段寄存器
2.1.3 标志和状态寄存器
2.2 存储单元
2.2.1 存储单元的地址
2.2.2 物理地址和逻辑地址的关系
2.2.3 存储单元的定义和使用
习题2
第3章 80x86指令系统
3.1 指令格式
3.2 寻址方式
3.2.1 立即寻址方式
3.2.2 寄存器寻址方式
3.2.3 直接寻址方式
3.2.4 寄存器间接寻址方式
3.2.5 寄存器相对寻址方式
3.2.6 基址加变址寻址方式
3.2.7 相对基址加变址寻址方式
3.3 数据传送指令
3.3.1 通用数据传送指令
3.3.2 堆栈操作指令
3.3.3 地址传送指令
3.3.4 标志寄存器传送指令
3.3.5 查表指令
3.3.6 类型转换指令
3.4 算术运算指令
3.4.1 加法指令
3.4.2 减法指令
3.4.3 加1减1指令
3.4.4 比较指令
3.4.5 交换相加指令
3.4.6 求补指令
3.4.7 乘法指令
3.4.8 除法指令
3.4.9 BCD算术运算
3.4.1 0ASCII算术运算
3.5 控制转移类指令
3.5.1 转移指令
3.5.2 循环控制指令
3.6 串操作指令
3.6.1 重复前缀指令
3.6.2 方向标志指令
3.6.3 串传送指令
3.6.4 串比较指令
3.6.5 串扫描指令
3.6.6 串装入指令
3.6.7 串存储指令
3.7 逻辑运算指令
3.7.1 逻辑指令
3.7.2 移位指令
3.7.3 位操作指令
3.8 输入输出指令
3.8.1 IN输入指令
3.8.2 OUT输出指令
3.8.3 串输入指令
3.8.4 串输出指令
3.9 处理器控制
3.9.1 总线封锁前缀
3.9.2 空操作
3.9.3 处理器等待指令
3.9.4 处理器暂停指令
3.10 新增指令
3.10.1 80286新增指令
3.10.2 80386新增指令
3.10.3 80486新增指令
3.10.4 增强功能的指令
上机实验2:算术运算符的使用
习题3
第4章 分支程序设计
4.1 简单分支程序
4.2 多重分支程序
4.2.1 使用多个跳转语句实现多分支结构
4.2.2 利用跳跃表实现多路分支
上机实验3:分支程序设计
习题4
第5章 循环程序设计
5.1 简单循环程序
5.2 多重循环程序
上机实验4:循环程序设计
习题5
第6章 子程序设计
6.1 子程序的定义
6.2 子程序的调用和返回指令
6.2.1 调用指令
6.2.2 返回指令
6.3 子程序的参数传递
6.3.1 寄存器传递参数
6.3.2 约定存储单元传递参数
6.3.3 堆栈传递参数
6.3.4 地址表传递参数
6.4 子程序举例
上机实验5:子程序设计
习题6
第7章 宏汇编
7.1 宏汇编
7.1.1 宏汇编定义
7.1.2 带参数的宏定义
7.1.3 声明宏体内局部标号的伪指令(LOCAL)
7.1.4 宏指令与子程序的区别
7.2 条件汇编
7.2.1 条件汇编定义
7.2.2 条件汇编伪指令的举例
上机实验6:高级子程序与宏的设计
习题7
附录A ASCII码
附录B Debug命令
附录C 80x86汇编指令
附录D DOS系统功能调用(INT21H)
参考文献