第七章 指令系统_第1页
第七章 指令系统_第2页
第七章 指令系统_第3页
第七章 指令系统_第4页
第七章 指令系统_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章指令系统7.1机器指令7.2操作数类型和操作类型7.3寻址方式7.4指令格式举例7.5RISC技术7.1机器指令一、指令系统及其发展一台计算机所能执行的全部机器指令的集合,称为该机的指令系统。指令系统是程序员编制程序的基础,用各种高级语言编写的程序需通过编译转换为机器可以识别与执行的指令序列。指令系统是表征一台计算机性能的重要因素,其格式与功能不仅直接影响到机器的硬件结构,也直接影响到系统软件,影响到机器的适用范围。指令系统的发展:50年代:指令系统只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令。60年代:增加了乘除运算、浮点运算、十进制运算、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化。60年代后期开始出现系列计算机(指基本指令系统相同、基本体系结构相同的一系列计算机)70年代末:大多数计算机的指令系统多达几百条。复杂指令系统计算机(CISC)→精简指令系统计算机(RISC)二、指令的一般格式1.操作码机器做什么(1)

长度固定(2)

长度可变用于指令字长较长的情况如IBM370操作码8位操作码分散在指令字的不同字段中机器对谁操作(其长度反映指令条数:28=256种操作)操作码字段地址码字段(3)扩展操作码技术操作码的位数随地址数的减少而增加OPA1A2A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4位操作码8位操作码12位操作码16位操作码15条三地址指令15条二地址指令15条一地址指令16条零地址指令例7.1假设计算机指令字长16位,操作数的地址码是6位,指令有零地址、一地址和二地址三种格式。(1)设操作码固定,若零地址指令有P种,一地址指令有Q种,则二地址指令最多有几种?(2)采用扩展操作码技术,若二地址指令有X种,零地址指令Y种,则一地址指令最多有几种?分析(1)固定操作码格式下,地址码为6位,由二地址码得操作码为4位。因操作码固定,由此所有的操作码共24=16种指令,而零地址指令和一地址指令各占去P和Q种,则二地址指令有:16-P-QOPA1A2

66416(2)扩展操作码时,二地址指令每少一种则可多构成26种一地址指令,一地址指令每少一种则可多构成26种零地址指令。二地址指令最多有24

,而现有X种,则可构成一地址指令最多有(24

-X)×26

设一地址指令有M种,则零地址指令有

[(24

-X)×26-M]×26

而现有零地址指令Y种,故有

Y=[(24

-X)×26-M]×26解之,得M=(24

-X)×26-Y×2-62.地址码(1)四地址(2)三地址OPA1A2A3A486666A1

第一操作数地址A2

第二操作数地址A3

结果的地址A4

下一条指令地址若PC代替A4,则可以扩大寻址范围—3地址(A1)OP(A2)A38888OPA1A2A3(A1)OP(A2)A34次访存(取数2、存数1、取指1)4次访存寻址范围

26=64寻址范围

28=256若A3用A1或A2代替则可以扩大寻址范围—2地址设指令字长为32位操作码固定为8位(3)二地址OPA1A281212(A1)OP(A2)A1(A1)OP(A2)A2或4次访存若ACC代替A1(或A2)则可以扩大寻址范围—1地址若结果存于ACC(4)一地址(5)零地址OPA1824无地址码,指令不需要有操作数(ACC)OP(A1)ACC2次访存寻址范围212=4K寻址范围224=16M

则3次访存三、指令字长指令字长决定于操作码的长度指令字长=存储字长2.指令字长可变操作数地址的长度操作数地址的个数1.指令字长固定按字节的倍数变化小结:当用一些硬件资源代替指令字中的地址码字段后当指令的地址字段为寄存器时,如:可扩大指令的寻址范围可缩短指令字长可减少访存次数三地址OPR1,

R2,R3二地址OPR1,R2

一地址OPR1

指令执行阶段不访存可缩短指令字长7.2操作数类型和操作种类一、操作数类型地址数字字符逻辑数无符号整数定点数、浮点数、十进制数ASCII、BCD逻辑运算二、数据在存储器中的存放方式字地址

低字节

地址字地址

高字节

