1、计算机组成原理计算机组成原理武汉科技大学武汉科技大学计算机科学与技术学院计算机科学与技术学院第四章指令系统第四章指令系统n本章内容本章内容4.1 指令系统的发展和性能要求指令系统的发展和性能要求4.2 指令格式指令格式4.3 操作数类型操作数类型4.4 指令和数据的寻址方式指令和数据的寻址方式4.5 典型指令典型指令4.6 ARM汇编语言汇编语言4.1.14.1.1指令系统的发展指令系统的发展1.1.程序:程序:解决某一实际问题的指令序列解决某一实际问题的指令序列2.2.指令:指令:要计算机执行某种操作的命令要计算机执行某种操作的命令 4.1 指令系统的发展与性能要求指令系统的发展与性能要求3
2、.3.指令系统:指令系统:一台计算机中所有机器指令的集合一台计算机中所有机器指令的集合(1)(1)微指令:微指令:微程序级的命令,属于硬件微程序级的命令,属于硬件(2)(2)宏指令:宏指令:由若干机器指令和伪指令构成的软件指令由若干机器指令和伪指令构成的软件指令(3)(3)机器指令机器指令(指令指令):介于微指令与宏指令之间,每条指令可完成介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算一个独立的算术运算或逻辑运算从计算机层次结构的观点看,指令可分三类:从计算机层次结构的观点看,指令可分三类:目录目录4.4.指令系统的发展指令系统的发展 50 50年代年代只有只有定点加减定点
3、加减、逻辑运算逻辑运算、数据传送数据传送、转移等十转移等十几至几十条指令几至几十条指令 6060年代后期年代后期增加了增加了乘除运算乘除运算、浮点运算浮点运算、十进制运算十进制运算、字符串处理字符串处理等,指令多达一二百条,寻址方式也趋多样化等,指令多达一二百条,寻址方式也趋多样化 6060年代后期年代后期开始出现开始出现系列计算机系列计算机 7070年代末期年代末期CISCCISC(Complex Instruction Set Computer)(Complex Instruction Set Computer)RISCRISC(Reduced Instruction Set Comput
4、er)(Reduced Instruction Set Computer)系列计算机系列计算机基本指令系统、体系结构相同的一系列计算机基本指令系统、体系结构相同的一系列计算机系列计算机系列计算机必要条件必要条件同一系列的各机种有共同的指令集;且同一系列的各机种有共同的指令集;且实现实现“向上兼容向上兼容”CISCCISC和和RISCRISCnCISCCISC复杂指令系统计算机,多达几百条复杂指令系统计算机,多达几百条研制周期长,不易调试维护,且造成硬件资源浪费研制周期长,不易调试维护,且造成硬件资源浪费nRISCRISC精简指令系统计算机精简指令系统计算机 n从从CISCCISC转变到转变到R
5、ISCRISC的原因的原因n指令系统百分比的指令系统百分比的2020:8080规律规律n降低控制器设计难度降低控制器设计难度一个完善的指令系统应满足的条件:一个完善的指令系统应满足的条件:1.1.完备性完备性指令丰富、功能齐全、使用方便指令丰富、功能齐全、使用方便用汇编语言编各用汇编语言编各种程序时,直接提供的指令种程序时,直接提供的指令足够用足够用2.2.有效性有效性程序程序占存储空间小、执行速度快占存储空间小、执行速度快3.3.规整性规整性对称性、匀齐性、指令格式和数据格式的一致性对称性、匀齐性、指令格式和数据格式的一致性 对称性:对称性:所有的寄存器和存储器单元都可同等对待;所有的指所有
6、的寄存器和存储器单元都可同等对待;所有的指令都可使用各种寻址方式令都可使用各种寻址方式 匀齐性:匀齐性:一种操作指令可支持各种数据类型一种操作指令可支持各种数据类型 指令格式和数据格式的一致性:指令格式和数据格式的一致性:指令长度和数据长度有一定关指令长度和数据长度有一定关系,方便处理和存取系,方便处理和存取4.4.兼容性兼容性 “向上兼容向上兼容”4.1.24.1.2指令系统的性能要求指令系统的性能要求低级语言分低级语言分机器语言机器语言(二进制二进制)和和汇编语言汇编语言(符号符号)高级语言与低级语言的性能比较:高级语言与低级语言的性能比较:高级语言高级语言的语句和用法与具体机器的指令系统
7、无关的语句和用法与具体机器的指令系统无关低级语言低级语言和具体机器的指令系统密切相关和具体机器的指令系统密切相关机器语言机器语言是机器能直接识别和执行的是机器能直接识别和执行的惟一惟一语言语言汇编语言汇编语言与硬件关系密切,编写的程序紧凑、占内存小、速与硬件关系密切,编写的程序紧凑、占内存小、速度快,适合编写经常与硬件打交道的度快,适合编写经常与硬件打交道的系统软件系统软件高级语言高级语言不涉及机器的硬件结构,通用性强、编写程序容易,不涉及机器的硬件结构,通用性强、编写程序容易,适合编写与硬件没有直接关系的适合编写与硬件没有直接关系的应用软件应用软件4.1.34.1.3低级语言与硬件结构的关系
8、低级语言与硬件结构的关系高级语言与低级语言的比较高级语言与低级语言的比较比较内容比较内容高级语言高级语言低级语言低级语言1 对程序员的训练要求:(1)通用算法(2)语言规则(3)硬件知识有较少不需要有较多需要2 对机器独立的程度独立不独立3 编制程序的难易程度易难4 编制程序所需时间短较长5 程序执行时间较长短6 编译过程中对计算机资源(时间和存储容量)的要求多少4.2 指令格式指令格式 指令字指令字(简称指令简称指令)表示一条指令的机器字表示一条指令的机器字 指令格式指令格式指令字用二进制代码表示的结构形式指令字用二进制代码表示的结构形式表征指令的操作特性与功能表征指令的操作特性与功能位数取
9、决于指令系统的规模,分位数取决于指令系统的规模,分固定位数和可变位数固定位数和可变位数4.2.14.2.1操作码操作码4.2.24.2.2地址码地址码参与操作的参与操作的操作数的地址操作数的地址或或操作数本身操作数本身三地址指令格式、二地址格式、一地址格式和零地址格式三地址指令格式、二地址格式、一地址格式和零地址格式操作码字段操作码字段OPOP 地址码字段地址码字段A A目录目录(1)(1)零地址指令零地址指令两种情况:两种情况:一是该指令不需要操作数,如一是该指令不需要操作数,如NOPNOP指令指令二是操作数隐含,如二是操作数隐含,如DAADAA操作数隐含于累加器操作数隐含于累加器ACAC中
10、中(2)(2)一地址指令一地址指令(单操作数指令单操作数指令)也有两种情况:也有两种情况:一是指令本身只需要一个操作数,如一是指令本身只需要一个操作数,如NOTNOT指令指令二是被操作数和结果隐含于累加器二是被操作数和结果隐含于累加器ACAC中中 ACAC (AC)(AC)OPOP(A)(A)(A)(A)表示地址为表示地址为A A的内存或通用寄存器中的数的内存或通用寄存器中的数关于地址码个数的有关说明关于地址码个数的有关说明操作码操作码 1 1 操作码操作码 (3)(3)二地址指令二地址指令(双操作数指令双操作数指令)A1A1 (A1)(A1)OPOP(A2)(A2)按操作数的物理位置不同又分
11、为:按操作数的物理位置不同又分为:SSSS型、型、RRRR型、型、RSRS型指令型指令(4)(4)三地址指令三地址指令 A3A3(A1)(A1)OPOP(A2)(A2)A1A1被操作数地址,也称源操作数地址被操作数地址,也称源操作数地址 A2A2操作数地址,也称终点操作数地址操作数地址,也称终点操作数地址 A3A3存放结果的地址存放结果的地址A1A1,A2A2,A3A3可为内存单元或通用寄存器的地址可为内存单元或通用寄存器的地址操作码操作码 1 1 2 23 3操作码操作码 1 1 2 2关于地址码个数的有关说明关于地址码个数的有关说明(续续)机器字长机器字长:计算机能直接处理的二进制数的位数
12、计算机能直接处理的二进制数的位数指令字长度指令字长度:指令字包含二进制代码的位数,指令字包含二进制代码的位数,等长、变长等长、变长两种两种等长指令字结构:等长指令字结构:结构简单,且指令字长度不变结构简单,且指令字长度不变变长指令字结构:变长指令字结构:结构灵活,但控制较复杂结构灵活,但控制较复杂4.2.34.2.3指令字长度指令字长度设设L L为指令字长度,为指令字长度,NN为机器字长度为机器字长度L=NL=N单字长指令单字长指令L=0.5NL=0.5N半字长指令半字长指令L=2NL=2N双字长指令双字长指令多字长指令多字长指令的的优点、缺点优点、缺点典型的指令助记符典型的指令助记符典型指令
13、典型指令 指令助记符指令助记符 二进制操作码二进制操作码 加法加法 ADD 001 减法减法 SUB 010 传送传送 MOV 011 跳转跳转 JMP 100 转子转子 JSR 101 存数存数 STO 110 取数取数 LAD 1114.2.44.2.4指令助记符指令助记符不同的计算机中,指令助记符的规定不同不同的计算机中,指令助记符的规定不同指令助记符借助汇编程序可自动转换成相应的二进制码指令助记符借助汇编程序可自动转换成相应的二进制码1.1.八位微型计算机八位微型计算机(字长字长8 8位位)的指令格式的指令格式 可变字长形式:单字长、双字长、三字长指令可变字长形式:单字长、双字长、三字
14、长指令操作码操作码 操作码操作码 1 12 2操作码操作码 1 1单字长指令单字长指令 双字长指令双字长指令 三字长指令三字长指令 内存内存按字节按字节编址编址,每执行一条指令后,指令地址的修正,每执行一条指令后,指令地址的修正加加1 1、加、加2 2、加、加3 34.2.54.2.5指令格式举例指令格式举例字长字长3232位,字节寻址,通用寄存器位,字节寻址,通用寄存器3232个个R R型指令型指令所有算术运算,数据必须放在通用寄存器中所有算术运算,数据必须放在通用寄存器中2.2.MIPS R4000MIPS R4000指令格式指令格式RISCRISC 6位5位5位5位5位6位oprsrtr
15、dshamtfunctR型I I型型(立即数立即数)指令指令访问存储器访问存储器(存数或取数存数或取数)6位5位5位16位oprsrt常数或地址(address)I型MIPSMIPS指令的字段值指令的字段值指令指令格式格式 oprsrtrdshamtfunct常数或地址常数或地址add(加加)R0reg reg reg032sub(减减)R0reg reg reg034立即数加立即数加I8reg reg常数lw(取字取字)I35reg regaddresssw(存字存字)I43reg regaddress返回到返回到举例举例ARMARM指令集的一种指令格式指令集的一种指令格式3.3.RAMRA
16、M的指令格式的指令格式3232位嵌入式处理器位嵌入式处理器condFIopcodeSRnRdoperand24位2位1位4位1位4位4位12位指令字长度可变:指令字长度可变:1 1 1212字节,典型的字节,典型的CICSCICS结构结构1或或2 0或或1 0或或1 0,1,2,4 0,1,2,4操作码操作码ModReg或操作码或操作码R/M比例比例S变址变址I基址基址B位移量位移量立即数立即数4.4.PentiumPentium指令格式指令格式由由操作码操作码、Mod-R/M、SIB、位移量位移量、立即数字段立即数字段组成,除操组成,除操作码字段外,其他四个字段均可选作码字段外,其他四个字段
17、均可选2位位 3位位 3位位 2位位 3位位 3位位 例例1 1已知指令格式,已知指令格式,OPOP为操作码,试分析其特点为操作码,试分析其特点 解解:(1)(1)单字长二地址指令单字长二地址指令(2)(2)操作码字段操作码字段OPOP为为7 7位,可指定位,可指定128128条指令条指令(3)(3)源寄存器和目标寄存器都是通用寄存器源寄存器和目标寄存器都是通用寄存器(可分别指定可分别指定1616个个)RRRR型指令型指令(4)(4)这种指令结构常用于算术逻辑运算类指令这种指令结构常用于算术逻辑运算类指令 指令格式举例指令格式举例115 915 98 87 4 7 4 3 03 0OPOP源寄
18、存器源寄存器目标寄存目标寄存器器 例例22 试分析下面指令格式的特点试分析下面指令格式的特点 解解:(1)1)双字长二地址指令,用于访问存储器双字长二地址指令,用于访问存储器 (2)(2)操作码字段操作码字段OPOP为为6 6位,可以指定位,可以指定6464种操作种操作(3)(3)一个操作数在源寄存器一个操作数在源寄存器(共共1616个个),另一个操作数在存储器,另一个操作数在存储器中中(由变址寄存器和位移量决定由变址寄存器和位移量决定)RSRS型指令型指令 指令格式举例指令格式举例215 109 87 43 0OP-源寄存器源寄存器变址寄存变址寄存器器位移量位移量(16位位)例例33 MIP
19、S R4000汇编语言中,寄存器汇编语言中,寄存器$s0$s7对应寄存器号为对应寄存器号为16 23(十进制十进制),寄存器,寄存器$t0$t7对应寄存器号为对应寄存器号为8 15。下表列出。下表列出了了2条条R型指令型指令(add、sub),2条条I型指令型指令(IW、SW)的汇编语言表示。的汇编语言表示。请将请将4条汇编语言手工翻译成对应的机器语言条汇编语言手工翻译成对应的机器语言(十进制十进制)表示表示指令格式举例指令格式举例3MIPS汇编语言汇编语言类别类别指令指令示例示例语义语义说明说明算术运算加add$s1,$s2,$s3$s1=$s2+$s33个操作数,都在寄存器中减sub$s1
20、,$s2,$s3$s1=$s2-$s33个操作数,都在寄存器中数据传送取字lw$s1,100($s2)$s1=Memory$s2+100数据从存储器到寄存器存字sw$s1,100($s2)Memory$s2+100=$s1数据从寄存器到存储器$s0$s7对应寄存器号为对应寄存器号为16 23 解解:MIPS机器语言表示如表所示指令格式举例指令格式举例34 4条指令的机器语言条指令的机器语言名称名称格式格式示例示例说明说明addR0181917032add$s1,$s2,$s3subR0181917034sub$s1,$s2,$s3lwI351817100lw$s1,100($s2)swI431
21、817100sw$s1,100($s2)字段大小6位5位5位5位5位6位所有MIPS指令都是32位R型Roprsrtrdshamtfunct算术指令格式I型Ioprsrtaddress数据传送指令格式MIPS指令指令字段值字段值4.3 操作数类型操作数类型4.3.1 4.3.1 一般的数据类型一般的数据类型地址数据地址数据:可看成无符号数可看成无符号数数值数据:数值数据:常用的三种类型:定点数、浮点数、压缩常用的三种类型:定点数、浮点数、压缩BCDBCD字符数据:字符数据:文本数据或字符串,目前广泛使用文本数据或字符串,目前广泛使用ASCIIASCII码码逻辑数据:逻辑数据:将一个数据看成由若
22、干位组成将一个数据看成由若干位组成可对具体的位进可对具体的位进行布尔逻辑运算行布尔逻辑运算4.3.2 Pentium4.3.2 Pentium数据类型数据类型能处理能处理字节字节(8(8位位)、字、字(16(16位位)、双字、双字(32(32位位)、四字、四字(64(64位位)字、双字、四字的字、双字、四字的起始地址无要求起始地址无要求当通过当通过3232位数据总线存取数据时,双字的起始地址位数据总线存取数据时,双字的起始地址能被能被4 4整除整除PentiumPentium的数据类型的数据类型目录目录PentiumPentium数据类型数据类型数据类型数据类型说明说明常规常规字节、字、双字、
23、四字,可位于任意存储位置字节、字、双字、四字,可位于任意存储位置整数整数字节、字、双字、四字中的有符号二进制值,字节、字、双字、四字中的有符号二进制值,2的补码表的补码表示示序数序数字节、字、双字、四字中的无符号整数字节、字、双字、四字中的无符号整数未压缩未压缩BCD 范围范围09的的BCD数字表示,每字节一个数字数字表示,每字节一个数字压缩压缩BCD每字节表示每字节表示2个个BCD数字,值数字,值099近指针近指针表示段内偏移的表示段内偏移的32位有效地址,用于不分段存储器中的所位有效地址,用于不分段存储器中的所有指针和分段存储器中的段内访问有指针和分段存储器中的段内访问位串位串一个连续的位
24、序列,每位位置认为是一个独立的单位,能一个连续的位序列,每位位置认为是一个独立的单位,能以任何字节的任何位置开始一个位串,最长可达以任何字节的任何位置开始一个位串,最长可达232-1位位字符串字符串一个连续的字节、字或双字的序列,最长可达一个连续的字节、字或双字的序列,最长可达232-1B浮点数浮点数单精度单精度(32位位)、双精度、双精度(64位位)、扩展双精度、扩展双精度(80位位)返回返回4.3.3 Power PC4.3.3 Power PC数据类型数据类型Power PCPower PCRISCRISC可处理可处理字节字节(8(8位位)、半字、半字(16(16位位)、字、字(32(3
25、2位位)、双字、双字(64(64位位)能识别的数据类型:能识别的数据类型:(1)(1)无符号字节:用于逻辑和整数算术运算,由存储器读出装入无符号字节:用于逻辑和整数算术运算,由存储器读出装入通用寄存器时左端通用寄存器时左端以以0 0填充填充(2)(2)无符号半字:与无符号半字:与“无符号字节无符号字节”类似,长度类似,长度1616位位(3)(3)有符号半字:用于有符号半字:用于1616位算术运算,装入寄存器时要位算术运算,装入寄存器时要符号扩展符号扩展(4)(4)无符号字:用于无符号字:用于3232位逻辑运算,或作地址指针位逻辑运算,或作地址指针(5)(5)有符号字:用于有符号字:用于3232
26、位算术运算位算术运算(6)(6)无符号双字:用作无符号双字:用作6464位地址指针位地址指针(7)(7)字节串:长度字节串:长度0 0 128128个字节个字节(8)(8)浮点数:支持浮点数:支持IEEE754IEEE754定义的定义的单精度单精度、双精度双精度浮点类型浮点类型4.4 指令和数据的寻址方式指令和数据的寻址方式在存储器中,操作数或指令字写入或读出的在存储器中,操作数或指令字写入或读出的3 3种方式种方式地地址指定方式、相联存储方式和堆栈存取方式址指定方式、相联存储方式和堆栈存取方式;几乎所有的计算机,;几乎所有的计算机,内存中都采用地址指定方式内存中都采用地址指定方式寻址方式寻址
27、方式采用地址指定方式时,形成操作数或指令地采用地址指定方式时,形成操作数或指令地址的方式址的方式指令寻址方式指令寻址方式比较简单;比较简单;数据寻址方式数据寻址方式比较复杂比较复杂4.4.14.4.1指令的寻址方式指令的寻址方式 一种是一种是顺序寻址顺序寻址方式方式另一种是另一种是跳跃寻址跳跃寻址方式方式目录目录跳跃寻址跳跃寻址下条指令的地址码由本下条指令的地址码由本条指令给出条指令给出PC100Jmp103主存100101102103100PC+1内存内存100101设置程序计数器设置程序计数器(指令指针寄存器指令指针寄存器)PC)PC对指令的顺对指令的顺序号计数,该顺序号就是指令在内存中的
28、地址序号计数,该顺序号就是指令在内存中的地址2.2.跳跃寻址方式跳跃寻址方式 目标地址目标地址PCPC1.1.顺序寻址方式顺序寻址方式 (PC)(PC)1 1PCPC103形成操作数的有效地址的方法形成操作数的有效地址的方法例如,一种单地址指令的结构如下所示例如,一种单地址指令的结构如下所示操作码操作码OPOP变址变址X X间址间址I I形式地址形式地址A A4.4.24.4.2操作数基本寻址方式操作数基本寻址方式 指令中的指令中的地址码地址码由由形式地址形式地址和和寻址方式特征位寻址方式特征位等组合形成等组合形成 寻址过程就是把操作数的形式地址,变换为有效地址寻址过程就是把操作数的形式地址,
29、变换为有效地址具体的寻址方式有:具体的寻址方式有:隐含寻址隐含寻址立即寻址立即寻址直接寻址直接寻址间接寻址间接寻址寄存器寻址寄存器寻址寄存器间接寻址寄存器间接寻址偏移寻址(基值、变址、相对)偏移寻址(基值、变址、相对)堆栈寻址堆栈寻址 段寻址段寻址 指令中不显式给出而是隐含着操作数的地址指令中不显式给出而是隐含着操作数的地址例如,单地址的指令格式隐含着累加器例如,单地址的指令格式隐含着累加器ACAC为第二操作数地址为第二操作数地址2.2.立即寻址立即寻址指令的地址字段给出的是操作数本身,而不是操作数地址指令的地址字段给出的是操作数本身,而不是操作数地址不需要访问内存取数,故指令执行时间很短不需
30、要访问内存取数,故指令执行时间很短3.3.直接寻址直接寻址1.1.隐含寻址隐含寻址 地址字段中直接指出操作数在内存的地址地址字段中直接指出操作数在内存的地址A A 形式地址形式地址A A就是操作数的有效地址就是操作数的有效地址E(E(E EA A),又称,又称直接地址直接地址 如果用如果用D D表示操作数,那么表示操作数,那么D D(E)(E)(A)(A)操作数操作数=2000HOP X A=1350H 2000H1350H形式地址形式地址A A是操作数地址的指示器,是操作数地址的指示器,A A单元的内容才是操作数单元的内容才是操作数的有效地址的有效地址操作码操作码 I IA A寻址特征位寻址
31、特征位I I0 0,表示直接寻址,有效地址,表示直接寻址,有效地址E EA A I I1 1,表示间接寻址,有效地址,表示间接寻址,有效地址E E(A)(A)4.4.间接寻址间接寻址目前已很少使用目前已很少使用把直接寻址和间接寻址结合起来把直接寻址和间接寻址结合起来指令的形式:指令的形式:操作数操作数=1234HOP X2 A=1000H 操作数地址操作数地址=2000HD=1234H1000H2000H指令中给出通用寄存器的编号,指令中给出通用寄存器的编号,操作数在通用寄存器中操作数在通用寄存器中 6.6.寄存器寄存器间接寻址方式间接寻址方式指令中给出寄存器的编号,但该寄存器的内容是操作数的
32、地指令中给出寄存器的编号,但该寄存器的内容是操作数的地址址,操作数在内存中,操作数在内存中如:如:8086 CPU8086 CPU的指令系统中的指令系统中MOVMOV指令:指令:MOVMOV AXAX,BXBX;源操作数是寄存器寻址;源操作数是寄存器寻址MOVMOV AXAX,BXBX;源操作数是寄存器间接寻址;源操作数是寄存器间接寻址5.5.寄存器寻址方式寄存器寻址方式7.7.偏移寻址偏移寻址(1)(1)相对寻址方式相对寻址方式隐含的专用寄存器为隐含的专用寄存器为PCPC;EA=(PC)+AEA=(PC)+A形式地址形式地址A A称为称为偏移量偏移量,有符号数有符号数,相对当前指令地址浮动,
33、相对当前指令地址浮动(2)(2)基址寻址方式基址寻址方式EA=(BR)+AEA=(BR)+A;A A为偏移量为偏移量(通常是通常是无符号数无符号数);寄存器的引;寄存器的引用可以是显式或隐式的用可以是显式或隐式的优点优点BRBR位数较多时,提供位数较多时,提供较大寻址空间较大寻址空间(如段寻址如段寻址)(3)(3)变址寻址方式变址寻址方式EA=(IR)+AEA=(IR)+A;(IR)(IR)通常是一个正偏移量通常是一个正偏移量为为重复操作重复操作提供高效机制提供高效机制是是直接寻址直接寻址和和寄存器间接寻址寄存器间接寻址方式的结合方式的结合有效地址有效地址EA=A+(R)EA=A+(R)BR操
34、作数操作数OP X3 A+DE=A+(BR)偏移寻址偏移寻址以以PCPC微型为例,微型为例,内存单元的分段内存单元的分段2020位物理地址的构成位物理地址的构成段寄存器、位移量段寄存器、位移量16位逻辑地址位逻辑地址16位段寄存器位段寄存器000020位物理地址位物理地址+8.8.段寻址方式段寻址方式(其本质是基址寻址其本质是基址寻址)数据的存取在数据的存取在栈顶栈顶栈顶指示器栈顶指示器PUSHPUSH数据入栈,栈顶指示器减数据入栈,栈顶指示器减POPPOP数据出栈,栈顶指示器加数据出栈,栈顶指示器加9.9.堆栈寻址方式堆栈寻址方式(先进后出先进后出)基本寻址方式基本寻址方式示意图示意图逻辑地
35、址逻辑地址段寄存器段寄存器存储器物理地址存储器物理地址0000015019015基本寻址方式基本寻址方式小结小结方式方式算法算法主要优点主要优点主要缺点主要缺点隐含寻址隐含寻址操作数在专用寄存器无存储器访问 数据范围有限立即寻址立即寻址操作数=A无存储器访问 操作数幅值有限直接寻址直接寻址EA=A简单地址范围有限间接寻址间接寻址EA=(A)大的地址范围 多重存储器访问寄存器寻址寄存器寻址EA=R无存储器访问 地址范围有限寄存器间接寻寄存器间接寻址址EA=(R)大的地址范围 额外存储器访问偏移寻址偏移寻址EA=A+(R)灵活复杂段寻址段寻址EA=A+(R)灵活复杂堆栈寻址堆栈寻址EA=栈顶无存储
36、器访问 应用有限立即寻址立即寻址操作数操作数寄存器寄存器间接寻址间接寻址存储器存储器间接寻址间接寻址偏移寻址偏移寻址在寄存器中在寄存器中在主存中在主存中在在I/O端口中端口中直接寻址直接寻址(8位位)间接寻址间接寻址(16位位 DX)在指令中在指令中寄存器寻址寄存器寻址操作数的寻址方式操作数的寻址方式直接寻址直接寻址 外部地址总线外部地址总线3636位,但也支持位,但也支持3232位物理地址空间位物理地址空间 实地址模式实地址模式下,逻辑地址形式为下,逻辑地址形式为段寻址方式段寻址方式:2020位物理地址位物理地址PA=PA=段寄存器内容左移段寄存器内容左移4 4位位+16+16位段内偏移位段
37、内偏移保护模式保护模式下,下,3232位线性地址位线性地址LA=32LA=32位段基址位段基址+段内偏移段内偏移,再,再由存储管理部件透明地将其转换成由存储管理部件透明地将其转换成3232位的物理地址位的物理地址1.Pentium1.Pentium的寻址方式的寻址方式4.4.34.4.3寻址方式举例寻址方式举例保护模式下保护模式下PentiumPentium寻址方式的计算寻址方式的计算SS访问权限访问权限段长段长基地址基地址段寄存器段寄存器选择符选择符SS选择符选择符选择符选择符选择符选择符选择符选择符选择符选择符GSFSESDSCS用户可见用户可见GS访问权限访问权限段长段长基地址基地址FS
38、访问权限访问权限段长段长基地址基地址ES访问权限访问权限段长段长基地址基地址DS访问权限访问权限段长段长基地址基地址CS访问权限访问权限段长段长基地址基地址描述符寄存器描述符寄存器基址寄存器基址寄存器变址寄存器变址寄存器比例因子比例因子S(1,2,4,8)偏移量偏移量(在指令中在指令中)线性地址线性地址LA有效地址有效地址EA+操作数操作数存储器存储器段基址段基址段长段长返回返回PentiumPentium的寻址方式的寻址方式(EA(EA的获取方式的获取方式)序序号号寻址方式名称寻址方式名称有效地址有效地址EA算法算法说明说明(1)立即寻址操作数=A操作数A在指令中(2)寄存器寻址EA=R指令
39、给出寄存器号,操作数在寄存器中(3)偏移量寻址EA=A偏移量A(8位、16位、32位)在指令中(4)基址寻址EA=(B)B为基址寄存器(5)基址+偏移量EA=(B)+A(6)比例变址+偏移量EA=(I)S+AI为变址寄存器,S为比例因子(1、2、4、8)(7)基址+变址+偏移量EA=(B)+(I)+A(8)基址+比例变址+偏移量EA=(B)+(I)S+A(9)相对寻址指令地址=(PC)+APC为程序计数器(指令指针寄存器)立即数立即数可为可为8 8位、位、1616位、位、3232位位寄存器寻址:寄存器寻址:一般指令一般指令可使用可使用8 8位、位、1616位或位或3232位通用寄存器;位通用寄
40、存器;对对6464位浮点数位浮点数操作,要使用一对操作,要使用一对3232位寄存器;少数指令使用段寄位寄存器;少数指令使用段寄存器寻址存器寻址直接寻址:也称偏移量直接寻址:也称偏移量(8(8位、位、1616位、位、3232位位)寻址寻址基址寻址:基址寄存器基址寻址:基址寄存器B B可以是通用寄存器中任何一个可以是通用寄存器中任何一个基址偏移量寻址:基址偏移量寻址:B B是是3232位通用寄存器中任何一个位通用寄存器中任何一个比例地址偏移量寻址:也称为变址寻址方式,变址寄存器比例地址偏移量寻址:也称为变址寻址方式,变址寄存器I I是是3232位通用寄存器中除位通用寄存器中除ESPESP外的任何一
41、个外的任何一个,是是,两种的组合,偏移量可有可无两种的组合,偏移量可有可无相对寻址:适用于转移控制类指令相对寻址:适用于转移控制类指令EIPEIP或或IPIP的内容加上一个的内容加上一个有符号的偏移量,形成有符号的偏移量,形成CSCS段的段内偏移段的段内偏移对对3232位寻址方式的几点说明:位寻址方式的几点说明:Power PCPower PC是是RISCRISC,寻址方式简单,按指令类型分类,寻址方式简单,按指令类型分类2.Power PC2.Power PC寻址方式寻址方式指令指令寻址方式寻址方式算法算法取数取数/存数寻址存数寻址间接寻址间接寻址EA=(BR)+D间接变址寻间接变址寻址址E
42、A=(BR)+(IR)转移寻址转移寻址绝对寻址绝对寻址EA=I相对寻址相对寻址EA=(PC)+I间接寻址间接寻址EA=(L/CR)定点计算定点计算寄存器寻址寄存器寻址EA=GPR立即寻址立即寻址操作数操作数=I浮点计算浮点计算寄存器寻址寄存器寻址EA=FPR其中:其中:BRBR基址寄存器;基址寄存器;IRIR变址寄存器;变址寄存器;L/CRL/CR链接或计数寄存器;链接或计数寄存器;GPRGPR通用寄存器;通用寄存器;FPRFPR浮点寄存器;浮点寄存器;D D偏移量;偏移量;I I立即数立即数 例例44一种二地址一种二地址RSRS型指令的结构如下所示型指令的结构如下所示I I间接寻址标志,间接
43、寻址标志,X X寻址模式,寻址模式,D D偏移量;通过偏移量;通过I I、X X、D D的组合,可构成下面的寻址方式,请写出各寻址方式的名称的组合,可构成下面的寻址方式,请写出各寻址方式的名称 解解:直接寻址直接寻址 相对寻址相对寻址 变址寻址变址寻址 寄存器间接寻址寄存器间接寻址 间接寻址间接寻址 基址寻址基址寻址 寻址方式寻址方式I有效地址有效地址E算法算法说明说明(1)000E=D(2)001E=(PC)+DPC为程序计数器为程序计数器(3)010E=(R2)+DR2为变址寄存器为变址寄存器(4)111E=(R3)(5)100E=(D)(6)011E=(R1)+DR1为基址寄存器为基址寄
44、存器6 6位位4 4位位1 1位位2 2位位1616位位OPOP 通用寄存器通用寄存器I IX X偏移量偏移量D D4.5 4.5 典型指令典型指令4.5.14.5.1指令的分类指令的分类一个较完善的指令系统按照功能不同可分为一个较完善的指令系统按照功能不同可分为4 4类类数据处理数据处理、数据存储数据存储、数据传送数据传送和和程序控制程序控制具体的指令类型:具体的指令类型:数据传送类数据传送类、算术运算类算术运算类、逻辑运算逻辑运算类类、程序控制类程序控制类、输入输出类输入输出类、字符串类字符串类、系统控制类系统控制类目录目录1.1.数据传送指令数据传送指令实现主存和寄存器、寄存器和寄存器之
45、间的数据传送实现主存和寄存器、寄存器和寄存器之间的数据传送包括:包括:取数、存数、传送、成组传送、字节交换、清累加器、堆取数、存数、传送、成组传送、字节交换、清累加器、堆栈操作指令栈操作指令等等2.2.算术运算指令算术运算指令定点或浮点的算术运算,大型机中有向量运算指令定点或浮点的算术运算,大型机中有向量运算指令包括:包括:二进制定点加、减、乘、除;浮点加、减、乘、除;求反二进制定点加、减、乘、除;浮点加、减、乘、除;求反、求补;算术移位;算术比较;十进制加、减运算指令、求补;算术移位;算术比较;十进制加、减运算指令等等3.3.逻辑运算指令逻辑运算指令无符号数的位操作、代码的转换、判断及运算无
46、符号数的位操作、代码的转换、判断及运算包括:包括:逻辑加、逻辑乘、按位加、逻辑移位逻辑加、逻辑乘、按位加、逻辑移位(对寄存器的内容实对寄存器的内容实现左移、右移或循环移位现左移、右移或循环移位)等指令等指令4.5.14.5.1指令的分类指令的分类4.4.程序控制指令程序控制指令也称转移指令也称转移指令转移地址采用直接寻址和相对寻址方式确定转移地址采用直接寻址和相对寻址方式确定包括:各种包括:各种条件转移指令条件转移指令;无条件转移、转子程序、返回主程序无条件转移、转子程序、返回主程序、中断返回指令、中断返回指令等等5.5.输入输出指令输入输出指令 实现外部设备与实现外部设备与CPUCPU之间、
47、外设与外设之间的信息传送之间、外设与外设之间的信息传送 6.6.字符串处理指令字符串处理指令是一种非数值处理指令是一种非数值处理指令包括:包括:字符串传送、字符串转换、字符串替换字符串传送、字符串转换、字符串替换等等4.5.14.5.1指令的分类指令的分类(续续)7.7.特权指令特权指令具有特殊权限的指令,具有特殊权限的指令,只用于操作系统或其他系统软件只用于操作系统或其他系统软件,一,一般不直接提供给用户使用般不直接提供给用户使用多用户、多任务的计算机系统中必不可少,主要用于系统资源的多用户、多任务的计算机系统中必不可少,主要用于系统资源的分配和管理分配和管理8.8.其他指令其他指令 一些系
48、统控制用的特殊指令一些系统控制用的特殊指令如:如:状态寄存器置位状态寄存器置位/复位指令复位指令、测试指令测试指令、暂停暂停,空操作空操作等等4.5.14.5.1指令的分类指令的分类(续续)4.5.24.5.2基本指令系统的操作基本指令系统的操作CISCCISC中,基本指令系统仅占指令系统的中,基本指令系统仅占指令系统的20%20%,如,如P132P132表表4.114.1120%-80%20%-80%规律:规律:CISCCISC中大约有中大约有20%20%的指令使用频率高,约占的指令使用频率高,约占整个程序的整个程序的80%80%;有;有80%80%的不常用指令只占整个程序的的不常用指令只占
49、整个程序的20%20%4.5.3 4.5.3 精简指令系统精简指令系统CISCCISC存在的问题:存在的问题:庞大的指令集;纷繁复杂的寻址模式;庞大的指令集;纷繁复杂的寻址模式;硬件实现复杂硬件实现复杂(硬件资源的利用率低硬件资源的利用率低)RISCRISC指令系统的主要特点:指令系统的主要特点:选取使用频率最高的一些简单指令,指令条数少选取使用频率最高的一些简单指令,指令条数少指令长度固定,指令格式种类少指令长度固定,指令格式种类少只有取数只有取数/存数指令访问存储器,其余指令都对寄存器操作存数指令访问存储器,其余指令都对寄存器操作典型典型RISCRISC机指令系统的基本特征如机指令系统的基
50、本特征如P133P133表表4.124.12Power PCPower PC机机(字长字长3232位位)的指令系统的指令系统共共6464条指令,都是条指令,都是3232位,且格式规整,分为位,且格式规整,分为5 5种:种:(1)(1)整数算术、逻辑、移位整数算术、逻辑、移位/旋转旋转(循环移位循环移位)指令指令(2)(2)浮点算术指令浮点算术指令(3)(3)取数取数/存数指令存数指令(4)(4)条件寄存器指令条件寄存器指令(5)(5)转移指令转移指令Power PCPower PC机的指令类型与格式机的指令类型与格式(1)(1)6位位5位位5位位16位位算术算术目标寄存器目标寄存器源寄存器源寄