计算机组成原理-第3章 指令集结构.

上传人:我** 文档编号:117876150 上传时间:2019-12-11 格式:PPT 页数:77 大小:607.50KB
返回 下载 相关 举报
计算机组成原理-第3章 指令集结构._第1页
第1页 / 共77页
计算机组成原理-第3章 指令集结构._第2页
第2页 / 共77页
计算机组成原理-第3章 指令集结构._第3页
第3页 / 共77页
计算机组成原理-第3章 指令集结构._第4页
第4页 / 共77页
计算机组成原理-第3章 指令集结构._第5页
第5页 / 共77页
点击查看更多>>
资源描述

《计算机组成原理-第3章 指令集结构.》由会员分享,可在线阅读,更多相关《计算机组成原理-第3章 指令集结构.(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

4、)(SI) ;AL(BX)(SI)+Disp) IBM370机的成组取指令: 成组取R1R3B2D2 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,则

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

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

8、的速度比主存快,需要的地址短,可 压缩指令长度,有利于加快指令执行速度。但寄存器 的数量有限。 寄存器直接寻址 OP寄存器寻址Rn 操作数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移到累加器

9、中 OP立即寻址D 这种寻址方式在取指令的同时操作数即被取出 ,不必再次访问存储器,提高了指令执行速度。但 由于指令字有限,使得数据范围受限。 3.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 低地址 AL AH 高地址 SP SP-1 SP-1 低地址 AL AH 高地址 SP+1 SP+1 SPAL AH 3.

11、2.3.6 相对寻址 将程序计数器 PC 的当前内容与指令中给出的形式地址 相加形成操作数的有效地址。 有效地址E(PC)Disp 程序计数器 PC的内容一般为现行指令的下一条指令的 地址。 形式地址是操作数地址相对于PC当前内容的一个相对 位移量(Disp),位移量可正可负,一般用补码表示。 在相对寻址中,只要保持位移量不变,就可实现指令 带着数据在存储器中浮动,有利于实现程序再定位。 KOP 相对寻 址 5 K+1 K+2 K+6操作数 MOP 相对寻 址 5 M+1 M+2 M+6操作数 例:8086指令 JNC 03H 的功能为,如果进位为0,则 转移到目标地址为 (PC)03H处进行

12、执行。 设指令为双字节指令,本条指令地址为1000H。 本条指令取指后,PC1002H 转移目标地址为 1002H0003H1005H 若指令为JNC 0FDH 则转移目标地址为 1002HFFFDH0FFFH 0FFDH 0FFEH 0FFFH 1000HJNC 1001H03H 1002H 1003H 1004H 1005H DFDH D03H 3.2.3.7 变址寻址方式和基址寻址 1.变址寻址方式 变址寻址方式与相对寻址方式类似,但它是将 指令提供的地址与变址寄存器中而不是程序计数器中 的内容相加。 例如: Intel 8086指令 MOV AL,BX+4 设 BX2000H,BX+4

13、2004H (2004H)82H,则 AL82H 例如: LDAC 5(X) ;变址寄存器X:数值10,则 51015 ;读取15号单元中的数据并且把它存储在累加器中。 变址寻址可用于数组、向量、字符串等数据的处理 例: Intel 8086指令 LODS ;AL(SI),SISI1 SIA Aa0 A1a1 A2a2 +1 2基址寻址 操作数的有效地址等于指令中的形式地址与基址 寄存器中的内容之和。 基址寄存器可以是一个专用的寄存器,也可以是 由指令指定的一个通用寄存器。 基址寻址主要用于将用户程序的逻辑地址(用户编写 程序时所使用的地址)转换成主存的物理地址(程序 在主存中的实际地址)。

14、基址寻址与变址寻址在形式上以及有效地址的计算 方法上都是相似的,但它们的应用场合是不同的。 基址寻址是面向系统的,主要用于逻辑地址到 物理地址的变换,用以解决程序定位问题。基址寄 存器由系统程序使用,对用户是透明的。 变址寻址是面向用户的,主要用于访问数组、 向量、字符串等成批数据,用以解决程序的循环控 制问题。 3.2.4 指令格式 操作码地址码 指令的基本格式: 指令格式的设计包含两个方面: 1. 确定指令的长度; 2. 划分指令的字段,定义各字段的位数、含义 。 一、指令长度 指令字长度:一个指令字所包含的二进制信息的位数。 定长指令:指令系统中所有指令的长度都是一样的。 可变长指令:各指令的长度可以不同。 指令长度与机器字长 二.指令的地址码 考虑的问题:需要多少地址信息及如何给出地址。 1. 零地址指令 格式: (1) 无需任何操作数, 如空操作,停机等指令。 (2) 所需操作数是隐含指定的,如堆栈运算指令。 2. 一地址指令 格式: 意义: (1) A OP (A) (2) AC (AC) OP (A) O

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号