资讯详情

【计组】指令系统

指令系统的发展和性能要求

指令系统的发展

计算机程序由一系列指令组成,指令是。 从计算机组成的层次结构来看,计算机指令有之分。 :属于微程序级命令,属于:由多个机器指令组成的软件指令属于:在微指令和宏指令之间,每个指令间完成独立的算术或逻辑操作。

。 它表示计算机其重要因素不仅直接影响机器的硬件结构,还影响系统软件和机器的应用范围。

指令系统的性能

指令系统的性能决定了计算机的基本功能,其设计直接关系到计算机的硬件结构和用户的需求。 完善的指令系统应满足以下四个要求: 完备性 有效性 规整性 兼容性

在用汇编语言编写各种程序时,指令系统直接提供足够的指令,而无需完整性要求指令系统丰富、功能齐全、使用方便。

指令系统编写的程序可以高效运行。高效率主要体现在存储空间小、执行速度快的程序上。一般来说,功能更强、更完善的指令系统必须有更好的有效性。

规整性

包括指令系统的对称性、均匀性、指令格式和数据格式的一致性。 对称性是指指指指令系统中的所有寄存器和存储单元都可以同等对待,所有指令都可以使用各种搜索方法; 均匀性是指可以支持各种数据类型的操作指令; 指令格式与数据格式的一致性是指指指指令长度与数据长度有一定的关系,便于处理和访问

兼容性

该系列具有相同的基本结构和共同的基本指令集,因此指令系统是兼容的,即基本软件可以通用。

计算机语言与硬件结构的关系

计算机语言可分为高级语言和低级语言。 高级语言如C,FORTRAN其语句和用法与具体机器的指令系统无关。 低级语言分为机器语言(二进制语言)和汇编语言(符号语言),都是面向机器的语言,与具体机器的指令系统密切相关。 机器语言用指令代码编写程序, 符号语言用指令助记符编写程序。 高级语言和低级语言 唯一能直接识别和执行计算机的语言是一种由一系列指令组成的机器语言,由二进制码表示。 但人们使用符号语言或高级语言来编写程序。因此,符号语言或高级语言必须通过汇编程序或编译程序翻译成由二进制码组成的机器语言。 汇编语言依赖于计算机的硬件结构和指令系统。不同的机器有不同的指令,因此汇编语言编写的程序不能在其他类型的机器上运行。 高级语言与计算机的硬件结构和指令系统无关,在编写程序方面优于汇编语言。 一些高级语言提供了与汇编语言的调用接口。汇编语言编写的程序可以作为高级语言的外部过程或函数,并使用堆栈传输参数或参数的地址。

指令格式

指示操作码和地址码

指令字(简称指令)即。 指令格式是指令字用二进制代码表示的结构形式,由操作码字段和地址码字段组成。 操作码字段:表示指令 地址码字段:通常指定

指令格式如下: 在这里插入图片描述 不同的指令用操作代码字段的不同代码表示,每个代码代表一个指令。

1.操作码

操作码字段的位数一般取决于计算机。 例如,如果一个指令系统只有8个指令,那么3个操作代码就足够了。 对于机器的指令系统,操作代码字段和地址代码字段的长度通常是固定的。 目前,在小型和微型计算机中,由于指令字短,为了充分利用指令字长度,指令字操作代码字段和地址代码字段不固定,即不同类型的指令有不同的划分,尽可能短的指令字长表示越来越多的操作类型,并在越来越大的存储空间中找到地址。

2.地址码

根据一个指令,该指令可称为几个操作数指令或几个地址指令。 一般操作数包括三个数:操作数、操作数和操作结果,从而形成三个地址指令格式。后来发展成两个地址格式、一个地址格式和零地址格式。 各种地址指令格式: OPCODE——操作码, A1-表示第一操作数地址; A2-表示第二操作数地址; A3 ——表示操作结果存储地址; A4-下一个地址将执行指令。 (A1) OP (A2)→A3 A4=下一个地址将执行指令 OPCODE——操作码, A1-第一个源操作数存储器地址或寄存器地址, A2-第二个源操作数存储器地址或寄存器地址, A3-操作结果的存储地址或寄存地址。

