第六章指令系统精选文档.ppt
《第六章指令系统精选文档.ppt》由会员分享,可在线阅读,更多相关《第六章指令系统精选文档.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章指令系统本讲稿第一页,共四十八页第6章 指 令 系 统 指令是使计算机完成某种操作的指示或命令,又称为机器指令。计算机完成的各种功能,就是执行各种指令的体现。所谓指令系统(Instruction Set)是指一台计算机上全部指令的集合,也称指令集。它反映了该计算机的全部功能,机器类型不同,其指令系统也不同,因而功能也不同。在计算机系统的设计过程中,指令系统的设计占有十分重要的地位,合理的指令系统能够提升计算机系统的性能。指令系统的设置和机器的硬件结构密切相关,一台机器要有较好的性能,必须设计功能齐全、通用性强、指令丰富的指令系统,这就需要复杂的硬件结构来支持。本章介绍指令的格式、指令的寻
2、址方式、指令的种类以及指令的执行方式等内容。6.1 指令的分类6.2 指令格式6.3 寻址方式6.4 指令的执行6.5 小结本讲稿第二页,共四十八页6.1指令的分类6.1.1 数据传送类指令 数据传送类指令主要包括数据传送、数据交换、压栈和退栈三种指令。这类指令主要用来实现主存和寄存器之间,或寄存器和寄存器之间的数据传送。1数据传送指令 这是一种常用指令,用以实现寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的数据传送。进行数据传送时,数据从源地址传送到目的地址,源地址中的数据保持不变,这实际上是一种数据复制。应该注意,有些计算机的数据传送指令不能实现存储单元与存储单元之间的数据传送
3、,如 Intel8086/8088的传送指令MOV。2数据交换指令 这种指令的功能是实现两个操作数之间的位置互换,包括寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的数据互换。同样应该注意的是,有些计算机的数据交换指令不能实现存储单元与存储单元之间的数据互换,如 Intel8086/8088的XCHG指令就没有这种功能。本讲稿第三页,共四十八页6.1指令的分类3压栈和退栈指令 压栈和退栈指令都是针对堆栈进行操作的指令。堆栈(Stack)是主存中专门用来存放数据的一个特定的区域,是由若干连续的存储单元组成的按照先进后出(FILO)原则存取数据的存储区。压栈指令的功能是把数据存入堆栈区,
4、而退栈指令的功能是把数据从堆栈中弹出。堆栈有两种存放数据的方向,一种是由低地址向高地址存放,另一种是由高地址向址低地址存放,通常采用后者,如图6-1所示。本讲稿第四页,共四十八页6.1指令的分类对图6-1说明如下:(1)栈底以下是非栈区,不能放入数据,栈底以上是栈区,可存放数据。(2)为了指示栈顶的位置,用一个寄存器或存储器单元来指出栈顶的地址,这个寄存器或存储器单元称为堆栈指针(Stack Pointer SP)。栈顶以上的数据为无效数据。SP的内容就是栈顶地址。用于访问堆栈的指令只有压栈和退栈两条指令,压栈指令(在Intel80868088中是PUSH)用来把指定的操作数送人堆栈的栈顶,而
5、退栈指令(Intel80868088中是POP)则用来把栈顶的数据取出。图6-2表示了压栈和退栈的过程。本讲稿第五页,共四十八页6.1指令的分类6.1.2 算术逻辑运算类指令这类指令包括算术运算指令、逻辑运算指令和移位指令。1算术运算指令 算术运算指令包括二进制定点加、减、乘、除指令,浮点加、减、乘、除指令,求反、求补指令,算术比较指令,十进制加、减运算指令等。不同档次的计算机具有不同数量的算术运算指令,一般微、小型机的硬件结构比较简单,支持的算术运算指令比较少,只设有二进制数的加、减、比较和求补等最基本的指令。高档的机器,除了这些最基本的算术运算指令外,还具有乘、除运算指令,浮点运算指令,以
6、及十进制运算指令等。浮点运算指令主要用于需要大量数值运算的科学计算中,而十进制运算指令主要用于需要大量输入输出的商业数据处理中。大型机和巨型机则还设有向量运算指令,可以直接对整个向量或矩阵进行求和、求积等运算。本讲稿第六页,共四十八页6.1指令的分类2逻辑运算指令 一般计算机都具有与、或、非、异或和测试等逻辑运算指令。有些计算机还具有位测试、位清除、位求反等位操作指令。这些指令主要用于无符号数的位操作、代码的转换、判断及运算。3移位指令 移位指令用来对寄存器的内容实现左移、右移或循环移位的功能,可分为算术移位、逻辑移位和循环移位三种指令,一般计算机都具有这三种指令。图6-3显示了这三种移位指令
7、的操作过程。本讲稿第七页,共四十八页6.1指令的分类图6-3 移位指令操作过程本讲稿第八页,共四十八页6.1指令的分类6.1.3字符串处理指令 字符串处理指令对于非数值数据的处理非常重要,由于现在数据处理已是计算机的主要应用领域,因此无论是巨型机、大中型机,还是微、小型机,都设有字符串处理指令。这类指令包括字符串传送、字符串转换、字符串比较、字符串查找、字符串匹配、字符串抽取和替换等指令。这类指令可以在文字编辑中对大量字符串进行处理。例如,Intel80868088中的字符串比较指令:REPZ CMPSB 这是一条无操作数的隐含指令,其含义是对两个字符串逐个进行比较,这两个字符串的首地址分别隐
8、含在源变址寄存器SI和目的变址寄存器DI中,字符串的长度隐含在CX寄存器中。从首地址开始,一个字节一个字节地进行比较,每比较一次,SI和DI的内容自动加1,直至发现两个字符串中有不同的字节或直到比较结束。然后,根据最后一次比较结果设置状态位。本讲稿第九页,共四十八页6.1指令的分类6.1.4输入输出指令 在计算机系统中,输入输出是相对于主机或者CPU而言的。数据从输入设备传送到主机或CPU,称为输入;而数据从主机或CPU传送到输出设备则称为输出。输入输出指令主要用来启动外围设备,检查测试外设的工作状态,完成主机或CPU与输入输出设备之间的数据传送。这类指令对各种类型的计算机都是很重要的。有些计
9、算机,例如 DEC公司的 PDPll,是把外设与存储器统一编址,把外设看成是一个存储单元,这类计算机没有输入输出指令,其输入输出功能由访问存储器的指令来实现。本讲稿第十页,共四十八页6.1指令的分类6.1.5 特权指令和陷阱指令1特权指令 所谓特权指令是指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。通常在单用户、单任务的计算机系统中是不需要特权指令的,而多用户、多任务的计算机系统在进行系统资源分配与管理上是离不开特权指令的。这类指令的功能包括:改变系统的工作方式,检测用户的访问权限,修改虚拟存储器管理的段表、页表,完成任务的创建和切换等。2陷阱指令 陷阱
10、指令并非设置陷阱的指令,而是处理陷阶的指令。陷阶是指计算机系统在运行中的一种意外事故,诸如电源电压不稳、存储器校验出错、输入输出设备出现故障、用户使用了未定义的指令或特权指令等等意外情况,使得计算机系统不能正常工作。一旦出现陷阶,计算机应当能暂停当前程序的执行,及时转入故障处理程序进行相应的处理。本讲稿第十一页,共四十八页6.1指令的分类6.1.6 转移指令 转移指令是改变程序执行顺序的指令。一般情况下,CPU是按编程顺序执行指令的,但有时要根据所处理的结果进行判断,再根据判断的结果来确定程序的执行,这时就要使用转移指令,以实现程序的分支。转移指令分为无条件转移和条件转移两类指令。无条件转移指
11、令不受任何条件的约束,直接控制CPU转移到指定的地点去执行;有条件转移指令则先测试某些条件,条件满足就转移,否则不转移。条件转移指令判断条件是利用CPU中的状态寄存器(又称条件码寄存器),这个状态寄存器中有某些标志位,主要有:进位标志(C)、结果为零标志(Z)、结果为负标志(N)、结果溢出标志(V)、奇偶标志(P)。根据转移条件的不同,转移指令可分为若干种,如表6-1所示。本讲稿第十二页,共四十八页6.1指令的分类表6-1 条件转移指令一览表指令条件说明有进位转移C无符号数比较时小于,C标志位为1则转移无进位转移C无符号数比较时大于或等于,C标志位为0则转移零转移Z运算结果为零,Z标志位为1时
12、转移非零转移Z运算结果不为零,Z标志位为0时转移负转移N运算结果为负,N标志位为1时转移正转移N运算结果不为负,N标志位为0时转移溢出转移V运算结果发生溢出,V标志位为1时转移非溢出转移V运算结果不发生溢出,V标志位为0时转移奇转移P运算结果有奇数个1,P标志位为1时转移偶转移P运算结果有偶数个1,P标志位为0时转移无符号小于等于转移C+Z无符号数比较时小于或等于,C标志位或Z标志位为1则转移无符号大于转移C+Z无符号数比较时大于,C标志位和Z标志位为0则转移有符号小于转移NV有符号数比较时小于,NV标志位不为0则转移有符号大于或等于转移NV有符号数比较时大于或等于,NV标志位为0则转移有符号
13、小于或等于转移(NV)+Z有符号数比较时小于或等于,NV标志位不为0或Z标志位为1则转移有符号大于转移(NV)+Z有符号数比较时大于,NV标志位和Z标志位为0则转移本讲稿第十三页,共四十八页6.1指令的分类6.1.7 子程序调用指令 子程序调用指令包括转子指令和返主指令。在进行程序设计时,一般都把常用的程序段编写成独立的子程序或过程,在需要时随时调用。调用子程序需要用到转子指令。子程序执行完毕,就需要使用返主指令返回到主程序。转子指令的格式为:执行转子指令时,通常采用堆栈来保存返回地址,即把下条指令的地址压入堆栈中保存,然后才转入所调用的子程序中执行,子程序执行完毕,由返主指令把压入堆栈的返回
14、地址从堆栈中弹出,返回调用程序。子程序调用和返回的过程如图 6-4所示。操作码目的地址本讲稿第十四页,共四十八页6.1指令的分类 子程序调用指令和转移指令都是改变程序的执行顺序的,但两者有本质的区别,主要区别是:目的地址不同。子程序调用指令的目的地址是子程序的首地址,而转移指令的目的地址是在本程序内。用途不同。子程序调用指令用于实现程序与程序之间的转移,而转移指令一般只用于实现同一程序内的转移。此外,子程序调用指令还可以进行嵌套调用,即可调用别的子程序,还可以实现递归调用,即直接或间接自己调用自己。而转移指令不能做到这些。6.1.8处理器控制指令处理器控制指令是直接控制CPU实现某种功能的指令
15、。包括状态标志位的操作指令、停机指令、等待指令、空操作指令、封锁总线指令等。本讲稿第十五页,共四十八页6.2 指令格式 指令格式是指一条指令由什么样的代码组成,应该包含哪些内容。计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。从便于程序设计、增加基本操作并行性、提高指令功能的角度来看,指令中应包含多种信息。但在有些指令中,由于部分信息可能无用,这将浪费指令所占的存储空间,并增加了访存次数,也许反而会影响速度。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含操作码和地址码两部分内容,其中操作码规定了操作的类型,地址码规定了要操作的数据所存放的地址,以及操作
16、结果的存放地址,如下所示。6.2.1 指令信息1指令字长度 指令字长度是指一条指令字中包含的二进制代码的位数,它等于操作码长度加上地址码长度。机器字长是指计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。指令字长度与机器字长没有固定的关系,二者可以相等,也可以不等。通常指令字长度等于机器字长度的指令,称为单字长指令;指令字长度等于半个机器字长度的指令,称为半字长指令;指令字长度等于两个机器字长度的指令,称为双字长指令;指令字长度大于两个机器字长度的指令,称为多字长指令。操作码地址码本讲稿第十六页,共四十八页6.2 指令格式2操作码 操作码具体规定了操作的性质及功能,指定了相应的硬件
17、要完成的操作。指令不同,操作码的编码也不同。操作码要占用一定的指令字长,其位数取决于指令系统的规模。指令操作码的长度确定了指令系统中完成不同操作的指令条数,操作码位数越多,所能表示的操作种类就越多。若某机器的操作码长度为n位,则它最多只能编制2n条不同的指令。指令操作码通常有两种编码格式:固定格式和可变格式。(1)固定格式 操作码的长度是固定的,且集中放在指令字的某一个字段中。这种格式的优点是简化硬件设计,减少指令的译码时间。缺点是操作码的平均长度长,需要指令字长较大。一般在字长较长的大中型机以及超级小型机上使用。(2)可变格式 操作码的长度可变,且分散地放在指令字的不同字段中。这种格式的优点
18、是可压缩操作码的平均长度。缺点是控制器的设计相对较为复杂,指令的译码时间也较长。一般在字长较短的微小型机上广为采用。本讲稿第十七页,共四十八页6.2 指令格式 如某机器的指令长度为16位,以4位为1个字段,分成4个字段,一个4位的操作码字段,3个4位的地址码字段,其指令格式为:其中4位基本操作码可有16种编码,可以表示16条三地址指令。假如,我们用可变格式编码,要表示15条三地址指令,15条二地址指令,15条一地址指令和16条零地址指令,共表示61条指令,则可以进行如下安排:l)三地址指令 15条:其操作码由 4位基本操作码的 00001110给出,剩下的一个编码1111用于把操作码扩展到A1
19、字段。2)二地址指令15条:操作码扩展到A1字段,则操作码有8位,可从1111000011111111,用1111000011111110作为15条二地址指令的操作码,剩下的一个编码11111111用于把操作码扩展到A2字段。3)一地址指令15条:操作码扩展到A2字段,则操作码有12位,可从111111110000 111111111111,用11111110000 111111111110 作为15条一地址指令的操作码,剩下的一个编码111111111111用于把操作码扩展到A3字段。4)零地址指令16条:操作码扩展到整个指令字,则操作码有16位,可从11111111111000011111
20、11111111111。本讲稿第十八页,共四十八页6.2 指令格式3地址码 地址码用来指明指令操作的对象在什么位置,一般可以包含以下内容:(1)操作数地址:明确指出要操作的操作数存放在哪里,以便CPU可以通过这个地址取得操作数。操作数地址可以有两个,即可以有两个操作数,其地址分别用A1和A2来表示。(2)操作结果的存放地址:指明对操作数的处理结果的存储地址,用A3表示。(3)下一条要执行的指令的地址:用A4表示。在一般情况下,程序是顺序执行的,下一条要执行的指令的地址就由程序计数器(Program Counter,PC)给出,当遇到转移指令及调用子程序等程序转移时,下一条要执行的指令的地址应该
21、由指令指明。并不是所有指令都必须包含地址码,如果地址码信息在指令中显式地给出,则称为显地址指令,反之称为隐地址指令。本讲稿第十九页,共四十八页6.2 指令格式指令格式 指令中所包含的地址码信息并不总是相同的,根据地址码所给出的地址的个数,可以把指令格式分成零地址指令、一地址指令、二地址指令、三地址指令和多地址指令。1零地址指令 零地址指令只有操作码而无操作数,通常也叫无操作数指令。其格式为:其中,OPCode表示操作码。只有操作码的指令可能有两种情况:(1)不需要操作数的控制类指令,如空操作指令、停机指令、等待指令等。(2)隐含操作数的指令,如堆栈结构计算机的运算指令,其所需的操作数是隐含在堆
22、栈中的,由堆栈指针SP指出,操作结果仍然放回堆栈中。又如 Intel8086/8088中的字符串处理指令,源操作数和目的操作数分别隐含在源变址寄存器SI和目的变址寄存器DI所指定的存储单元中。OP Code本讲稿第二十页,共四十八页6.2 指令格式2一地址指令一地址指令只包含一个操作数的地址,通常也叫单操作数指令,其指令格式为:其中,OP Code表示操作码,A表示操作数的存储器地址或寄存器名。一地址指令也有两种情况:(1)这个地址既是操作数的地址,又是操作结果的地址。如加1指令、减1指令、移位指令等均可采用这种格式。这类指令的操作原理是对地址码中所指定的操作数进行操作后,把操作结果又送回该地
23、址中。(2)地址码所指定的操作数是源操作数,而目的操作数则隐含在累加器中,操作结果也存回累加器。如以Z-80、Intel8086/8088等微处理器为核心的8位、16位微型计算机的算术逻辑运算指令大都采用这种格式。OP CodeA本讲稿第二十一页,共四十八页6.2 指令格式3二地址指令 二地址指令一般是运算类指令,又称双操作数指令。指令中显式地给出参加运算的两个操作数地址,其格式为:其中,OP Code表示操作码,A1表示源操作数的存储器地址或寄存器名,A2表示目的操作数的存储器地址或寄存器名。这类指令是最常用的指令格式。操作后,其操作结果存放在A2所指定的地址中。OP CodeA1A2本讲稿
24、第二十二页,共四十八页6.2 指令格式4三地址指令 三地址指令中包含三个操作数地址,其中前两个为源操作数地址,第三个为目的操作数地址,其指令格式为:其中,OP Code表示操作码,A1表示第一个操作数的存储器地址或寄存器名,A2表示第二个操作数的存储器地址或寄存器名,A3表示操作结果的存储地址。操作后A1、A2中的操作数均保持原来的数据,操作结果存放在A3所指定的地址中。由于多了一个地址,造成指令码较长,既耗费存储空间,又增加取指令时间,因此这类指令一般应用于运算能力较强、内存空间较大的大、中型机中。OP CodeA1A2A3本讲稿第二十三页,共四十八页6.2 指令格式5多地址指令 这类指令有
25、三个以上操作数地址,指令码长,在某些性能较好的大、中型机以及高档小型机中采用。如字符串处理指令、向量、矩阵运算指令等。应该说明的是,以上所述5种指令格式,并非所有的计算机都具有的,一般来说,零地址指令、一地址指令和二地址指令的指令码较短,具有所需存储空间少,执行速度快,硬件实现简单等优点,为结构简单的微、小型机所采用;在字长较长、功能较强的大、中型机中除采用零地址指令、一地址指令和二地址指令外,也使用三地址指令和多地址指令,如 CDCSTAR100机的矩阵运算指令就有7个地址字段。本讲稿第二十四页,共四十八页6.3 寻址方式 所谓寻址就是寻找操作数或信息的地址,寻址技术就是指令按什么方式寻找到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 指令系统 精选 文档
限制150内