地址37621540字地址04低字节04512673字地址04低字节1、两种字地址(门牌号)表示法:地址(十进制)

04812162024283236双字双字(地址32)双字双字(地址24)半字(地址20)半字(地址22)半字(地址16)半字(地址18)字节(地址8)字节(地址9)字节(地址10)字节(地址11)字(地址4)字(地址0)字节(地址14)字节(地址15)字节(地址13)字节(地址12)(1)边界对准地址(十进制)048字节(地址7)字节(地址6)字(地址2)半字(地址10)半字(地址8)半字(地址0)字(地址4)(2)边界未对准2、存储器中数据存放两种方式:(存储字长32为例)三、操作类型1.

数据传送源目的寄存器寄存器寄存器寄存器存储器存储器存储器存储器置“1”,清“0”2.算术逻辑操作加、减、乘、除、增1、减1、求补、浮点运算、十进制运算与、或、非、异或、位操作、位测试、位清除、位求反如8086MOVESTORELOADMOVEPUSHPOP例如MOVEMOVEADDSUBMULDIVINCDECCMPNEGAAAAASAAMAADANDORNOTXORTEST3.移位操作算术移位4.转移(1)无条件转移JMP(2)条件转移结果为零转(Z=1)

JZ结果溢出转(O=1)JO结果有进位转(C=1)JC跳过一条指令SKP循环移位(带进位和不带进位)如300…305306307SKPDZD=0则跳逻辑移位完成触发器(3)调用和返回CALLSUB1.........CALLSUB2…...CALLSUB2…RETURNRETURN......主程序地址200021002101子程序SUB1240025002501256025612700主存空间分配程序执行流程子程序SUB2注解:子程序可以多处被调用允许嵌套CALL-RETURN配套用返回地址存于R、入口、栈顶INAX,nOUTDX,ALOUTn,AXOUTDX,AX(4)陷阱(Trap)与陷阱指令:意外事故的中断设置供用户使用的陷阱指令如8086INTTYPE软中断提供给用户使用的陷阱指令,完成系统调用5.输入输出一般不提供给用户直接使用

在出现事故时,由CPU自动产生并执行(隐指令)INAL,DXINAX,DX入:端口地址CPU的寄存器出:CPU的寄存器端口地址如:如:INAL,nOUTn,AL6.其它:WAITSTOPNOPSET……7.3寻址方式一、指令寻址顺序(PC)+1PC跳跃由转移指令指出LDA1000ADD1001DEC1200JMP7LDA2000SUB2001INCSTA2500LDA1100...0123456789PC+1指令地址寻址方式指令地址指令顺序寻址1顺序寻址2顺序寻址3跳跃寻址7顺序寻址8二、数据寻址

形式地址指令字中的地址,A有效地址操作数的真实地址,EA下面约定:

指令字长=存储字长=机器字长1.立即寻址

指令执行阶段不访存,取出指令就获得操作数

A的位数限制了立即数的范围形式地址A操作码寻址特征OP#A立即寻址特征立即数可正可负(补码)形式地址A就是操作数寻址特征各种寻址标志,如101表示直接寻址2.直接寻址EA=A操作数主存寻址特征LDAAAACC不需要专门计算操作数地址

A的位数决定了该指令操作数的寻址范围操作数的地址不易修改(必须修改A)形式地址就是有效地址,形式地址的数就是操作数执行阶段访问一次存储器3.隐含寻址操作数地址隐含在操作码中ADDA操作数主存寻址特征AACC暂存ALU另一个操作数隐含在ACC中如8086MUL指令被乘数隐含在AX(16位)或AL(8位)中MOVS指令源操作数的地址隐含在SI中目的操作数的地址隐含在DI中指令字中少了一个地址字段,可缩短指令字长4.间接寻址EA=(A)形式地址内的数是操作数的有效地址OPA寻址特征AEA主存EAA1EAA1主存EA10执行指令阶段2次访存可扩大寻址范围便于编制程序OPA寻址特征A一次间址多次间址操作数操作数多次访存

………子程序主程序…8081201202转子程序转子程序间接寻址编程举例:(A)=81(A)=202……@

间址特征JMP@A…

……………