其数学形式描述如下:(A1) OP (A2)→A3 (PC) 1→PC(隐含) 使用程序计数器(Program Counter,PC)存储指令地址 OPCODE——操作码, A1-第一个源操作数存储器地址或寄存器地址, A2-第二个源操作数和存储操作结果的存储地址或寄存地址。 其数学形式描述为: (A1) OP (A2)→A1 或者 (A1) OP (A2)→A2 OPCODE——操作码, A——操作数的存储地址或寄存地址。 其数学形式描述如下: OP (A)→A 或者 (AC) OP (A)→AC (AC)表示累加寄存器AC中的数

OPCODE——操作码。 不涉及操作数:如NOP、HLT指令; 隐含操作数:如PUSH、POP指令 在性能较好的大中型计算机甚至高端小型计算机中,通常设置一些功能强大的指令来处理批数据,如字符串处理指令、向量、矩阵操作等指令。为了描述一批数据,指令通常需要使用多个地址来指出数据存储的第一个地址、长度和下标。

从存储操作数指令格式主要有三种类型:

第一种为。 第三种为**存储器-存储器(RS)**类型指令,在执行此类指令时,不仅要访问内存单元,还要访问寄存器。 目前,在计算机系统结构中,指令字的长度和指令中的地址结构通常不单一,通常采用多种格式混合,可以增强指令的功能。

指令长度和扩展方法

指令字长度:指令字包含。 机器字长:计算机可直接处理的二进制数据的位数决定了计算机 使用多字长指令的目的是。 其主要缺点是需要两次或多次访问内存才能取出整个指令,,又。 等长指令字结构:各指令字长度相等。指令字结构简单,长度不变。 变长指令字结构:各种指令字的长度因指令功能而异。结构灵活,可充分利用指令长度,但指令控制复杂。

指令操作码扩展方法

指令操作码通常有两种编码格式: 一种是,即操作码长度固定,。 这种格式可以,一般用于字长较长的大中型机和超小型机 RISC机上,如IBM 370和VAX 11系列机,其操作码长均为8b,可表示256种指令。 另一种是,即操作码的长度可变,且。 这种格式能够有效地压缩程序中操作码的平均长度,在字长较短的微型机上广泛采用。如 Z80、Intel 8086等,操作码的长度都是可变的。 操作码不固定将增加指令译码和分析的难度,使控制器的设计复杂。 通常在指令字中用一个固定长度的字段来表示基本操作码,而对于一部分不需要某个地址码的指令,则把它们的操作码的长度扩充到该地址字段。 这样既能充分利用指令字的各个字段,又能在不增加指令长度的情况下扩展操作码的长度,使它能表示更多的指令。

例如:某机器的指令字长度为16b,包括4b基本操作码字段和三个4b地址字段,其指令格式为: 4b基本操作码有16种组合,若全部用于表示三地址指令,则只有16条。但是,如果三地址指令仅需15条,两地址指令需15条,一地址指令需15条,零地址指令需16条,共61条指令,应该如何安排操作码?显然,只有4b基本操作码是不够的,必须将操作码的长度向地址码字段扩展才行。这可采用如下操作码扩展方法: (1) 三地址指令仅需15条,由4b基本操作码的0000~1110组合给出,剩下的一个组合1111用于把操作码长度扩展到 A1,即4b扩展到8b; (2) 二地址指令需15条,由8b操作码的11110000~11111110组合给出,剩下一个11111111用于把操作码长度扩展到 A2,即从8b扩展到12b; (3) 一地址指令需15条,由12b操作码的111111110000~111111111110组合给出,剩下一个组合111111111111用于把操作码长度扩展到A3,即从12b扩展到16b; (4) 零地址指令需16条,由16位操作码的1111111111110000~1111111111111111组合给出。 采用上述指令操作码扩展方法后,三地址指令、二地址指令和一地址指令各15条,零地址指令16条,共计61条指令。

指令和数据的寻址方式

指令的寻址方式

操作数或指令在存储器中的地址:某个操作数或某条指令存放在某个存储单元时,其存储单元的编号。 在存储器中,操作数或指令字写入或读出的方式,有:地址指定方式、相联存储方式和堆栈存取方式。 :当采用地址指定方式时,形成操作数或指令地址的方式。 寻址方式分为两类,即,前者比较简单,后者比较复杂。 :确定下一条将要执行的指令地址的方法。 指令的寻址方式有两种: 一种是方式, 另一种是方式。

