三章指令集结构.ppt

上传人:本田雅阁 文档编号:2626323 上传时间:2019-04-23 格式:PPT 页数:77 大小:608.01KB
返回 下载 相关 举报
三章指令集结构.ppt_第1页
第1页 / 共77页
三章指令集结构.ppt_第2页
第2页 / 共77页
三章指令集结构.ppt_第3页
第3页 / 共77页
三章指令集结构.ppt_第4页
第4页 / 共77页
三章指令集结构.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《三章指令集结构.ppt》由会员分享,可在线阅读,更多相关《三章指令集结构.ppt(77页珍藏版)》请在三一文库上搜索。

1、第三章 指令集结构,3.1 程序设计语言的级别 3.2 机器语言指令 3.3 指令集结构设计 3.4 相对简单的指令集结构 3.5 实例,3.1 程序设计语言的级别,3.1.1 语言种类,高级语言(high-level languages),汇编语言(assembly language),向下兼容(backward compatible),平台无关(platform-independent),机器语言,3.1.2 编译和汇编程序,1. 编译、汇编 2. 编译器 源程序、源代码、目标代码 连接器、装载器 3. 编译过程 同一高级语言源代码可以经过编译在不 同的微处理器和操作系统或者计算平台上运行

2、。,图3.1 高级程序的编译过程 装载器包含在计算平台中,4.汇编器和汇编过程,图3.2 汇编语言程序的汇编过程,每一种汇编语言对应一种微处理器,不需要针对不同平台的汇编器 。,1. 什么是指令? 指令:指示计算机执行某种操作的命令。 机器语言:计算机硬件实体直接表示控制信息的语言。 (计算机硬件能直接理解并执行的语言) 指令集:一台计算机能执行的全部指令的集合。 (计算机程序员接触到的计算机的所有功能) 一条指令就是机器语言的一个语句,用来说明机器 硬件应完成的操作。,3.1.3 机器语言与指令,指令集表征着计算机的基本功能和使用属性,是计算机系统设计中的核心向题。是表征一台计算机性能的重要

3、因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。,2. 指令的组成 一条指令一般应包含如下信息: (1) 操作码 (2) 操作数的地址 (3) 操作结果的地址 (4) 下一条指令地址 指令的基本格式,操作码:表示指令应执行的操作和应具有的功能。 地址码:表示参与操作的操作数的存放地址或操作结 果的存放地址。,3.2 机器语言指令,3.2.1 指令类型与功能,3.2.1.1 数据传送指令,将数据从一个地方移到另一个地方(实际是“拷贝”)。 例: 8086指令 MOV AL,BL ;ALBL MOV AL,Disp(BX)(SI) ;AL(BX)(

4、SI)+Disp) IBM370机的成组取指令:,3.2.1.2 数据运算指令,包括算术运算指令、逻辑运算指令 、移位指令。 例:8086指令系统中 ADD AL,BL ;ALAL+BL MUL BL ;AXALBL AND AL,0FEH ;ALALFEH,即AL的最低位 ;清0,其余位不变。 OR AL,0F0H ;ALALF0,即AL的高4位置1, ;其余位不变 TEST AL,00000001B ; AL00000001B A00 结果为0 ;A01 结果不为0, 移位指令 实现对操作数的左、右移位。 移位操作指令分为算术移位、逻辑移位和 循环移位三种,可以实现对操作数左移或右移 一位

5、或几位。,3.2.1.3 程序控制指令,控制程序流程的指令,包括:跳转指令(条件或无条件)或分支指令、子程序调用和子程序返回指令、“软中断”指令、停机指令。,3.2.2 数据类型,数值数据 无符号整型数、有符号整型数、浮点数据 布尔类型 数据值常以0表示FALSE,以非0表示TRUE 字符数据 字符编码标准 (ASCII、EBCDIC、UNICODE、或别的),例:8086指令系统 JMP L1 ;直接寻址的转移,无条件转移到L1处, JNZ 50H ;相对寻址的转移。若操作结果不为0,则转移到当前PC50H处。设指令地址为1000H,则当前PC1002H,转移地址为:1002H50H1052

6、H,3.2.3 寻址方式,寻址方式:确定操作数地址的方法。 形式地址:指令中直接给出的地址。 有效地址:形式地址经一定的计算而得到的操作数的 实际地址。,3.2.3.1 直接寻址 指令字中直接给出操作数的有效地址。, 例:Intel 8086指令 MOV AX,2000H 将有效地址为2000H的内存单元的内容读入累加器AX中。 例如:LDAC 5 从内存单元5读取数据并且把数据存储在CPU的累加器中。 这种方式简单直观,便于硬件实现。但随着存储器容 量不断扩大,要寻址整个主存空间,将造成指令长度 加长。另外程序位置受到限制。,3.2.3.2 间接寻址,指令中指定的是含有操作数地址的内存单元的