…………5.寄存器寻址EA=Ri执行阶段不访存,只访问寄存器,执行速度快OPRi寻址特征寄存器个数有限,可缩短指令字长操作数………………R0RiRn寄存器有效地址即为寄存器编号,操作数在该寄存器中。EA=(Ri

)6.寄存器间接寻址

有效地址在寄存器中,操作数在存储器中,执行阶段访存操作数主存OPRi寻址特征

便于编制循环程序地址………………R0RiRn寄存器寄存器中仅是操作数的有效地址7.基址寻址(1)采用专用寄存器作基址寄存器EA=(BR)+ABR为基址寄存器隐式OPA操作数主存寻址特征ALUBR

可扩大寻址范围

便于程序搬家

BR内容由操作系统或管理程序确定

在程序的执行过程中BR内容不变,形式地址A可变EA(2)

采用通用寄存器作基址寄存器操作数主存寻址特征ALUOPR0AR0

作基址寄存器显式由用户指定哪个通用寄存器作为基址寄存器通用寄存器R0Rn-1R1…基址寄存器的内容由操作系统确定在程序的执行过程中R0内容不变,形式地址A可变EA8.变址寻址EA=(IX)+AOPA操作数主存寻址特征ALUIX可扩大寻址范围便于处理数组问题

IX的内容由用户给定IX为变址寄存器(专用)在程序的执行过程中IX内容可变,形式地址A不变通用寄存器也可以作为变址寄存器EA例设数据块首地址为D,求N

个数的平均值直接寻址变址寻址LDADADDD+1ADDD+2……ADDD+(N-1)DIV#NSTAANSLDA#0LDX#0INXCPX#NBNEMDIV#NSTAANS共N+2

条指令共8条指令ADDX,DMX为变址寄存器D为形式地址(X)和#N

比较(X)+1X结果不为零则转9.相对寻址EA=(PC)+AA是相对于当前指令的位移量(可正可负,补码)

A的位数决定操作数的寻址范围程序浮动

广泛用于转移指令操作数寻址特征ALUOPA相对距离A1000PC……主存1000AOPEA

(1)相对寻址举例M

随程序所在存储空间的位置不同而不同EA=(M+3)–3=M–3*LDA#0LDX#0ADDX,DINXCPX#NBNEMDIV#NSTAANSMM+1M+2M+3而指令BNE与

指令ADDX,D相对位移量不变–3*指令BNE操作数的有效地址为–3*

相对寻址特征*(2)按字节寻址的相对寻址举例OP位移量2000H2008H8JMP*+8OP06H2000H2008H8设当前指令地址PC=2000H转移后的目的地址为

2008H因为取出JMP

*+8

后PC=2002H二字节指令故JMP

*+8

指令的第二字节为2008H-2002H=6H例7.2设相对寻址的转移指令占3个字节,第一个字节为操作码,第二、三个字节为相对位移量(补码表示),数据在存储器中采用低字节为字地址的存放方式,每当CPU从存储器取出一个字节时,即自动完成(PC)+1→PC。(1)若PC当前值为240D,要求转移到290D,则转移指令的第二、三个字节的机器代码是什么?(2)若PC当前值为240D,要求转移到200D,则转移指令的第二、三个字节的机器代码是什么?(1)PC当前的值为240,当取出指令(指令占3个字节)后,PC=243。要求转移到290,则相对位移量为290-243=47D=2FH。因数据在存储器采用低字节地址为字地址,故位移量在存储器中为2FH,00H,即为指令的第二、三个字节的内容。(2)PC当前的值为240,当取出指令(指令占3个字节)后,PC=243。要求转移到200,则相对位移量为200-243=-43D=D5H。因数据在存储器采用低字节地址为字地址,故位移量在存储器中为D5H,FFH,即为指令的第二、三个字节的内容。10.堆栈寻址(1)堆栈的特点堆栈硬堆栈软堆栈多个寄存器形成一个堆栈指定的一段连续存储空间先进后出(一个入出口)栈顶地址

由SP

指出–11FFFH

+12000H进栈(SP)–1SP出栈(SP)+1SP栈顶栈底2000HSP2000H……1FFFHSP1FFFH栈顶栈底进栈出栈

1FFFH栈顶