1.顺序寻址方式

指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序执行。 即从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,在执行第二条指令;接着再取出第三条指令……这种程序顺序执行的过程,我们称为指令的顺序寻址方式。 为此,必须使用)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。

2.跳跃寻址方式

当程序时,指令的寻址就采取跳跃寻址方式。 跳跃(跳转):下条指令的地址码不是由程序计数器给出,而是。 注意:程序跳跃后,按,以便及时跟踪新的指令地址。 采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。 指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。

操作数寻址方式

操作数寻址方式:形成操作数的有效地址(EA)的方法。 指令字中的地址码字段,通常是由组成的,。其表示形式为: 形式地址A,是指令字结构中给定的地址量。 寻址方式特征位,通常由间址位(I)和变址位(X)组成。 若指令无间址和变址要求,则形式地址就是操作数的有效地址; 若指令中指明要进行变址或间址变换,则形式地址就不是操作数的有效地址,而必须按指定方式进行变换,才能形成有效地址。 常见的操作数寻址方式 1、隐含寻址方式 2、立即寻址(Immediate Addressing) 3、寄存器寻址方式 ( Register Addressing ) 4、直接寻址(Direct Addressing) 5、间接寻址( Indirect Addressing ) 6、相对寻址 ( Relative Addressing ) 7、基址寻址 ( Based Addressing ) 8、变址寻址(Indexed Addressing) 9、堆栈寻址 ( Stack Addressing )

1.隐含寻址

在指令中不明显的给出而是隐含着操作数的地址。 例如:单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址。

2.立即寻址

指令的地址字段指出的不是操作数的地址,而是。 这种方式的特点是指令执行时间很短,不需要访问内存取数(操作数在地址码字段中)。

3.寄存器寻址

操作数放在CPU的通用寄存器中,,即: DATA=(Ri) MOV AX, BX MOV AL, BH

4.直接寻址

操作数位于存储器中,中,即: DATA=(EA) 指令字中的形式地址A就是操作数的有效地址E EA=A,该类指令中的形式地址A又称为直接地址 直接寻址方式又可分为寄存器直接寻址和存储器直接寻址两种。 指令地址码字段直接给出所需操作数在通用寄存器中地址编号。其表示形式为: 有效地址EA数学形式为:EA=Ri 一般简称直接寻址方式,其指令地址码字段直接给出存放在存储器中操作数的存储地址。其表示形式见前面。

5.间接寻址

间接寻址的情况下,指令地址字段中的形式地址A不是操作数的真正地址,而,A单元的内容是操作数的有效地址。即 DATA=(EA) EA=(A) 即:A为操作数地址的地址 按寻址特征间址位X的要求,根据地址码指的是寄存器地址还是存储器地址,间接寻址又可分为寄存器间接寻址和存储器间接寻址两种方式。 寄存器间接寻址时,需先访问寄存器,从寄存器读出操作数地址后,再访问存储器才能取得操作数。

有效地址EA数学形式为:EA=®,即Data=(EA)=(®) 存储器间接寻址时,需访问两次存储器才能取得数据,第一次先从存储器读出操作数地址,第二次才能根据读出的操作数地址再取出真正的操作数。 有效地址EA数学形式为:EA=(A),即Data=(EA)=((A))

6.相对寻址方式

所谓相对寻址方式,是指来寻找操作数地址的方式。 根据基准地址的来源不同,它又分为、以及,这里主要指后者。 PC相对寻址方式,一般简称,是指将程序计数器 PC的内容(即当前执行指令的地址)与地址码部分给出的位移量(Disp) 通过加法器相加,所得之和作为操作数的有效地址的方式。 有效地址EA数学形式为: EA=(PC) + Disp

7.基址寻址方式

计算机设置一个寄存器,专门用来存放基准地址,该寄存器就是。RB既可在CPU中专设,也可由指令指定某个通用寄存器担任。 基址寻址方式是将CPU中基址寄存器RB的内容加上指令格式中的形式地址A而形成操作数的有效地址。 优点是可以扩大寻址能力。同形式地址相比,基址寄存器的,从而可以在较大的存储空间中寻址。 有效地址EA数学形式为:EA=(RB) + Disp 地址码 A在这种方式下通常被称为位移量(Disp)。

