1、第三章 指令集结构3.1 3.1 程序设计语言的级别程序设计语言的级别3.2 3.2 机器语言指令机器语言指令3.3 3.3 指令集结构设计指令集结构设计3.4 3.4 相对简单的指令集结构相对简单的指令集结构3.5 3.5 实例实例3.1 程序设计语言的级别 3.1.1 语言种类 高级语言(高级语言(high-level languageshigh-level languages) 汇编语言(汇编语言(assembly languageassembly language) 向下兼容(backward compatible) 平台无关(platform-independent) 机器语言机器语
2、言3.1.2 编译和汇编程序 1. 1. 编译、汇编编译、汇编2. 2. 编译器编译器 源程序、源代码、目标代码源程序、源代码、目标代码 连接器连接器、装载器装载器3. 3. 编译过程编译过程 同一高级语言源代码可以经过编译在不同一高级语言源代码可以经过编译在不 同的微处理器和操作系统或者计算平台上运行同的微处理器和操作系统或者计算平台上运行。图图3.1 3.1 高级程序的编译过程高级程序的编译过程 装载器包含在计算平台中装载器包含在计算平台中 4.4.汇编器和汇编过程汇编器和汇编过程 图图3.2 3.2 汇编语言程序的汇编过程汇编语言程序的汇编过程 每一种汇编语言对应一种微处理器,不需要针对
3、不同平台的汇编器 。1. 1. 什么是指令?什么是指令?指令指令:指示计算机执行某种操作的命令。指示计算机执行某种操作的命令。机器语言机器语言:计算机硬件实体直接表示控制信息的语言。计算机硬件实体直接表示控制信息的语言。 (计算机硬件能直接理解并执行的语言计算机硬件能直接理解并执行的语言)指令集指令集一台计算机能执行的全部指令的集合。一台计算机能执行的全部指令的集合。 (计算机程序员接触到的计算机的所有功能计算机程序员接触到的计算机的所有功能) 一条指令就是机器语言的一个语句,用来说明机器一条指令就是机器语言的一个语句,用来说明机器硬件应完成的操作。硬件应完成的操作。 3.1.3 机器语言与指
4、令 指令集指令集表征着计算机的表征着计算机的基本功能和使用属性基本功能和使用属性,是计,是计算机系统设计中的算机系统设计中的核心向题核心向题。是表征一台计算机性能的。是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用结构,而且也直接影响到系统软件,影响到机器的适用范围。范围。操作码地址码2. 2. 指令的组成指令的组成 一条指令一般应包含如下信息:一条指令一般应包含如下信息: (1) (1) 操作码操作码 (2) (2) 操作数的地址操作数的地址 (3) (3) 操作结果的地址操
5、作结果的地址 (4) (4) 下一条指令地址下一条指令地址 指令的基本格式指令的基本格式操作码操作码:表示指令应执行的操作和应具有的功能。表示指令应执行的操作和应具有的功能。地址码:地址码:表示参与操作的操作数的存放地址或操作结表示参与操作的操作数的存放地址或操作结 果的存放地址。果的存放地址。3.2 机器语言指令 3.2.1 指令类型与功能 3.2.1.1 3.2.1.1 数据传送指令数据传送指令 将数据从一个地方移到另一个地方(实际是将数据从一个地方移到另一个地方(实际是“拷贝拷贝”)。)。 例:例: 8086 8086指令指令 MOV ALMOV AL,BL BL ;ALBLALBL M
6、OV AL MOV AL,Disp(BX)(SI) Disp(BX)(SI) ;AL(BX)(SI)+DispAL(BX)(SI)+Disp) ) IBM370 IBM370机的成组取指令:机的成组取指令:成组取R1R3B2D23.2.1.2 3.2.1.2 数据运算指令数据运算指令 包括包括算术运算算术运算指令、指令、逻辑运算逻辑运算指令指令 、移位移位指令。指令。例:例:80868086指令系统中指令系统中 ADD ALADD AL,BL BL ;ALAL+BLALAL+BL MUL BL MUL BL ;AXALAXALBLBL AND AL AND AL,0FEH 0FEH ;ALAL
7、FEHALALFEH,即,即ALAL的最低位的最低位 ;清;清0 0,其余位不变。,其余位不变。 OR ALOR AL,0F0H 0F0H ;ALALF0ALALF0,即,即ALAL的高的高4 4位置位置1 1, ;其余位不变;其余位不变 TEST ALTEST AL,00000001B 00000001B ; AL00000001BAL00000001B A A0 00 0 结果为结果为0 0 ;A A0 01 1 结果不为结果不为0 0 移位指令移位指令 实现对操作数的左、右移位。实现对操作数的左、右移位。 移位操作指令分为移位操作指令分为算术移位算术移位、逻辑移位逻辑移位和和 循环移位循
8、环移位三种,可以实现对操作数左移或右移三种,可以实现对操作数左移或右移 一位或几位。一位或几位。 3.2.1.3 3.2.1.3 程序控制指令程序控制指令 控制程序流程的指令,包括:控制程序流程的指令,包括:跳转跳转指令(条件或无指令(条件或无条件)条件)或分支或分支指令、指令、子程序调用子程序调用和和子程序返回子程序返回指令、指令、“软中断软中断”指令、指令、停机停机指令。指令。3.2.2 数据类型 数值数据数值数据 无符号整型数、有符号整型数、浮点数据无符号整型数、有符号整型数、浮点数据 布尔类型布尔类型 数据值常以数据值常以0 0表示表示FALSEFALSE,以,以非非0 0表示表示TR
9、UETRUE 字符数据字符数据 字符编码标准字符编码标准 (ASCII、EBCDIC、UNICODE、或别的)例:例:80868086指令系统指令系统JMP L1JMP L1 ;直接寻址的转移,无条件转移到;直接寻址的转移,无条件转移到L1L1处,处,JNZ 50HJNZ 50H ;相对寻址的转移。若操作结果不为;相对寻址的转移。若操作结果不为0 0,则,则转移到当前转移到当前PCPC50H50H处。设指令地址为处。设指令地址为1000H1000H,则当前,则当前PCPC1002H1002H,转移地址为:,转移地址为:1002H1002H50H50H1052H1052H3.2.3 寻址方式 寻
10、址方式寻址方式:确定操作数地址的方法。确定操作数地址的方法。 形式地址:形式地址:指令中直接给出的地址。指令中直接给出的地址。 有效地址:有效地址:形式地址经一定的计算而得到的操作数的形式地址经一定的计算而得到的操作数的 实际地址。实际地址。3.2.3.1 3.2.3.1 直接寻址直接寻址 指令字中直接给出操作数指令字中直接给出操作数的有效地址。的有效地址。 例:例:Intel 8086Intel 8086指令指令 MOV AXMOV AX,2000H2000H 将有效地址为将有效地址为2000H2000H的内存单元的内容读入累加器的内存单元的内容读入累加器AXAX中。中。 例如:例如:LDA
11、C 5LDAC 5 从内存单元从内存单元5 5读取数据并且把数据存储在读取数据并且把数据存储在CPUCPU的累加器中。的累加器中。 这种方式简单直观,便于硬件实现。但随着存储器容这种方式简单直观,便于硬件实现。但随着存储器容 量不断扩大,要寻址整个主存空间,将造成指令长度量不断扩大,要寻址整个主存空间,将造成指令长度 加长。另外程序位置受到限制。加长。另外程序位置受到限制。3.2.3.2 3.2.3.2 间接寻址间接寻址指令中指定的指令中指定的是是含含有有操作数操作数地址的地址的内存单元的内存单元的地址地址。至少至少要进行两次内存访问。要进行两次内存访问。例如:例如:LDACLDAC 5 5
12、或或 LDACLDAC (5 5)OP5IR10操作数35操作数的地址105 间接寻址的特点间接寻址的特点 间接寻址比直接寻址灵活,可扩大寻址范围,以短间接寻址比直接寻址灵活,可扩大寻址范围,以短 的地址码访问大的存储空间。的地址码访问大的存储空间。 采用间接寻址,当操作数地址需要改变时,可不必采用间接寻址,当操作数地址需要改变时,可不必 修改指令,只要修改地址指示字中内容修改指令,只要修改地址指示字中内容( (即存放有效即存放有效 地址的单元内容地址的单元内容) )即可。即可。 间接寻址需多次访存才能取得操作数,因而降低了间接寻址需多次访存才能取得操作数,因而降低了 指令的执行速度。指令的执
13、行速度。3.2.3.3 3.2.3.3 寄存器直接寻址和寄存器间接寻址寄存器直接寻址和寄存器间接寻址 寄存器寻址寄存器寻址 与直接和间接寻址方式相似,但指定的是寄存器,而与直接和间接寻址方式相似,但指定的是寄存器,而 不是内存单元。不是内存单元。 寄存器存取信息的速度比主存快,需要的地址短,可寄存器存取信息的速度比主存快,需要的地址短,可 压缩指令长度,有利于加快指令执行速度。但寄存器压缩指令长度,有利于加快指令执行速度。但寄存器 的数量有限。的数量有限。 寄存器寄存器直接寻址直接寻址OP寄存器寻址Rn操作数操作数RnRn例如:假设寄存器R中存储了数值5,则: LDAC R ;把数值5从寄存器
14、R中拷贝到CPU的累加器中例如:假设寄存器R中存储了数值5,则: LDAC (R) 或 LDAC R ;相当于 LDAC 5,从寄存器R中获取地址 寄存器寄存器间接寻址间接寻址3.2.3.4 3.2.3.4 立即值寻址立即值寻址指定的操作数不是一个地址,而是确实要用到的数据。指定的操作数不是一个地址,而是确实要用到的数据。例如:例如: Intel 8086Intel 8086指令指令 MOV AXMOV AX,2000H2000H ;将数据;将数据2000H2000H存入累加器存入累加器AXAX中中例如:例如:LDAC #5LDAC #5 ;把数据值;把数据值5 5移到累加器中移到累加器中OP
15、立即寻址D 这种寻址方式在取指令的同时操作数即被取出,这种寻址方式在取指令的同时操作数即被取出,不必再次访问存储器,提高了指令执行速度。但由不必再次访问存储器,提高了指令执行速度。但由于指令字有限,使得数据范围受限。于指令字有限,使得数据范围受限。3.2.3.5 3.2.3.5 隐含寻址隐含寻址 并不明确地指出操作数,因为总是用到特定的寄存器。并不明确地指出操作数,因为总是用到特定的寄存器。例如:例如: CLACCLAC ;清空;清空CPUCPU中的累加器,即将其值置为中的累加器,即将其值置为0 0 常用于用堆栈存储数据的常用于用堆栈存储数据的CPUCPU中。指令中不需要指定中。指令中不需要指
16、定操作数,因为它暗示操作数一定来自堆栈。操作数,因为它暗示操作数一定来自堆栈。 堆栈及堆栈操作 一种按一种按“后进先出后进先出”存取顺序进行存取的存储结构存取顺序进行存取的存储结构 堆栈操作指令是一种特殊的数据传送指令堆栈操作指令是一种特殊的数据传送指令 堆栈有两种生成方式堆栈有两种生成方式 自底向上生成方式自底向上生成方式:栈底占最高地址,栈顶为较低地:栈底占最高地址,栈顶为较低地 址,压入数据时,按由高地址向低地址顺序进行,弹出址,压入数据时,按由高地址向低地址顺序进行,弹出 数据数据(即取出数据即取出数据)时,由低地址向高地址顺序进行。时,由低地址向高地址顺序进行。 自顶向下生成方式自顶
17、向下生成方式:与自底向上生成方式顺序相反。:与自底向上生成方式顺序相反。自底向上生成堆栈的工作过程自底向上生成堆栈的工作过程 堆栈操作有两种堆栈操作有两种 压入(进栈)指令:把指定的操作数送入栈顶。压入(进栈)指令:把指定的操作数送入栈顶。 SPSP减量,减量,(SP)数据数据 弹出(退栈、出栈)指令:从栈顶弹出数据,送到弹出(退栈、出栈)指令:从栈顶弹出数据,送到 指令指定的目的地址中。指令指定的目的地址中。 目的目的(SP),SPSP增量增量例:例:80868086的指令系统中的指令系统中 进栈指令:进栈指令:PUSH AXPUSH AX SPSP SPSP1 1,(SP)AH(SP)AH
18、,SPSPSPSP1 1,(SP)AL(SP)AL 出栈指令出栈指令:POP AXPOP AX AL(SP) AL(SP),SPSPSPSP1 1,AH(SP)AH(SP),SPSPSPSP1 1低地址ALAH高地址SPSPSP-1SP-1SP-1SP-1低地址ALAH高地址SP+1SP+1SP+1SP+1SPSPALALAHAH3.2.3.6 3.2.3.6 相对寻址相对寻址 将程序计数器将程序计数器 PC PC 的当前内容与指令中给出的形式地址的当前内容与指令中给出的形式地址相加形成操作数的有效地址。相加形成操作数的有效地址。 有效地址有效地址E E(PC)(PC)DispDisp 程序计
19、数器程序计数器 PCPC的内容的内容一般为现行指令的下一条指令的一般为现行指令的下一条指令的 地址。地址。 形式地址形式地址是操作数地址相对于是操作数地址相对于PCPC当前内容的一个相对当前内容的一个相对 位移量位移量(DispDisp),位移量可正可负,一般用补码表示。),位移量可正可负,一般用补码表示。 在相对寻址中,只要保持位移量不变,就可实现指令在相对寻址中,只要保持位移量不变,就可实现指令 带着数据在存储器中浮动,有利于实现程序再定位带着数据在存储器中浮动,有利于实现程序再定位。KOP 相对寻址 5K+1K+2K+6操作数MOP 相对寻址 5M+1M+2M+6操作数 例:例:8086
20、8086指令指令 JNC 03HJNC 03H 的功能为,如果进位为的功能为,如果进位为0 0,则,则转移到目标地址为转移到目标地址为 (PC)(PC)03H03H处进行执行。处进行执行。设指令为双字节指令,本条指令地址为设指令为双字节指令,本条指令地址为1000H1000H。本条指令取指后,本条指令取指后,PCPC1002H1002H转移目标地址为转移目标地址为 1002H1002H0003H0003H1005H1005H若指令若指令为为JNC 0FDHJNC 0FDH 则转移目标地址为则转移目标地址为1002H1002HFFFDHFFFDH0FFFH0FFFH0FFDH0FFEH0FFFH
21、1000HJNC1001H03H1002H1003H1004H1005HDFDHD03H3.2.3.7 3.2.3.7 变址寻址方式和基址寻址变址寻址方式和基址寻址1.1.变址寻址方式变址寻址方式 变址寻址方式变址寻址方式与相对寻址方式类似,但它是将与相对寻址方式类似,但它是将指令提供的地址与指令提供的地址与变址寄存器变址寄存器中而不是程序计数器中中而不是程序计数器中的内容相加。的内容相加。 例如:例如: Intel 8086Intel 8086指令指令 MOV ALMOV AL,BX+4BX+4 设设 BXBX2000H2000H,BX+4BX+42004H2004H (2004H) (20
22、04H)82H82H,则,则 AL82HAL82H例如:例如: LDAC 5(X)LDAC 5(X) ;变址寄存器变址寄存器X X:数值数值1010,则,则 5 510101515 ;读取;读取1515号号单元中的数据并且把它存储在累加器中。单元中的数据并且把它存储在累加器中。 变址寻址可用于数组、向量、字符串等数据的处理变址寻址可用于数组、向量、字符串等数据的处理 例:例: Intel 8086Intel 8086指令指令 LODS LODS ;AL(SI)AL(SI),SISISISI1 1SIAAa0A1a1A2a2+1+12 2基址寻址基址寻址 操作数的有效地址等于指令中的形式地址与基
23、址操作数的有效地址等于指令中的形式地址与基址 寄存器中的内容之和。寄存器中的内容之和。 基址寄存器可以是一个专用的寄存器,也可以是基址寄存器可以是一个专用的寄存器,也可以是 由指令指定的一个通用寄存器。由指令指定的一个通用寄存器。 基址寻址主要用于将用户程序的基址寻址主要用于将用户程序的逻辑地址逻辑地址(用户编写(用户编写 程序时所使用的地址)转换成主存的程序时所使用的地址)转换成主存的物理地址物理地址(程序(程序 在主存中的实际地址)。在主存中的实际地址)。 基址寻址与变址寻址在形式上以及有效地址的计算基址寻址与变址寻址在形式上以及有效地址的计算 方法上都是相似的,但它们的应用场合是不同的。
24、方法上都是相似的,但它们的应用场合是不同的。 基址寻址是面向系统的基址寻址是面向系统的,主要用于逻辑地址到,主要用于逻辑地址到 物理地址的变换,用以解决程序定位问题。基址寄物理地址的变换,用以解决程序定位问题。基址寄 存器由系统程序使用,对用户是透明的。存器由系统程序使用,对用户是透明的。 变址寻址是面向用户的变址寻址是面向用户的,主要用于访问数组、,主要用于访问数组、 向量、字符串等成批数据,用以解决程序的循环控向量、字符串等成批数据,用以解决程序的循环控 制问题。制问题。3.2.4 指令格式操作码地址码指令的基本格式:指令的基本格式:指令格式的设计包含两个方面:指令格式的设计包含两个方面:
25、 1. 确定指令的长度;确定指令的长度; 2. 划分指令的字段,定义各字段的位数、含义划分指令的字段,定义各字段的位数、含义 。一、指令长度 指令字长度指令字长度:一个指令字所包含的二进制信息的位数。:一个指令字所包含的二进制信息的位数。 定长指令定长指令:指令系统中所有指令的长度都是一样的。:指令系统中所有指令的长度都是一样的。 可变长指令可变长指令:各指令的长度可以不同。:各指令的长度可以不同。 指令长度与机器字长指令长度与机器字长二.指令的地址码 考虑的问题:需要多少地址信息及如何给出地址。考虑的问题:需要多少地址信息及如何给出地址。1. 1. 零地址指令零地址指令 格式:格式: (1)
26、 (1) 无需任何操作数无需任何操作数, , 如空操作,停机等指令。如空操作,停机等指令。 (2) (2) 所需操作数是隐含指定的,如堆栈运算指令。所需操作数是隐含指定的,如堆栈运算指令。2. 2. 一地址指令一地址指令 格式:格式: 意义:意义: (1) A OP (A) (2) AC (AC) OP (A)OPOPA指令短,节省空间,执行快,常用于微、小型机中。指令短,节省空间,执行快,常用于微、小型机中。3. 3. 二地址指令二地址指令 格式:格式: 意义:意义: A1 (A1) OP (A2) 最常用的指令格式,适用于中、小、微型机。最常用的指令格式,适用于中、小、微型机。OPA1A2
27、 二地址指令的几种形式二地址指令的几种形式 存储器存储器存储器型(存储器型(S SS S型)指令型)指令 寄存器寄存器寄存器型(寄存器型(R RR R型)指令型)指令 寄存器寄存器存储器型存储器型(R RS S型)指令型)指令OPR1R2OPRnA4. 三地址指令三地址指令 格式:格式: 意义:意义: A3 (A1) OP (A2) 常用于大、中型机中。常用于大、中型机中。OPA1A2A35. 5. 多地址指令多地址指令 考虑一个简单的例子:ABC 一个操作: 加法 三个操作数: 两个源操作数 B、C 一个目的操作数 A 假定微处理器可以执行16种不同的操作。 需要4位来代表其中的操作(因为2
28、416) (假设位模式1010 加法) 假定仅有4种可能的操作数A,B,C和D。 用两位来表示每一种操作数: 00A ,01B ,10C ,11D图图3.4 3.4 采用采用(a)(a)三操作数,三操作数,(b)(b)二操作数,二操作数,(c)(c)单操作数,单操作数,(d)0(d)0操作数的指操作数的指令格式和计算令格式和计算A AB BC C的汇编语言程序以及机器代码。的汇编语言程序以及机器代码。 微处理器可以设计成能运行具有3、2、1或0个操作数的指令。 二、指令的操作码 指令系统中的每一条指令都有唯一确定的操作码。指令系统中的每一条指令都有唯一确定的操作码。 操作码操作码位数取决于机器
29、指令系统的规模。位数取决于机器指令系统的规模。 1.1.固定长度操作码固定长度操作码 操作码的长度固定,且集中放在指令字的一操作码的长度固定,且集中放在指令字的一 个字段中,其余部分全部用于地址码。个字段中,其余部分全部用于地址码。 此方式有利于简化硬件设计和减少指令译码此方式有利于简化硬件设计和减少指令译码 时间,用于字长较长的大、中型及超级小型机中。时间,用于字长较长的大、中型及超级小型机中。 2.2.可变长度操作码可变长度操作码 操作码的长度允许有几种不同的选择,对地址操作码的长度允许有几种不同的选择,对地址 数少的指令允许操作码长些,对地址数多的指令,数少的指令允许操作码长些,对地址数
30、多的指令, 则操作码就短些。则操作码就短些。 若指令长度一定,则若指令长度一定,则操作码操作码字段与字段与地址码地址码字字 段之间存在平衡问题一般均采用段之间存在平衡问题一般均采用 “扩展操作码扩展操作码” 的的 方法。方法。 扩展操作码扩展操作码 目的:目的:在满足需要的前提下,有效地缩短指令字长。在满足需要的前提下,有效地缩短指令字长。 例例设某机指令字长为设某机指令字长为1616位,若固定位,若固定OPOP为为4 4位,三个地址位,三个地址 码,每个码,每个4 4位,其格式为:位,其格式为:OPA1A2A3若采用固定长度操作码,则最多只允许有若采用固定长度操作码,则最多只允许有1616种
31、三地址指令。种三地址指令。0 0 0 01 1 1 1条条零零地地址址指指令令条条单单地地址址指指令令条条二二地地址址指指令令条条三三地地址址指指令令161515151111 1111 1111 11110000 1111 1111 1111xxxx 1110 1111 1111xxxx 0000 1111 1111xxxx xxxx 1110 1111xxxx xxxx 0000 1111xxxx xxxx xxxx 1110 xxxx xxxx xxxx 000015/15/1515/15/15扩展法扩展法 1515条三地址指令、条三地址指令、1414条二地址指令、条二地址指令、3131条
32、一地址指条一地址指 令、令、1616条条0 0地址指令,共地址指令,共7676条指令,其扩展方法如下:条指令,其扩展方法如下:0 0 0 01 1 1 00 0 0 115条三地址指令1 1 1 11 1 1 11 1 0 114条二地址指令0 0 0 01 1 1 11 1 1 11 1 1 031条一地址指令1 1 1 00 0 0 01 1 1 11 1 1 11 1 1 116条0地址指令1 1 1 11 1 1 10 0 0 01 1 1 11 1 1 11 1 1 1Pentium 的指令格式:的指令格式: 指令长度是可变的,从指令长度是可变的,从1个字节到个字节到12个字节个字节
33、 。前缀 操作码 MOD Reg/OP R/M 比例 S 变址 I 基址 B 位移量 立即数 模式 额外模式字节SIB 字节数 04 12 01 01 04 04 2 位 3位3 3 位 2 位 3 位1 3位 MODMOD字段与字段与R/MR/M字段:字段:5 5位位,表示,表示8 8个个寄存器和寄存器和2424种种寻址方法寻址方法 rt 操作码 rs 6 5 5 6 rt 5 rd 26 funct (b) R 类指令 操作码 6 与 PC 相加的偏移量 (a) I 类指令 (c) J 类指令 rs 立即数(immediate) 操作码 6 5 5 16 0 5 6 10 11 15 16
34、 31 0 5 6 10 11 15 16 31 31 20 21 0 5 6 shamt 25 26 5 3.3 指令集结构设计 一、指令系统的基本要求1. 1. 完备性完备性 任何运算都可以用指令编程实现。即要求指令系任何运算都可以用指令编程实现。即要求指令系 统的指令丰富、功能齐全、使用方便,应具有所有基统的指令丰富、功能齐全、使用方便,应具有所有基 本指令。本指令。2. 2. 有效性有效性 用指令系统中的指令编写的程序能高效率运行,占用指令系统中的指令编写的程序能高效率运行,占 用空间小、执行速度快。用空间小、执行速度快。3. 3. 规整性规整性 指令系统具有对称性、匀齐性,指令与数据
35、格式指令系统具有对称性、匀齐性,指令与数据格式的一致性。的一致性。 对称性:对称性:所有寄存器和存储单元均同等对待,所有所有寄存器和存储单元均同等对待,所有 指令可以使用所有寻址方式,减少特殊操指令可以使用所有寻址方式,减少特殊操 作和例外情况。作和例外情况。 匀齐性:匀齐性:一种操作可支持各种数据类型。一种操作可支持各种数据类型。 指令与数据格式的一致性:指令与数据格式的一致性:指令长度与指令长度与数据长度有数据长度有 一定的关系,以便于存取和处理。一定的关系,以便于存取和处理。4. 4. 兼容性兼容性 二、指令系统的两种设计风格 1. 1. 复杂指令系统计算机复杂指令系统计算机 CISCC
36、ISC 靠增强指令的功能,增加指令系统的复杂程靠增强指令的功能,增加指令系统的复杂程 度来提高计算机系统的性能。度来提高计算机系统的性能。 特点:特点: (1) (1) 指令系统复杂庞大,指令数目一般多达指令系统复杂庞大,指令数目一般多达 200200300300条。条。 (2) (2) 指令格式多,指令字长不固定,使用多种不指令格式多,指令字长不固定,使用多种不 同的寻址方式。同的寻址方式。 (3) (3) 可访存指令不受限制。可访存指令不受限制。 (4) (4) 各种指令的执行时间和使用频率相差很大。各种指令的执行时间和使用频率相差很大。 (5) (5) 大多数采用微程序控制器。大多数采用
37、微程序控制器。2. 2. 精简指令系统计算机精简指令系统计算机RISCRISC 靠精简指令系统,简化指令功能及优化的编译程序靠精简指令系统,简化指令功能及优化的编译程序 来提高计算机系统的性能。来提高计算机系统的性能。 特点:特点: (1) (1) 选取使用频率高的简单指令以及很有用但又不复杂选取使用频率高的简单指令以及很有用但又不复杂 的指令组成指令系统。的指令组成指令系统。 (2) (2) 指令数少,指令长度一致,指令格式少,寻址方式指令数少,指令长度一致,指令格式少,寻址方式 少,指令总数大都不超过少,指令总数大都不超过100100条。条。 (3) (3) 以寄存器以寄存器 寄存器方式工
38、作,只有取数寄存器方式工作,只有取数/ /存数存数 (LOAD/STORE)(LOAD/STORE)指令访问存储器,其余指令的操作都指令访问存储器,其余指令的操作都 在寄存器之间进行。在寄存器之间进行。 (4) (4) 采用指令流水线调度,使大部分指令在一个机器周采用指令流水线调度,使大部分指令在一个机器周 期内完成。期内完成。(5) (5) 使用较多的通用寄存器以减少访存。使用较多的通用寄存器以减少访存。(6) (6) 以组合电路控制为主,不用或少用微程序控制。以组合电路控制为主,不用或少用微程序控制。(7)(7) 采用优化编译技术,力求高效率支持高级语言的采用优化编译技术,力求高效率支持高
39、级语言的 实现。实现。 机器名机器名 指令数指令数 机器名机器名 指令数指令数 RISC 39 ACORN 44 MIPS 31 INMOS 111 IBM 801 120 IBMRT 118 MIRIS 64 HPPA 140 PYRAMID 128 CLIPPER 101 RIDGE 128 SPARC 89 3.4 相对简单的指令集结构存储器模型:该微处理器可以访问64K(216)字节 的存储器(每字节8位)或者64K8的 存储器。从外部设备输入数据和输出数 据到外部设备,都可以被看作是访问内 存。三个寄存器:累加器(AC)、寄存器R、1位零标志Z。16条指令,每一条都是8位指令码,见表
40、3.1。 InstructionInstruction InstructionInstruction CodeCode OperationOperation NOP 0000 0000 No operation LDAC 0000 0001 ACM STAC 0000 0010 MAC MVAC 0000 0011 RAC MOVR 0000 0100 ACR JUMP 0000 0101 GOTO JMPZ 0000 0110 IF(Z1)THEN GOTO JPNZ 0000 0111 IF(Z0)THEN GOTO ADD 0000 1000 ACACR,If(ACR0)Then Z1
41、Else Z0 SUB 0000 1001 ACACR,If(ACR0)Then Z1 Else Z0 INAC 0000 1010 ACAC1,If(AC10)Then Z1 Else Z0 CLAC 0000 1011 AC0,Z1 AND 0000 1101 ACACR,If(ACR0)Then Z1 Else Z0 OR 0000 1101 ACACR,If(ACR0)Then Z1 Else Z0 XOR 0000 1110 ACACR,If(ACR0)Then Z1 Else Z0 NOT 0000 1111 ACAC,If(AC0)Then Z1 Else Z0 表表3.1 3.
42、1 相对简单相对简单CPUCPU的指令集的指令集 LDAC、STAC、JUMP、JMPZ和JPNZ指令都需要16位的存储地址。这些指令在存储器中每个都需要3字节。第一个字节包含指令的操作码,另外两字节对应地址。 3 3字节格式字节格式 1 1字节格式字节格式 相对简单CPU的指令格式:例如:25:JUMP 1234H该指令以如下形式存储在存储器中: 25:0000 0101(JUMP) 26:0011 0100(34H) 27:0001 0010(12H)注意:第二字节低8位,第三字节高8位指令集结构的用法举例: 用相对简单CPU编程计算12n 。 则其高级语言的代码片断如下: 可以把数值n存
43、储在标明为n的存储单元中,结果存在标明为total的内存单元处,内存单元i用于存储求和的次数。确定运算步骤如下: total 0; FOR i1 TO n DO totaltotali; 1 1:total0,i0 2 2:ii1 3 3:totaltotali 4 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 Looptotal0,i0ii1totaltotal
44、iIF in THEN GOTO Loop指令指令 1st Loop1st Loop 2nd Loop2nd Loop 3rd Loop3rd Loop 4th Loop4th Loop 5th Loop5th Loop CLAC AC0 STAC total total0 STAC i i0 LDAC i AC0 AC1 AC2 AC3 AC4 INAC AC1 AC2 AC3 AC4 AC5 STAC i i1 i2 i3 i4 i5 MVAC R1 R2 R3 R4 R5 LDAC total AC0 AC1 AC3 AC6 AC10 ADD AC1 AC3 AC6 AC10 AC15
45、STAC total total1 total3 total6 total10 total15 LDAC n AC5 AC5 AC5 AC5 AC5 SUB AC4, Z0 AC3, Z0 AC2, Z0 AC1, Z0 AC0, Z0 JPNZ Loop JUMP JUMP JUMP JUMP NO JUMP 下表显示了当n5时代码的运行过程:表表3.2 3.2 循环求和程序的执行步骤循环求和程序的执行步骤 怎样看待这个指令集结构? 它满足了以教学为目的的设计目标。当我们在第6和7章中设计这种CPU时我们就会看到,其复杂度足以阐明很多CPU的设计原则,却又没有掉进自身复杂度的陷阱中。 对于简
46、单的应用程序来说,指令集完整。如果一个应用程序需要使用浮点型数据,它就不是十分完整。对于通用计算机(例如个人计算机),该指令集显然是不够的。 该指令集是相当正交的。只是多了OR指令,但有时CPU的指令集不是完全正交更好一些。 寄存器组是它最大的弱点。寄存器的缺乏导致执行任务较慢,并且降低了性能。 3.5 实例:8085微处理器指令集结构3.5.1 8085微处理器的寄存器组 通用数据寄存器: 累加寄存器A - 总是接收一个8位的算术或逻辑指令的结果;也为所有采用二操作数的指令提供一个操作数。 六个通用寄存器 - 命名为B,C,D,E,H和L ,可成对访问:B和C,D和E,H和L 。寄存器对HL
47、常用来指向内存单元。 16位的堆栈指针寄存器SP:包含堆栈顶部的地址。 5个标志,共同称为标志寄存器: 符号标志符号标志S S:表明算术或逻辑指令计算出的结果的符号。其中,值1表示负数;值0表示正数(或零)。 零标志零标志Z Z:如果算术或逻辑运算指令产生的结果为0,则将Z置为1;否则Z为0。 奇偶标志奇偶标志P P:如果算术或逻辑运算结果中有偶数个1,则将P置为1;否则P为0。 进位标志进位标志CYCY:当算术运算产生进位时才去设置它。 辅助进位标志辅助进位标志ACAC:与进位标志类似。它不指明进位值,但指出从结果的低四位向高四位传递了进位。 例如,加法0000 11110000 10000
48、001 0111中断标志寄存器IM:用于允许和禁止中断而且检查待处理的中断。程序员可以读取并且设置该寄存器中的值来处理中断。 例如,加法1111 00001000 00001 0111 0000,对两个8位值相加但产生了9位结果。最左边的1被存储在CY中;如果加法不产生进位1,则CY中会存储0。 3.5.2 8085微处理器指令集 8085指令集总共包含了74条指令。 可分为三个部分:数据传送指令、数据运算指令和程序控制指令。 采用如下记号描述: r r,r1r1,r2r2:表示任何一个8位寄存器A,B,C,D,E,H,或者L。 M M:表示内存单元。MHL表明该内存单元的地址存在寄存器对HL
49、中。 rprp:表示寄存器对BC,DE,HL,或者堆栈指针SP。 :一个16位地址或者数据。 n n:是一个存储在内存中且紧跟操作码后的8位地址或者数据值。 condcond:条件指令的一个条件。值为:NZ、Z、P、N、PO、PE、NC、C。除了POP PSW指令外,其它指令都不会修改标志的值。 (PSWPSW:处理器状态字(保存累加器和标志器中的内容:处理器状态字(保存累加器和标志器中的内容 ) 指令 操作操作 NOP No operation MOV r1,r2 r1r2 MOV r,M rMHL MOV M,r MHLr MVI r,n rn MVI M,n MHLn LXI rp, r
50、p LDA AM STA MA LHLD HLM,M1 SHDL M,M1HL 指令指令 操作操作 LDAX rp AMrp(rpBC,DE) STAX rp MrpA(rpBC,DE) XCHC DEHL PUSH rp Stackrp(rpSP) PUSH PSW StackA,flag register POP rp RpStack(rpSP) POP PSW A,flag registerStack XTHL HLStack SPHL SPHL IN n Ainput port n OUT n output port nA 表表3.3 80853.3 8085微处理器的数据传送指令微处
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。