7、地址。 至少要进行两次内存访问。,例如:LDAC 5 或 LDAC (5), 间接寻址的特点 间接寻址比直接寻址灵活,可扩大寻址范围,以短 的地址码访问大的存储空间。 采用间接寻址,当操作数地址需要改变时,可不必 修改指令,只要修改地址指示字中内容(即存放有效 地址的单元内容)即可。 间接寻址需多次访存才能取得操作数,因而降低了 指令的执行速度。,3.2.3.3 寄存器直接寻址和寄存器间接寻址, 寄存器寻址 与直接和间接寻址方式相似,但指定的是寄存器,而 不是内存单元。 寄存器存取信息的速度比主存快,需要的地址短,可 压缩指令长度,有利于加快指令执行速度。但寄存器 的数量有限。 寄存器直接寻址

8、,操作数,Rn,例如:假设寄存器R中存储了数值5,则: LDAC R ;把数值5从寄存器R中拷贝到CPU的累加器中,例如:假设寄存器R中存储了数值5,则: LDAC (R) 或 LDAC R ;相当于 LDAC 5,从寄存器R中获取地址, 寄存器间接寻址,3.2.3.4 立即值寻址,指定的操作数不是一个地址,而是确实要用到的数据。,例如: Intel 8086指令 MOV AX,2000H ;将数据2000H存入累加器AX中 例如:LDAC #5 ;把数据值5移到累加器中,这种寻址方式在取指令的同时操作数即被取出,不必再次访问存储器,提高了指令执行速度。但由于指令字有限,使得数据范围受限。,3

9、.2.3.5 隐含寻址,并不明确地指出操作数,因为总是用到特定的寄存器。,例如: CLAC ;清空CPU中的累加器,即将其值置为0,常用于用堆栈存储数据的CPU中。指令中不需要指定操作数,因为它暗示操作数一定来自堆栈。,堆栈及堆栈操作 一种按“后进先出”存取顺序进行存取的存储结构 堆栈操作指令是一种特殊的数据传送指令 堆栈有两种生成方式 自底向上生成方式:栈底占最高地址,栈顶为较低地 址,压入数据时,按由高地址向低地址顺序进行,弹出 数据(即取出数据)时,由低地址向高地址顺序进行。 自顶向下生成方式:与自底向上生成方式顺序相反。,自底向上生成堆栈的工作过程, 堆栈操作有两种 压入(进栈)指令:

10、把指定的操作数送入栈顶。 SPSP减量,(SP)数据 弹出(退栈、出栈)指令:从栈顶弹出数据,送到 指令指定的目的地址中。 目的(SP),SPSP增量,例:8086的指令系统中 进栈指令:PUSH AX SPSP1,(SP)AH,SPSP1,(SP)AL 出栈指令:POP AX AL(SP),SPSP1,AH(SP),SPSP1,SP,SP-1,SP-1,SP+1,SP+1,SP,AL,AH,3.2.3.6 相对寻址 将程序计数器 PC 的当前内容与指令中给出的形式地址相加形成操作数的有效地址。 有效地址E(PC)Disp, 程序计数器 PC的内容一般为现行指令的下一条指令的 地址。 形式地址

11、是操作数地址相对于PC当前内容的一个相对 位移量(Disp),位移量可正可负,一般用补码表示。 在相对寻址中,只要保持位移量不变,就可实现指令 带着数据在存储器中浮动,有利于实现程序再定位。,例:8086指令 JNC 03H 的功能为,如果进位为0,则 转移到目标地址为 (PC)03H处进行执行。 设指令为双字节指令,本条指令地址为1000H。 本条指令取指后,PC1002H 转移目标地址为 1002H0003H1005H 若指令为JNC 0FDH 则转移目标地址为 1002HFFFDH0FFFH,DFDH,D03H,3.2.3.7 变址寻址方式和基址寻址,1.变址寻址方式 变址寻址方式与相对

