指令系统
4.1概述 4.1.1有关术语概念 1.字节、字 在计算机中,一般用8位二进制代码表示一个字节。字由字节组成,如:高档微机字长32位,字由4个字节组成一个字 2.数据字与指令字 如果计算机的字表示一个数,就称为数据字,如果计算机的字表示一条指令,就称为指令字。 3.及其字长与指令字长 机器子字长,指计算机能直接处理二进制数据的位数;一条指令中包括二进制的位数称为指令字长。指令字长度等于机器字长的指令,称为单字长指令;指令长等于半个机器字长的指令,称为半字长指令。指令字长等于两个机器字长指令,称为双字长指令。 4.定字长指令结构与变字长指令结构 在一个指令系统中,如果各种指令字长度是相等的,称为定字长指令字结构;如果在一个指令,有的指令时双字长或三字长指令,就称为变字长字结构 5.指令、指令格式、指令系统 控制器发布的操作命令,称为指令。 一条指令提供这样的信息:即执行什么操作;操作数到那里去取,结果送到那里,为了使程序自动执行还应该指出下一条指令的地址。前者表现为操作码、后者表现为地址码。 一台计算机所能执行的各种指令的集合称为指令系统。一台特定的计算机只能执行自己指令系统中的指令,因此,指令系统就是计算机的机器语言。 4.1.2指令设计中的一般问题 应考虑如下几方面问题 1. 2. 3. 4. 5. 6. 7. 8. 9. 然而在诸多问题中,无不集中的反映到:指令格式设计、地址结构、操作码结构、寻址方式、以及指令的类型与功能设置等,在这些问题即为指令设计中的一般问题。 4.2地址结构 地质结构设计到两个方面的问题。一是所需的操作数或结果存入的物理位置、以及访问特点;二是指令的地址部分如何给出完成某一操作的全部信息。前者取决于信息的存储结构,后者与地址码的结构有关,本节将分别讨论有关的内容。 4.2.1存储信息的物理结构与存取方式 常见的存储机构有:CPU寄存器组,主存储器、磁盘、磁带和堆栈五种。信息存取与具体的存储机构有关。 1. 寄存器是计算机的一个主要部件,用于暂存数据和指令等,它由触发器和一些控制电路组成,它的内容能以逻辑电路的速度随机进行存取,通常与运算部件直接相连。因此,程序员在软件能分配的重要资源是CPU寄存器组。在计算机中,不同寄存器有不同的用途,为指明相应的寄存器,其地址由寄存器号给出,它的使用方法直接体现在指令格式中。 2. 从程序运行角度,主存允许随机访问。因此,指令的格式中也必须直接或间接地给出存储器单元的地址 3. 由于磁带的纯粹顺序特性,决定了它的顺序存储性质,不论在逻辑上,还是在物理上都无法直接找到所要的信息。必须知道关于信息的详细说明,如::在那个模块中,用设呢么方式将给定的信息段与要求输入信息作比较等等才行。 对于直接存取系统的磁盘也是这样的,存取信息要进行两步操作 第一步,直接指向系统的某一个区域磁道或磁头,接着,需要对这一小部分存储区域内像磁带那样的顺序操作 鲜艳,像磁带,磁盘这样的存储机构,需啊哟较长的地址。一般来说,磁盘只存放那些待命的,目前不需要立即使用的数据和程序等,一旦需要再和贮存成批的信息。他们只是作为主机后备和补充。由于,他们只与主存交换信息,而不被CPU直接访问,因此,他们的地址信息在CPU操作指令格式的设计中,不必考虑 4. 一种按特定顺序进行的存储区,对堆栈数据处理是依据后进先出的原则,即LIFO 1堆栈的特点 使用后进先出的概念,信息顺序由顶部到底部或有顶到底(即下推或上推)地装入堆栈,而以相反的顺序从堆栈中取出。因为堆栈编址具有吸纳性表列性质,所以不要求跟踪当前进入堆栈真是单元,而只要用一个具有自动递增或自动递减功能的所谓堆栈指示器SP来指出最后一次信息在堆栈中存入的地址就可以了 由于堆栈特殊结构,一在指令系统中可以单独设置堆栈指令。信息进入堆栈,通常称为压入,由PUSH指令完成;信息从堆栈中,通常称弹出,由POP指令完成。 (2)使用规则 1.建栈 原则是:在使用堆栈时,要主要避免从空栈中弹出栈顶元素或从满栈中再压入一个栈顶元素。 2.堆栈操作 若假定SP的建立总是指向一个实单元,那么根据建栈原则,堆栈操作如下: 压入PUSH 首先形成压入堆栈的地址指针,然后压入数据。 按SP指示的栈顶地址弹出数据,然后修改堆栈指针,使其指向单元。 举例:假定在内存中开辟堆栈区,从F0H-FFH共16个单元,试按向上生成的方式和向下生成的方式的两种情况阐述PUSH A,PUSH B,POP B堆栈操作过程 1. 进栈,SP初始值为100H 执行操作 Push A: 形成入地址(SP)-1 –>SP 总结:实际上,堆栈设置方式多样,对战形成方向有上堆栈,下堆栈:地址顺序由从高到低,也有从低到高;sp指针有的指向实单元,有的指向虚单元。但是,只要掌握上述原理:即满了不能压入,空了不能弹出,所有问题全部解决。 4.2.2地址码的结构 机器若想执行指令中的操作码所规定的操作,,相应地指令地址码部分就必须明显的货隐含的给出完成这一操作的全部信息。 1. 格式为:操作码op,第一操作数D1,第二操作数D2,结果存放地址D3,下一条指令地址D4 功能可以描述如下,第一操作数和第二操作数执行所规定的操作0,结果放在结果存放地址中,(D4)单元给出下一条指令的地址。 总结:表面上看,这种结构很像是所要的全部地址的简单逻罗列。实际上,这种结构存在着早期计算机的痕迹 第一,由于有关的操作数地址和结果地址都明确的制定好,因而他们可以各自分散的存于主存储器中,不必使用中间寄存器,使机器结构简化。 第二,每条指令都明显的指出下一次要执行的指令位于何处,那么在指令系统中不必使用转移指令,而指令的执行也不必遵循着连续存储位置依次进行 2.三地址指令格式 指令格式:操作码,第一操作数地址D1,第二操作数地址D2,结果存入地址D3 注意:由于采用PC计数器,省了下一条地址D4 顺序:PC+1 ->PC, 转移有特定指令给出 三地址怎么变成二地址。 将所存结果包含到操作数中去 4单地址指令格式 一般来说,单地址明确访问的操作数只有一个,该操作数可以在主存储器或某一寄存器中,如果某些操作只对一个操作数进行加工,那么操作数源地址和目的地址完全可合用一个, 注意:如果单地址指令格式,有双操作数,计算机必须设置累加器 如果某些操作为双操作数看,那么另一个地址必须采用隐含寻址方式,通常做法是:第一个操作数(原操作数)由地址码D1给出,和二哥操作(目的操作数)隐含在累加器中,操作的结果将替代累加原来的内容。微型机和某些小型机多采用这种方式。 5零地址指令 实现这一构想的硬件结构式堆栈 把代数式化为逆波兰表达式 注意:零地址,也要借助单地址,不是单纯的零地址。 4.3操作码结构 4.3.1统一编码与逐位定义方式 4.3.1方式码 4.3.3扩展操作码 扩展操作码是一种指令优化技术,即让操作码的长度随地址数额减少而增加, 4.4寻址方式 4.4.4常见寻址方式 1立即寻址 操作码字段后面的部分不是操作数地址,而是操作数本身。这叫做立即数 特点:在去指令时,操作码和操作数被同事取出,不必再次访问存储器,从而提高了指令的执行速度 2. 指令中地址码给出的地址A就是操作数的有效地址Ea 特点:这种寻址方式不需要作任何寻址运算。简单直观,便于硬件实现 分析:数据分为单独和连续的(数组)两种,单独的直接寻址很方便 3寄存器直接寻址 区别在于操作数在寄存器存放 特点:提高指令执行速度,缩短指令长度 用于:操作数已在寄存器 中,可直接进行操作 4寄存器间接寻址 操作数在主存中,之林中给出的寄存器号,别指定的寄存器中存放着操作数的地址,这种寻址方式称为寄存器间接寻址。 特点:这种寻址方式指令短,并且指令后只需一次访存便可得到操作数 用于:解决循环程序设计 2扩大寻址空间,在这种方式中,寄存器作间接单元。它能够提高全字长地址字,从而扩大了指令的寻址空间 5间接寻址 间接寻址意味着指令地址部分A给出的不是操作数的地址,而是存放操作数地址的地址 用于:1间接寻址用于查表 ,而且不可替代。 3. 6相对寻址 相对寻址是相对指令本身的一种寻址方式,在这种寻址方式中,操作数的有效地址EA是指令的形式地址与程序计数器PC内容之和 用于:1相对于当前地址 2程序搬家问题,程序浮动也可以执行 可见,采用PC相对寻址编写的程序,只要保证其相对距离不变,就可在主存中任意浮动。原程序可以不加修改仍能保证程序的正确执行 7变址寻址 变址寻址就是把指令中给出的地址A与变址寄存器Rx的内容相加,形成操作数有效地址,Rx的内容称为变址值,变址值有正,有负。 分析,当PC够不到的范围时,变址相当于加“竿” 显然,不受本条指令所在空间限制,可以十分方便地存取向量数据结构中的元素,因此使得访问表格内可变入口变的十分容易 2. 第三,变址寻址另一个妙用是,当运算中的几条指令都要读取某数组中的同一元素A(2),A(2)放在内存的某处 8基址寻址 基址寻址是将基址寄存器Rb的内容与指令中给出的位移量D相加,形成操作数有效地址 用处:解决原封不动装入程序不能执行的问题,解决重新分配问题 9堆栈寻址 1. 子程序嵌套:指子程序再次调用子程序 递归:再次调用自己 可再入性:是指当一个公用子程序被某调用陈旭调入后,尚未执行完毕时,程序被另一个程序中断,而后面的程序又一次调入该子程序后,要求保证前后两次都能得到正确的结果,子程序中所用的参数和中间结果同样不鞥你存放在固定的存储区,否则,再次进入时,将把前一次的参数和中间结果冲掉,而是前一次调用不能取得正确的结果,因此可再入性子程序中的参数与有关存储区也应适用堆栈 4.5指令的类型与功能设置 指令系统的完备性是指在一个有限的可用存储空间,对于任何可接的问题,变址计算机程序时,指令系统提供的指令足够使用。一般来说,可以归纳为六大类 4.5.1数据传送类指令 一,传送,二,复制 功能设置考虑 1传送范围 寄存器之间,寄存器与存储器 ,存储器之间。 2. 指按字节、字、字符串、数据块等 3. 指原值传送、求补传送取反传送、或零值传送等 4、寻址方式 5关于这类指令,常见的有: MOV将信息从源点传到终点,STORE 5.2算术运算类指令 功能是执行算术运算 最主要指令,ADD SUB 4.5.3 逻辑运算类指令 逻辑操作时一个数据字看做是一个位数组,并分别地白狐狸每一位。常见类型有: AND OR COM EOR 这类指令中最基本的,不可缺少的是AND和COM 或 OR 和COM指令 功能设置考虑:该类指令的功能设置,往往相应的逻辑运算规律、。 1. 一位逻辑乘运算规则如下 一,0^任意数结果为0;1^任意数结果仍为原值,利用这个规律,可以设置按位测指令。 二,1^1=1;0^0=0;即代码自身相与后,不影响原态,因此,可用来设置标志位 三,0^0=0,1^0=0因此可以设置按位清零命令 一位逻辑加运算 1V0=1,1V1=1,根据这一规律可以设置按位置指令。方法使:若使终点操作数的某位为1,可设置源操作数中相对应的置位位为1,其余为0,二者相或 2. 一位按位加运算 第一, 第二, 第三, 第四, 4.6移位操作 这种指令的功能是完成逻辑移位,循环移位和算术移位。常见类型有:算术右移,算术左移,逻辑右移;逻辑左移,逻辑右移。循环左移,循环左移。 功能设置考虑 1数据格式:字符移位指令,字移位指令 2.移位参数:包括移一位次数和移位方向,若一次移若干时,需在指令中设置位移量 3.被移位的寄存器地址 4.补位方法 4.5.5程序控制类指令 这种指令功能主要用于空盒子程序的执行顺序和选择程序的运行方向。可见,它是计算机的智能机构。因而着了指令在设置上就较复杂,功能本身有一定差异 从造成程序转移的原因来看,大致有三:分支循环调用子程序。因此我们从程序设计角度,讨论常见的程序控制类指令及其功能设置考虑 顺序:PC+1 分支,从分支结构谈起 分支点:通过比较:CMP AL ,0;AND AL,AL; OR AL,AL ; 通常还设置无条件转移指令, 如JMP 循环程序:分为两大类1,循环次数是已知的,用LOOP计数跳2,循环次数是未知的,用当。。型指令 原则上来说,循环程序完全可以由条件转移指令实现,但是运用计数跳等简单方便 3. 堆栈方式返回(VAX11) 链接寄存器方式返回(PDP11机器) 总结:有子转址指令,不一定有返回指令,但目前来讲,大部分设转址,一般设返回指令(原因是不设的话要两次访问内存,速度太慢) 可以采用堆栈或链接寄存器来解决转址指令 4.5.6I/O类指令 功能:控制I/O设备的工作,完成主机与外围设备之间进行各类信息交换。 设置方式不同 当都是总线子系统的时候,没有必要专门设置,直接通过传送指令就可以解决!采用统一编址方式 当CPU是中心且直接与I/O交换信息的时候,设置专用的I/O指令 |
|
来自: 静听沙漏 > 《逻辑电路与计算机组成原理》