2000H栈顶(2)堆栈寻址举例15200HACCSPX栈顶200H栈底主存151FFHACCSP15栈顶200H栈底主存X1FFHPUSHA前PUSHA后POPA前POPA后Y1FFHACCSPX栈顶200H栈底主存151FFH15200HACCSP栈顶200H栈底主存X15例7.3一条双字长直接寻址的子程序调用指令,其第一个字为操作码和寻址特征,第二个字为地址码5000H。假设PC当前值为2000H,SP的内容为0100H,栈顶内容为2746H,存储器按字节编址,而且进栈操作时执行(SP)-△-P,后存入数据。试回答下列几种情况下,PC、SP及栈顶内容各为多少?

(1)CALL指令被读取前。

(2)CALL指令被执行后。

(3)子程序返回后。

解CALL指令被读取前,PC=2000H,SP=0100H,栈顶内容为2746H。

(1)CALL指令被执行后,由于存储器按字节编制,CALL指令供占4个字节,故程序断点2004H进栈,此时SP=(SP)-2=00FEH,栈顶内容为2004H,PC被更新为子程序入口地址5000H。

(2)子程序返回后,程序断点出栈,PC=2004H,SP被修改为0100H,栈顶内容为2746H。

(3)SP的修改与主存编址方法有关①按字

编址进栈出栈(SP)–

1SP(SP)+

1SP②按字节

编址存储字长16位进栈出栈(SP)–2SP(SP)+2SP存储字长32位进栈出栈(SP)–

4SP(SP)+4SP7.4指令格式举例一、设计指令格式时应考虑的各种因素1.指令系统的兼容性(向上兼容)2.其他因素操作类型数据类型指令格式包括指令个数及操作的难易程度指令字长、操作码位数寻址方式寄存器个数地址码位数、地址个数寻址方式、是否采用扩展操作码二、指令格式举例1.PDP–8指令字长固定12位操作码间

页地址码访存类指令0235411寄存器类指令

111辅助操作码02311I/O类指令

110设备操作码0231198000-1011965年,美国数字设备公司推出第一台小型机2.PDP–11源地址OP4661616目的地址存储器地址1存储器地址2OP10616目的地址存储器地址目的地址466源地址OP

106目的地址OP–CODE16OP–CODE指令字长有16位、32位、48位三种零地址(16位)一地址(16位)二地址RR(16位)二地址RM(32位)二地址MM(48位)扩展操作码技术PDP系列机型顶峰3.IBM360OPR1R2

RR格式844OPR1XBD

RX格式844412OPR1R3BD

RS格式844412OPBDI

SI格式88412OPB1D1LB2D2

SS格式88412412二地址RR基址加变址寻址二地址RM三地址RM基址寻址二地址MM基址寻址基址寻址立即数M第一种采用集成电路(小规模)芯片的主流机型4.Intel8086(1)指令字长(2)地址格式1~6个字节MOVWORDPTR[0204],0138H6字节INCAX1字节一地址NOP1字节CALL段内调用

3字节零地址

5字节段间调用寄存器—寄存器寄存器—立即数寄存器—存储器ADDAX,BX2字节ADDAX,[3048H]4字节ADDAX,3048H

3字节二地址CALL三、指令格式设计举例例7.4

某机器字长为16位,存储器直接寻址空间为128字,变址时的位移量为-64-+63,16个通用寄存器均可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(1)直接寻址的二地址指令3条;(2)变址寻址的一地址指令6条;(3)寄存器寻址的二地址指令8条;(4)直接寻址的一地址指令12条;(5)零地址指令32条。问:还有多少种代码未用?若安排寄存器寻址的一地址指令,还能容纳多少条?解:(1)直接寻址的二地址指令中,寻址空间为128字,则需要的地址位为7位;二地址指令的格式OPA1A2

77216操作码为:00、01、10、11此在指令有3条,故可将OP=11作为下一种指令格式的操作码扩展用。(2)变址寻址的一地址指令6条,变址时的位移量为-64-+63,则需占用7位;变址寻址要用到寄存器,可用者为16个,则寄存器的编号需占4位。则变址寻址的一地址指令的格式为:OPRxA2

47516前面已用2位OP,余下编码11作为扩展用,现增加3位OP,其编码为11

000-11