12、寻址方式类似,但它是将指令提供的地址与变址寄存器中而不是程序计数器中的内容相加。,例如: Intel 8086指令 MOV AL,BX+4 设 BX2000H,BX+42004H (2004H)82H,则 AL82H 例如: LDAC 5(X) ;变址寄存器X:数值10,则 51015 ;读取15号单元中的数据并且把它存储在累加器中。, 变址寻址可用于数组、向量、字符串等数据的处理 例: Intel 8086指令 LODS ;AL(SI),SISI1,+1,2基址寻址 操作数的有效地址等于指令中的形式地址与基址 寄存器中的内容之和。 基址寄存器可以是一个专用的寄存器,也可以是 由指令指定的一个

13、通用寄存器。, 基址寻址主要用于将用户程序的逻辑地址(用户编写 程序时所使用的地址)转换成主存的物理地址(程序 在主存中的实际地址)。, 基址寻址与变址寻址在形式上以及有效地址的计算 方法上都是相似的,但它们的应用场合是不同的。 基址寻址是面向系统的,主要用于逻辑地址到 物理地址的变换,用以解决程序定位问题。基址寄 存器由系统程序使用,对用户是透明的。 变址寻址是面向用户的,主要用于访问数组、 向量、字符串等成批数据,用以解决程序的循环控 制问题。,3.2.4 指令格式,指令的基本格式:,指令格式的设计包含两个方面: 1. 确定指令的长度; 2. 划分指令的字段,定义各字段的位数、含义 。,一

14、、指令长度 指令字长度:一个指令字所包含的二进制信息的位数。 定长指令:指令系统中所有指令的长度都是一样的。 可变长指令:各指令的长度可以不同。 指令长度与机器字长 二.指令的地址码 考虑的问题:需要多少地址信息及如何给出地址。,1. 零地址指令 格式: (1) 无需任何操作数, 如空操作,停机等指令。 (2) 所需操作数是隐含指定的,如堆栈运算指令。 2. 一地址指令 格式: 意义: (1) A OP (A) (2) AC (AC) OP (A),OP,指令短,节省空间,执行快,常用于微、小型机中。,3. 二地址指令 格式: 意义: A1 (A1) OP (A2) 最常用的指令格式,适用于中

15、、小、微型机。, 二地址指令的几种形式 存储器存储器型(SS型)指令 寄存器寄存器型(RR型)指令 寄存器存储器型(RS型)指令,4. 三地址指令 格式: 意义: A3 (A1) OP (A2) 常用于大、中型机中。,5. 多地址指令,考虑一个简单的例子:ABC 一个操作: 加法 三个操作数: 两个源操作数 B、C 一个目的操作数 A 假定微处理器可以执行16种不同的操作。 需要4位来代表其中的操作(因为2416) (假设位模式1010 加法) 假定仅有4种可能的操作数A,B,C和D。 用两位来表示每一种操作数: 00A ,01B ,10C ,11D,图3.4 采用(a)三操作数,(b)二操作

16、数,(c)单操作数,(d)0操作数的指令格式和计算ABC的汇编语言程序以及机器代码。,微处理器可以设计成能运行具有3、2、1或0个操作数的指令。,二、指令的操作码 指令系统中的每一条指令都有唯一确定的操作码。 操作码位数取决于机器指令系统的规模。 1.固定长度操作码 操作码的长度固定,且集中放在指令字的一 个字段中,其余部分全部用于地址码。 此方式有利于简化硬件设计和减少指令译码 时间,用于字长较长的大、中型及超级小型机中。,2.可变长度操作码 操作码的长度允许有几种不同的选择,对地址 数少的指令允许操作码长些,对地址数多的指令, 则操作码就短些。 若指令长度一定,则操作码字段与地址码字 段之

17、间存在平衡问题一般均采用 “扩展操作码” 的 方法。, 扩展操作码 目的:在满足需要的前提下,有效地缩短指令字长。 例:设某机指令字长为16位,若固定OP为4位,三个地址 码,每个4位,其格式为:,若采用固定长度操作码,则最多只允许有16种三地址指令。,15/15/15扩展法,15条三地址指令、14条二地址指令、31条一地址指 令、16条0地址指令,共76条指令,其扩展方法如下:,Pentium 的指令格式: 指令长度是可变的,从1个字节到12个字节 。,MOD字段与R/M字段:5位,表示8个寄存器和24种寻址方法,3.3 指令集结构设计,一、指令系统的基本要求 1. 完备性 任何运算都可以用