8.变址寻址方式

变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。 使用变址寻址方式的目的不在于扩大寻址空间,而在于。 XRI指出变址寻址方式的特征 有效地址EA数学形式为: EA=(RI) +Disp

9.堆栈寻址

操作数位于存储器中,操作数所在的存储器地址EA由堆栈指针寄存器SP隐含指出,通常用于堆栈指令。 堆栈是由若干个连续主存单元组成的先进后出(first in last out,即FILO)存储区,第一个放入堆栈的数据存放在栈底,最近放入的数据存放在栈顶。栈底是固定不变的,而栈顶是随着数据的入栈和出栈在时刻变化。栈顶的地址由堆栈指针SP指明。 一般计算机中,堆栈从高地址向低地址扩展,即栈底的地址总是≥栈顶的地址,称为上推堆栈;也有少数计算机相反,称为下推堆栈。 堆栈寻址主要用来暂存中断和子程序调用时现场数据及返回地址。

堆栈的操作:压入(PUSH)和弹出(POP),对应PUSH和POP指令,假设数据字长为1B 压入指令 PUSH Ri:将Ri寄存器内容压入堆栈。其操作是: (SP)-1→SP,(Ri) →(SP) 弹出指令POP Ri:从堆栈中弹出1个数据送Ri寄存器,其操作是: ((SP)) → Ri ,(SP)+1→SP 其中(SP)表示堆栈指针SP的内容;((SP))表示SP所指的栈顶的内容。

注意:存储器堆栈中, 进栈时先存入数据,后修改堆栈指示器; 出栈时,先修改堆栈指示器,然后取出数据。 10.复合型寻址方式 (1) 相对间接寻址 这种寻址方式先把程序计数器PC的内容和形式地址(通常为位移量)Disp相加得(PC) + Disp,然后再间接寻址求得操作数的有效地址,即先相对寻址再间接寻址。 操作数的有效地址EA数学形式为:EA=( (PC) + Disp)

(2) 间接相对寻址

这种寻址方式先将形式地址Disp作间接变换( Disp ),然后将间接变换值和程序计数器PC的内容相加得到操作数的有效地址,即先间接寻址再相对寻址。 操作数的有效地址EA数学形式为:EA=(PC) + ( Disp) (3) 变址间接寻址 这种寻址方式先把变址寄存器RI的内容和形式地址Disp相加得(RI) + Disp,然后再间接寻址求得操作数的有效地址,即先变址再间址。 操作数的有效地址EA数学形式为:EA=( (RI) + Disp)

(4) 间接变址寻址
这种寻址方式先将形式地址Disp作间接变换( Disp ),然后将间接变换值和变址寄存器RI的内容相加得到操作数的有效地址,即先间址再变址。
操作数的有效地址EA数学形式为:EA=(RI) + ( Disp)

指令系统的要求与指令分类

指令的分类

1.数据传送指令

这类指令主要用来实现主存和寄存器之间,或寄存器和寄存器之间,或主存和主存之间的数据传送。 主要包括取数指令、存数指令、传送指令、成组传送指令、字节交换指令、清累加器指令、堆栈操作指令等等。 传送数据时,数据从源地址传送到目的地址,而源地址中的数据保持不变,因此,实际上是数据拷贝。

2.算术/逻辑运算指令

这类指令主要用于定点或浮点的算术运算,大型机中有向量运算指令,直接对整个向量或矩阵进行求和、求积运算。 (1)算数运算指令 这类指令包括二进制定点加、减、乘、除指令,浮点加、减、乘、除指令,求反、求补指令,算术移位指令,算术比较指令,十进制加、减运算指令等。 (2)逻辑运算指令 这类指令用以实现对两个数的逻辑运算和位操作功能,主要包括逻辑与(逻辑乘)、或(逻辑加)、非(求反)、异或(按位加)等逻辑操作指令,以及位测试、位清除、位求反等位操作指令。

3.移位操作指令

