描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302472377丛书名: 面向“工程教育认证”计算机系列课程规划教材
本书可以作为大学本科计算机及相关专业汇编语言课程(含实验环节)的教材或参考书。
目录
第1章基础知识
1.1计算机语言的发展
1.1.1计算机语言概述
1.1.2学习汇编语言的必要性
1.2数制与信息编码
1.2.1数制
1.2.2数制之间的转换
1.2.3二进制数的运算
1.2.4机器数的表示方法
1.2.5十进制数的编码
1.2.6字符编码
1.3DEBUG初步
1.3.1DEBUG基础知识
1.3.2用DEBUG运行程序
1.4实验内容
习题
第2章8086微型机硬件组织
2.1微型计算机概述
2.1.1微型计算机的基本结构
2.1.2微处理器
2.28086寄存器组
2.2.1数据寄存器
2.2.2地址寄存器
2.2.3段寄存器
2.2.4控制寄存器
2.3存储器
2.3.1存储单元的地址和内容
2.3.2存储器分段
2.3.3逻辑地址与物理地址
2.3.4堆栈
2.3.5存储器访问
2.4外部设备
2.5通过DEBUG使用存储器和寄存器
2.6实验内容
习题
第3章汇编指令与寻址方式
3.1指令和指令系统
3.1.1汇编指令
3.1.2汇编指令的书写形式
3.2寻址方式
3.2.1立即寻址方式
3.2.2寄存器寻址方式
3.2.3直接寻址方式
3.2.4寄存器间接寻址方式
3.2.5寄存器相对寻址方式
3.2.6基址变址寻址方式
3.2.7相对基址变址寻址方式
3.2.8寻址方式小结
3.3实验内容
习题
第4章程序格式与数据组织
4.1程序书写格式
4.1.1完整段定义
4.1.2简化段定义
4.1.3完整段定义中的伪指令
4.1.4简化段定义中的伪指令
4.1.5段寄存器的赋值
4.1.6汇编语言程序的结束方式
4.2程序中数据的组织
4.2.1变量的定义和预置
4.2.2变量的访问
4.3汇编语言程序的上机过程
4.4实验内容
习题
第5章数据传送程序
5.1数据传送
5.1.1数据传送指令分类
5.1.2MOV指令
5.1.3堆栈操作
5.1.4交换指令
5.2换码指令
5.3其他传送指令
5.3.1地址传送指令
5.3.2标志寄存器传送指令
5.4实验内容
习题
第6章算术运算程序
6.1算术运算概述
6.2二进制数的算术运算
6.2.1加法运算
6.2.2减法运算
6.2.3乘法运算
6.2.4除法运算
6.2.5符号扩展指令
6.3十进制数的算术运算
6.3.1压缩的BCD码调整指令
6.3.2非压缩的BCD码调整指令
6.4实验内容
习题
第7章位运算程序
7.1逻辑运算指令
7.2移位指令
7.2.1非循环移位指令
7.2.2循环移位指令
7.3位运算指令应用
7.4实验内容
习题
第8章串操作
8.1串操作指令
8.1.1MOVS、LODS、STOS指令
8.1.2CMPS和SCAS指令
8.2串操作程序
8.3实验内容
习题
第9章分支程序设计
9.1控制转移指令
9.1.1无条件转移指令
9.1.2条件转移指令
9.2分支结构程序
9.2.1分支结构的概念
9.2.2双分支程序设计
9.2.3多分支程序设计
9.3实验内容
习题
第10章循环程序设计
10.1循环控制指令
10.2循环程序结构及应用举例
10.3多重循环
10.4实验内容
习题
第11章子程序
11.1子程序定义及其调用
11.2子程序设计
11.3嵌套与递归
11.4实验内容
习题
第12章中断与DOS功能调用
12.1中断
12.1.1中断及中断处理
12.1.2中断向量的设置
12.1.3DOS中断
12.2DOS功能调用
12.2.1调用方法
12.2.2常见的几种功能调用
12.2.3DOS功能调用应用举例
12.3实验内容
习题
第13章宏汇编技术
13.1宏汇编
13.1.1宏定义
13.1.2宏调用
13.1.3宏展开
13.1.4LOCAL伪操作
13.1.5宏库及其使用
13.1.6宏指令与子程序
13.2重复汇编
13.2.1重复汇编伪操作
13.2.2不定次数的重复汇编伪操作
13.2.3IRPC不定次数的重复字符伪操作
13.3条件汇编
13.4实验内容
习题
第14章综合性程序设计案例
14.1十进制数的加法程序
14.2九九乘法表输出程序
14.3代码转换程序
14.4菜单程序
14.5实验内容
习题
附录ADEBUG常用命令
附录BMasm for Windows集成实验环境
附录CASCII码表
附录DDOS系统功能调用
附录E模拟试题及参考答案
模拟试题一
模拟试题二
模拟试题三
模拟试题一参考答案
模拟试题二参考答案
模拟试题三参考答案
参考文献
前言
汇编语言作为计算机类专业的一门专业基础课,是微机原理与接口技术等课程的重要基础。通过学习汇编语言,能够加深对计算机组成原理的理解,能够感知、体会和理解机器的逻辑功能,向上为理解各种软件系统的原理打下技术理论基础;
向下为掌握硬件系统的原理打下实践应用基础。虽然高级语言和软件开发工具在计算机应用领域发展迅速,但汇编语言在底层编程中仍具有其特有的优势。因此,汇编语言仍然是计算机应用领域非常重要的专业技术基础。
虽然汇编语言对计算机硬件依赖性很强,不同的微处理器具有不同的指令系统,但其编程的基本原理相同。因此,本书采用典型的8086微处理器汇编语言编写,对于后继80×86机型及其他微处理器的汇编语言(例如: 51单片机系列汇编语言、ARM系列处理器的汇编语言等)具有借鉴和指导意义。
本书是作者在总结20多年教学经验和课程改革的基础上编写而成的,在内容编排上,不同于技术手册,而是按照教学规律精心组织教学内容,层层递进,内容全面,重点突出,知识结构层次清晰,例题与实验操作有机结合,书中所有源程序均利用“Masm for Windows集成实验环境”上机调试通过。本书并没有详尽论述所有的汇编指令和伪指令,而是有重点地选择典型的基本指令和伪指令,并将其分散到各章教学内容之中,使指令与程序设计结合在一起,使得教学内容更加实用,便于学生实际应用,有效地提高学生学习汇编语言的积极性。
根据“加强基础、培养能力、突出实践”的原则,在教学中采用多元化的授课方式。基础知识部分,以课堂教学为主,强调汇编语言的硬件基础知识和程序的基本格式。在汇编指令与寻址方式中,理论与实验相结合,利用DEBUG验证理论分析结果,使学生深刻理解指令寻址的内涵。在程序设计方法上,注重精讲设计程序的思路、采用的基本方法和技巧、使用指令的正确方法,将实践环节贯穿于整个教学过程,每章均安排了一定量的实验内容。同时,注意基本知识的融会贯通,力图建立一个完整的知识体系,避免学生割裂前后知识点间的因果关系。
全书内容共分14章。第1章介绍汇编语言必备的一些基础知识,重点是激发学生学习汇编语言的积极性,让学生在实验中感受汇编语言的特点。第2章主要介绍8086微处理器基本结构,重点是CPU寄存器和存储器结构,掌握逻辑地址、物理地址、偏移地址的概念,并进一步学习DEBUG的使用。第3章介绍8086 CPU指令系统的概况及常用的寻址方式,重点是与数据有关的寻址方式,详细的指令介绍放在了后续章节中。第4章介绍汇编语言源程序格式和数据组织以及相关的伪指令,同时讲述汇编语言的上机操作过程,这是学习汇编语言编程的基础。第5~7章主要介绍数据传送指令、算术运算指令、逻辑运算和移位操作指令及顺序结构程序设计,将指令介绍与程序设计结合在一起,可以提高学生的学习兴趣,避免教学过于枯燥。第8章介绍串操作指令及其程序设计,要求掌握串操作指令的具体格式、功能和用法,能够编写串操作处理程序。第9章介绍分支程序设计,要求重点掌握条件转移指令的功能、分支程序结构,掌握简单分支程序设计和多分支程序设计的方法。第10章介绍循环控制指令和循环程序设计,要求掌握循环程序的基本结构、程序设计及上机调试方法。第11章介绍子程序的定义及其调用,掌握子程序的设计方法及参数传送方式,重点是不同参数传递的子程序设计方法。第12章介绍中断以及常见的DOS功能调用方法。在实际教学中,视需要可以将简单的1号和2号DOS功能调用提前到前面的章节中介绍,让学生尽早体验到汇编语言的输入输出操作。第13章重点介绍宏功能的使用过程。第14章提供了几个典型的综合性程序设计案例,引导学生开展综合性汇编语言程序设计。
通常一条汇编指令对应着一条机器指令,它是计算机能够直接识别并执行的二进制代码,代表一种基本操作,例如: 加法、减法、乘法、除法等。计算机中的指令由操作码和操作数两部分组成。操作码说明计算机要执行的操作,而操作数是在指令执行过程中所需要的操作对象。操作数部分可以是操作数本身,也可以是操作数地址或是与操作数有关的其他信息。计算机所能执行的全部指令构成了计算机的指令系统。每种计算机都有各自的指令系统,80×86系列的指令系统是向上兼容的。2. 代码指令的格式当一条汇编指令译成代码指令时,由汇编指令中的操作码和操作数共同决定代码指令的格式。对8086 CPU,代码指令占1~6B不等。第一个字节固定为操作码(OPCODE),其余字节为操作数,操作数可能有0个、1个、2个或3个,操作数字节的确定与指令的寻址方式有关。代码指令的一般格式如图31所示。
操作码操作数…操作数
图31代码指令的一般格式
在汇编语言中,用助记符表示操作码,用符号或符号地址表示操作数或操作数所在的地址,与机器指令一一对应。8086 CPU的指令系统中,主要包括数据传送指令、算术指令、逻辑指令、串操作指令、控制转移指令、处理机控制与杂项操作指令。为了使学生能够循序渐进地学习汇编指令,本书把指令系统分散到后续各章介绍,使指令系统的学习与汇编语言程序设计有效地结合,避免过多地学习指令系统,令学生感到厌倦。学习指令系统时,应重点关注指令的汇编格式、指令的基本功能、指令支持的寻址方式、指令的执行对标志位的影响、指令的特殊要求等,切忌死记硬背。因此,本节不再详细介绍具体指令的使用。3.1.2汇编指令的书写形式1. 格式
[name]operationoperand[;comment]
名字项(name): 可以是标号或变量,表示本语句的符号地址。标号在代码段中定义,后跟冒号。变量在数据段或附加段中定义,后面不跟冒号。名字项组成: 以字母打头的字符串组成,包含字符(A~Z,0~9,_,?,$,@等),如MainLoop,Calc_long_sum。单独的$或“?”有特殊含义,不能做符号名。保留字不能用在名字项。操作项(operation): 可以是指令、伪指令、宏指令的助记符。操作数项(operand): 可以是一个或多个表达式组成,多个操作数之间用逗号分隔。操作数可能是一个或多个,也可能没有。表达式中涉及的操作符如下: 算术操作符: ,-,*,/,MOD; 逻辑操作符: AND,OR,XOR,NOT,SHL,SHR; 关系操作符: EQ,NE,LT,GT,LE,GE; 其他操作符: TYPE,LENGTH,SIZE,OFFSET,SEG,PTR,THIS等。注释项(comment): 可选项,用来说明程序或指令的功能。一般由分号“;”开始直至回车键结束均视为注释部分。2. 操作数的主要类型立即操作数: 也称立即数,可采用二、八、十、十六进制,后缀分别为B、Q或O、D、H,若十六进制以字母开头,必须加前导“0”。立即数是作为指令代码的一部分出现在指令中,它通常作为源操作数使用,给寄存器、地址赋初值、循环数等。寄存器操作数: 寄存器的内容参加运算或存放结果。寄存器操作数是把操作数存放在CPU中的寄存器内,即用寄存器存放源或目的操作数。在汇编指令中给出寄存器的名称。在双操作数指令中,可以做源也可以做目的操作数。存储器操作数: 指内存某地址的字节、字、双字等是指令的处理对象,这时必须把处理对象取出或送入相应地址。存储器操作数所在的存储器地址应该是物理地址,但在汇编指令中,通常只给出有效地址EA(它是以各种寻址方式给出的),而段基值(在段寄存器中)是通过隐含方式(或段超越)使用的。3. 有效地址和段超越存储单元的物理地址由两部分组成: 段寄存器保存的段基值和偏移地址。在8086的寻址方式中,存储单元所需的偏移地址,称为有效地址,用EA表示。不同的寻址方式,组成有效地址EA的各部分内容也不一样,寻址方式主要是EA如何计算与寻找的问题。一般情况下,使用寻址方式中规定的默认段寄存器来确定段的基地址。指令中的操作数若不在原默认的区段内,必须在指令中指定段寄存器,这称为段超越。一般操作数可以存放在代码段、数据段、堆栈段或附加段中,而指令必须在代码段中,堆栈也只能在堆栈段中。段地址的基本规定以及允许段超越的情况如表31所示。
评论
还没有评论。