18、指令编程实现。即要求指令系 统的指令丰富、功能齐全、使用方便,应具有所有基 本指令。 2. 有效性 用指令系统中的指令编写的程序能高效率运行,占 用空间小、执行速度快。 3. 规整性,指令系统具有对称性、匀齐性,指令与数据格式的一致性。 对称性:所有寄存器和存储单元均同等对待,所有 指令可以使用所有寻址方式,减少特殊操 作和例外情况。 匀齐性:一种操作可支持各种数据类型。 指令与数据格式的一致性:指令长度与数据长度有 一定的关系,以便于存取和处理。 4. 兼容性,二、指令系统的两种设计风格 1. 复杂指令系统计算机 CISC 靠增强指令的功能,增加指令系统的复杂程 度来提高计算机系统的性能。

19、特点: (1) 指令系统复杂庞大,指令数目一般多达 200300条。 (2) 指令格式多,指令字长不固定,使用多种不 同的寻址方式。 (3) 可访存指令不受限制。 (4) 各种指令的执行时间和使用频率相差很大。 (5) 大多数采用微程序控制器。,2. 精简指令系统计算机RISC 靠精简指令系统,简化指令功能及优化的编译程序 来提高计算机系统的性能。 特点: (1) 选取使用频率高的简单指令以及很有用但又不复杂 的指令组成指令系统。 (2) 指令数少,指令长度一致,指令格式少,寻址方式 少,指令总数大都不超过100条。 (3) 以寄存器 寄存器方式工作,只有取数/存数 (LOAD/STORE)指

20、令访问存储器,其余指令的操作都 在寄存器之间进行。 (4) 采用指令流水线调度,使大部分指令在一个机器周 期内完成。,(5) 使用较多的通用寄存器以减少访存。 (6) 以组合电路控制为主,不用或少用微程序控制。 (7) 采用优化编译技术,力求高效率支持高级语言的 实现。,3.4 相对简单的指令集结构,存储器模型:该微处理器可以访问64K(216)字节 的存储器(每字节8位)或者64K8的 存储器。从外部设备输入数据和输出数 据到外部设备,都可以被看作是访问内 存。,三个寄存器:累加器(AC)、寄存器R、1位零标志Z。,16条指令,每一条都是8位指令码,见表3.1。,表3.1 相对简单CPU的指

21、令集,LDAC、STAC、JUMP、JMPZ和JPNZ指令都需要16位的存储地址。这些指令在存储器中每个都需要3字节。第一个字节包含指令的操作码,另外两字节对应地址。,3字节格式 1字节格式,相对简单CPU的指令格式:,例如:25:JUMP 1234H 该指令以如下形式存储在存储器中: 25:0000 0101(JUMP) 26:0011 0100(34H) 27:0001 0010(12H),注意:第二字节低8位,第三字节高8位,指令集结构的用法举例: 用相对简单CPU编程计算12n 。 则其高级语言的代码片断如下:,可以把数值n存储在标明为n的存储单元中,结果存在标明为total的内存单元

22、处,内存单元i用于存储求和的次数。确定运算步骤如下:,total 0; FOR i1 TO n DO totaltotali;,1:total0,i0 2:ii1 3:totaltotali 4:IF in THEN GOTO 2,实现这一算法的相对简单CPU的代码如下: CLAC STAC total STAC i Loop: LDAC i INAC STAC i MVAC LDAC total ADD STAC total MVAC LDAC n SUB JPNZ Loop,total0,i0,ii1,totaltotali,IF in THEN GOTO Loop,下表显示了当n5时代码

23、的运行过程:,表3.2 循环求和程序的执行步骤,怎样看待这个指令集结构?,它满足了以教学为目的的设计目标。当我们在第6和7章中设计这种CPU时我们就会看到,其复杂度足以阐明很多CPU的设计原则,却又没有掉进自身复杂度的陷阱中。 对于简单的应用程序来说,指令集完整。如果一个应用程序需要使用浮点型数据,它就不是十分完整。对于通用计算机(例如个人计算机),该指令集显然是不够的。 该指令集是相当正交的。只是多了OR指令,但有时CPU的指令集不是完全正交更好一些。 寄存器组是它最大的弱点。寄存器的缺乏导致执行任务较慢,并且降低了性能。,3.5 实例:8085微处理器指令集结构,3.5.1 8085微处理

24、器的寄存器组,通用数据寄存器: 累加寄存器A - 总是接收一个8位的算术或逻辑指令的结果;也为所有采用二操作数的指令提供一个操作数。 六个通用寄存器 - 命名为B,C,D,E,H和L ,可成对访问:B和C,D和E,H和L 。寄存器对HL常用来指向内存单元。,16位的堆栈指针寄存器SP:包含堆栈顶部的地址。,5个标志,共同称为标志寄存器:, 符号标志S:表明算术或逻辑指令计算出的结果的符号。其中,值1表示负数;值0表示正数(或零)。 零标志Z:如果算术或逻辑运算指令产生的结果为0,则将Z置为1;否则Z为0。 奇偶标志P:如果算术或逻辑运算结果中有偶数个1,则将P置为1;否则P为0。 进位标志CY