移位操作指令用以实现将操作数向左移动或向右移动若干位的功能,包括算术移位、逻辑移位和循环移位三种指令。 算术移位 左移时,若寄存器中的数为算术操作数,则符号位不动,其它位左移,最低位补零。 右移时,其它位右移,最高位补符号位。 逻辑移位 移位时,若寄存器中的操作数为逻辑数,则左移或右移时,所有位一起移位,最低位或最高位补零。 循环移位 按是否与“进位”位C一起循环分为小循环(即自身循环)和大循环(即和进位位 C一起循环)两种。 用于实现循环式控制、高低字节互换或与算术、逻辑移位指令一起实现双倍字长或多倍字长的移位。

4.程序控制指令

(1) 无条件转移指令与条件转移指令 无条件转移指令不受任何条件限制,直接把程序转移到指令所规定的目的地,从那里开始继续执行程序。 条件转移指令则根据计算机处理结果来控制程序的执行方向,实现程序的分支。首先测试根据处理结果设置的条件码,然后判断所测试的条件是否满足,从而决定是否转移。 (2) 调用指令与返回指令 编写程序时,常常需要编写一些能够独立完成某一特定功能且经常使用的程序段,在需要时能随时调用,而不必多次重复编写,以便节省存储器空间和简化程序设计。这种程序段就称为子程序或过程。 调用(Call)与返回(Return)是一对配合使用的指令,返回指令从堆栈中取出返回地址,然后继续执行调用指令的下一条指令。 (3) 陷阱(Trap)与陷阱指令 在计算机运行过程中,有时可能会出现电源电压不稳、存储器校验出错、输入输出设备出现故障、用户使用了未定义的指令或特权指令等种种意外情况,使计算机不能正常工作,这时若不及时采取措施处理这些故障,将影响到整个系统的正常运行。 因此,一旦出现故障,计算机就发出陷阱信号,并暂停当前程序的执行(称为中断),转入故障处理程序进行相应的故障处理。陷阱实际上是一种意外事故中断。

5.输入输出指令

输入输出指令主要用来启动外围设备,检查测试外围设备的工作状态,并实现外部设备和CPU之间,或外围设备与外围设备之间的信息传送。

6.字符串处理指令

字符串处理指令是一种非数值处理指令,一般包括字符串传送、字符串转换(把一种编码的字符串转换成另一种编码的字符串)、字符串替换(把某一字符串用另一字符串替换)等。 这类指令在文字编辑中对大量字符串进行处理。

7.堆栈操作指令

堆栈操作指令通常有两条:一条是入栈指令,另一条是出栈指令。 入栈指令(PUSH)执行两个动作:①将数据从CPU取出并压入堆栈栈顶;②修改堆栈指示器。 出栈指令(POP)也执行两个动作:①修改堆栈指示器;②从栈顶取出数据到CPU。这两条指令总是成对出现的,在程序的中断嵌套、子程序调用嵌套过程中非常实用和方便。

8.特权指令

特权指令是指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。 在多用户、多任务的计算机系统中特权指令必不可少。 它主要用于系统资源的分配和管理。

小结

一台计算机中所有机器指令的集合,称为这台计算机的指令系统。 指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也影响到系统软件。 指令格式是指令字用二进制代码表示的结构形式,通常由操作码字段和地址码字段组成。操作码字段表征指令的操作特性与功能,而地址码字段指示操作数的地址。 目前多采用二地址、单地址、零地址混合方式的指令格式。 指令字长度分为:单字长、半字长、双字长三种形式。高档微型机中目前多采用32位长度的单字长形式。 形成指令地址的方式,称为指令寻址方式。 有顺序寻址和跳跃寻址两种,由指令计数器来跟踪。形成操作数地址的方式,称为数据寻址方式。 操作数可放在专用寄存器、通用寄存器、内存和指令中。 数据寻址方式有隐含寻址、立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、相对寻址、基址寻址、变址寻址等多种。 按操作数的物理位置不同,有RR型和RS型。前者比后者执行的速度快。 堆栈是一种特殊的数据寻址方式,采用“先进后出”原理。按结构不同,分为寄存器堆栈和存储器堆栈。 不同机器有不同的指令系统。一个较完善的指令系统应当包含数据传送类指令、算术运算类指令、逻辑运算类指令、程序控制类指令、I/O类指令、字符串类指令、系统控制类指令。

标签: ax400系列变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台