111,即最多有23=8条指令,但只需6条,故可11110和11111作为下一种指令进行扩展用。(3)寄存器寻址的二地址指令中,二地址为寄存器的编号,各占4位,此类指令的格式为:OPRx1Rx2

44816前一类指令OP为5位,其中11110和11111作为扩展用,现增加3位OP,即最多有2×23=16条指令,但现只需8条。11110000…11110

11111111000…11111

111可将最末的8个编码作为下一类指令扩展用。(4)直接寻址的一地址指令中,寻址空间为128字,则需要的地址位为7位;此一地址指令的格式OPA1

7

916此类指令的OP为9位,前一类指令OP为8位,其中有8个编码作为扩展用,现增加1位OP,即最多有8×21=16条指令,但现只需12条。111110000…11111111

1可将最末的4个编码作为下一类指令扩展用。(5)零地址指令是16位均为操作码,比上一类指令多出7位,而上一类指令余下有4个编码,则零地址指令最多有4×27=29=512种现只用了32条,余512-32=480条。前一类指令余下的4个编码为:1111111001111111011111111101111111111111111000000000…111111100001111132条零地址指令的编码为:其中最末4位用于寄存器的编码,则用于操作码的编码为00010~11111,共30个编码。11111110001

00000…11111111111

11111OPRx141216若安排寄存器寻址的一地址指令因余下的480个编码为例7.5设某机配有基址寄存器和变址寄存器,采用一地址格式的指令系统,允许直接和间接寻址,且指令字长、机器字长和存储字长均为16位。(1)若采用单字长指令,共能完成105种操作,则指令可直接寻址的范围为多少?一次间接寻址的寻址范围是多少?画出其指令格式并说明各字段的含义。(2)若存储字长不变,可采用什么方法直接访问容量为16MB的主存?解:(1)单字长指令能完成105种操作,则OP需7位进行编码。因要进行直接和间接寻址,设置有基址寄存器和变址寄存器,故需2位寻址特征位,则指令格式如下:OPMA1

27716因地址编码占7位,故可直接寻址的范围是27=128一次间接寻址的地址在寄存器或存储单元中,其字长均为16位,故可寻址的范围是216=65536(2)因该机字长为16位=2B,主存容量为16MB=8M字=223字,需要的地址编码位数为23位,存储字长不变的情况下,可采用双字长指令,其格式为:第二个字为形式地址,此时,用于寻址的地址编码长7+16=23位,即可访问16MB的主存。OPMA1

27716A2例7.6某模型机共有64种操作,操作码位数固定,且具有以下特点:(1)采用一地址或二地址格式。(2)有寄存器寻址、直接寻址和相对寻址(位移量为-128~+127)三种寻址方式。(3)有16个通用寄存器,算术运算和逻辑运算均在寄存器中,结果也在寄存器中。(4)取数/存数指令在通用寄存器和存储器之间传送数据。(5)存储容量为1MB,按字节编址。要求设计算术逻辑指令、取数/存数指令和相对转移指令的格式,并简述理由。解:有三种寻址方式,需2位作为寻址特征位。16个通用寄存器需4位编码。(1)算术逻辑运算指令采用寄存器—寄存器的方式。取单字长,其格式为OPM

Ri24616Rj4其中操作码OP为6位;M为寻址特征位,占2位,可表示三种寻址方式;参与运算的寄存器的编码各占4位。(2)取数/存数指令为寄存器与存储器之间的数据传送,要访问1MB的存储器,需要的地址编码位数为20位,而模型机采用固定操作码,OP长为6位,需取双字长,即32位。指令格式为:OPM

Ri24616A14A2其中操作码OP为6位;M为寻址特征位,占2位,可表示三种寻址方式;传数的寄存器的编码占4位,用于寻址的地址编码位数为4+16=20位,能寻址1MB的存储空间。(3)相对转移指令为一地址格式,因相对转移量为-128-+127,需8位编码。指令格式为:OPMA28616其中操作码OP为6位;M为寻址特征位,占2位,可表示三种寻址方式;位移量占8位。例7.7设某机共能完成110种操作,CPU有8个通用寄存器(16位),主存容量为4M字,采用寄存器—存储器型指令。(1)欲使指令可直接访问主存的任一地址,指令字长应取多少位?画出指令格式。(2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论