25、:当算术运算产生进位时才去设置它。, 辅助进位标志AC:与进位标志类似。它不指明进位值,但指出从结果的低四位向高四位传递了进位。 例如,加法0000 11110000 10000001 0111,中断标志寄存器IM:用于允许和禁止中断而且检查待处理的中断。程序员可以读取并且设置该寄存器中的值来处理中断。,例如,加法1111 00001000 00001 0111 0000,对两个8位值相加但产生了9位结果。最左边的1被存储在CY中;如果加法不产生进位1,则CY中会存储0。,3.5.2 8085微处理器指令集,8085指令集总共包含了74条指令。 可分为三个部分:数据传送指令、数据运算指令和程序

26、控制指令。 采用如下记号描述:, r,r1,r2:表示任何一个8位寄存器A,B,C,D,E,H,或者L。 M:表示内存单元。MHL表明该内存单元的地址存在寄存器对HL中。 rp:表示寄存器对BC,DE,HL,或者堆栈指针SP。 :一个16位地址或者数据。 n:是一个存储在内存中且紧跟操作码后的8位地址或者数据值。 cond:条件指令的一个条件。值为:NZ、Z、P、N、PO、PE、NC、C。,除了POP PSW指令外,其它指令都不会修改标志的值。 (PSW:处理器状态字(保存累加器和标志器中的内容 ),表3.3 8085微处理器的数据传送指令,(立即寻址),(直接寻址),指令的通用格式。一些指令

27、有指定寄存器的字段,而另一些指令这些部分却是固定的。,图3.6 8085的指令格式,一字节,二字节,数据运算指令,大多数会影响表中的标志。,表3.4 8085微处理器的数据运算指令,13条程序控制指令。DI,EI,RIM和SIM包含在此因为它们可以处理中断,而中断最终又会影响程序控制。这些指令都不修改标志。,表3.5 8085微处理器的程序控制指令,3.5.3 一个简单的8085程序,计算和12n,并且把结果存储于内存单元total中 。n值最初存于标志为n的内存单元中。 当设计此程序时,我们计算如n(n1)1形式的总和。 算法如下:,与相对简单CPU中的程序不同,8085程序把它的运行值存储

28、在CPU寄存器中。寄存器B包含数值i,总和存储在寄存器A中。,1: in,sum0 2:sumsumi,ii1 3:IF i0 THEN GOTO 2 4:totalsum,执行该算法的8085代码如下: LDA n MOV B,A XRA A sumAA0 Loop: ADD B sumsumi DCR B ii1 JNZ Loop IF i0 THEN GOTO Loop STA total totalsum,in,运行值存储在CPU寄存器,减少了内存访问次数,程序更短、运行速度更快,该程序仅需要七条指令,而对于相对简单CPU的程序则需要13条指令。它的循环段(执行了n次)仅需要三条指令;

29、而对于相对简单CPU同样的循环则需要10条指令。,当n5时,它的运算过程。,表3.6 8085循环求和程序执行步骤,3.5.4 分析8085指令集结构,完备性:8085微处理器的指令集要比相对简单CPU的更完备,而且适合于像微波炉控制器这样的应用。但是,对于像个人计算机这样更复杂的应用,它就不能够满足需要了。,与相对简单CPU相比,8085微处理器一个最明显的优势就是它的调用子程序的能力。还结合了中断。但不能很容易地处理浮点数据。,正交性:指令集也是相当正交的。 例如它没有清空累加器指令,而使用 XRA A将累加器与自身作异或运算,使A值始终置为0。,寄存器组:8085的寄存器组比较充足,有更多的标志位。,3.6 总 结,在设计微处理器的过程中,确定指令集结构是第一步也算是最重要的一步。ISA规定了微处理器能为人所看到的外部特性,包括:指令集,用户可访问的寄存器,以及如何与内存交互。,高级语言程序被编译和连接后形成机器语言程序。汇编语言程序经汇编后生成机器语言程序。微处理器实际执行这些机器语言程序 。,设计ISA的目标包括:完备性,即指令集应该包括编程所需的指令;正交性,即指令尽量最小重叠;还应该包含足够的寄存器以提高处理器的性能。,ISA不但规定指令集,也规定指令所能处理的数据类型,及每条指令所采用的寻址方式和指令格式。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1