21 指令格式ppt课件.ppt_第1页
21 指令格式ppt课件.ppt_第2页
21 指令格式ppt课件.ppt_第3页
21 指令格式ppt课件.ppt_第4页
21 指令格式ppt课件.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

2.1指令格式,机器指令的要素操作码(OperationCode):指明进行的何种操作(如ADD,I/O)源操作数地址(SourceOperandReference):参加操作的操作数的地址,可能有多个。目的操作数地址(DestinationOperandReference):保存操作结果的地址。下一条指令的地址(NextInstructionReference):指明下一条要运行的指令的位置,一般指令是按顺序依次执行的,所以绝大多数指令中并不显示的指明下一条指令的地址,也就是说,指令格式中并不包含这部分信息。只有少数指令需要显示指明下一条指令的地址。,操作数的来源存储器(存储器地址)寄存器(寄存器地址)输入输出端口(输入输出端口地址),2.1指令格式,操作数的类型地址(操作数地址,指令地址)数值(整型数或定点数,浮点数,十进制数)字符逻辑型数,2.1指令格式,地址的数目三地址:Des(Sur1)OP(Sur2),双地址:Des(Sur)OP(Des),单地址:累加器作为其中一个操作数的双操作数型,或单操作数型,无地址:隐含操作数型,或无操作数型,OP,2.1指令格式,操作码结构固定长度操作码:操作码长度(占二进制位数)固定不变。硬件设计简单指令译码时间开销较小指令空间效率较低可变长度操作码:操作码长度随指令地址数目的不同而不同。硬件设计相对复杂指令译码时间开销教大指令空间利用率较高指令长度定长指令系统变长指令系统:一般为字节的整数倍,2.1指令格式,关于指令扩展操作码的举例1.设某机器采用固定长度指令系统,指令长度为16位,包括3地址指令15条、双地址指令10条和若干单地址指令,假定每个地址占4位,请问,该指令系统最多可以容纳多少单地址指令,并设计该指令系统的操作码编码方案。,基本思路1.每一条指令需要一个唯一的操作码编码。2.不同类型的指令应该具有不同的标识。3.采用扩展操作码方案。,2.2寻址方式,寻址:根据形式地址查找到操作数的过程。,形式地址与有效地址形式地址:指令中直接给出的地址编码。有效地址:根据形式地址和寻址方式计算出来的操作数在内存单元中的地址。,有效地址:操作数Data的内存单元地址Add,2.2寻址方式,寻址方式定义:指令代码中地址字段的一部分,指明操作数的获取方式或操作数地址的计算方式。指令中每一个地址字段均有其寻址方式编码(或隐含寻址方式),目的地址,源地址,2.2寻址方式,指令代码和寻址描述中有关缩写的约定OP:操作码Des:目的操作数地址Sur:源操作数地址A或Add:形式地址(内存地址)Mod:寻址方式Rn:通用寄存器Rx:变址寄存器Rb:基址寄存器SP:堆栈指针(寄存器)EA:有效地址Data:操作数Operand:操作数(X):表示对象X的内容(值),如(Rn)表示寄存器Rn的内容(值),(A):内存中地址为A的单元的内容。Imme.Data:立即数XXH:16进制数XX,2.2寻址方式,立即寻址操作数直接在指令代码中给出。,说明立即寻址只能作为双操作数指令的源操作数。Operand=Imme.Data例:MOVAX,1000H,思考立即寻址的操作数在什么地方,存储器or寄存器?立即数的地址?,2.2寻址方式,寄存器直接寻址操作数在寄存器中,指令地址字段给出寄存器的地址(编码)EA=Rn,Operand=(Rn)例:MOVBX,AX,Data,2.2寻址方式,存储器直接寻址操作数在存储器中,指令地址字段直接给出操作数在存储器中的地址EA=A,Operand=(A)例:MOVAX,1000H,Data,2.2寻址方式,寄存器间接寻址操作数在存储器中,指令地址字段中给出的寄存器的内容是操作数在存储器中的地址。EA=(Rn),Operand=(Rn)例:MOVAX,BX,Data,2.2寻址方式,存储器间接寻址操作数在存储器中,指令地址字段中给出的存储器地址的单元内容是操作数在存储器中的地址。EA=(A1),Operand=(A1)例:MOVR1,(1000H)PDP-11的指令,Data,2.2寻址方式,基址寻址操作数在存储器中,指令地址字段给出一基址寄存器和一形式地址,基变址寄存器的内容与形式地址之和是操作数的内存地址。EA=(Rb)+A,Operand=(Rb)+A)例:MOVAX,1000HBX,Data,基址寻址的作用:较短的形式地址长度可以实现较大的存储空间的寻址。,2.2寻址方式,变址寻址操作数在存储器中,指令地址字段给出一变址寄存器和一形式地址,变址寄存器的内容与形式地址之和是操作数的内存地址。EA=(Rx)+A,Operand=(Rx)+A)有的系统中,变址寻址完成后,变址寄存器的内容将自动进行调整。Rx(Rx)+(操作数Data的字节数)例:MOVAX,1000HDI,Data,变址寻址的作用:数组操作,串操作,2.2寻址方式,相对寻址基址寻址的特例,由程序计数器PC作为基址寄存器,指令中给出的形式地址作为位移量,二者之和是操作数的内存地址。EA=(PC)+A,Operand=(PC)+A)例:JNEA,Data,2.2寻址方式,堆栈寻址堆栈的结构:一段内存区域。栈底,栈顶,堆栈指针(SP):是一个特殊寄存器部件,指向栈顶堆栈操作:PUSH(从寄存器到堆栈),POP(从堆栈到寄存器),2.2寻址方式,堆栈寻址出栈操作:POPRn,假定寄存器Rn为16位寄存器SP(SP)+2,Rn(SP),Data,2.2寻址方式,页面寻址将程序计算器PC的高位部分与形式地址拼接形成操作数的有效地址。EA(PC)H,拼接A内存分位若干页,(PC)H,指明页地址,形式地址A表明页内的位移量,Data,2.2指令类型,数据传送指令:Move,Store,Load,Set,Clear,Exchange算术运算指令:包括定点数、浮点数运算和十进制数运算逻辑运算指令:And,Or,Not,Xor,Compare,Test移位指令算术移位,逻辑移位,循环移位程序控制类指令几个重要的寄存器:程序计数器PC,程序状态字PSW(或标志寄存器),堆栈指针SP转移指令:无条件转移指令,有条件转移指令循环控制指令(LOOP)子程序调用与返回指令(CALL,RET)程序中断指令及返回(INT,IRET)串操作指令(MOVSB,MOVSW)I/O指令:IN,OUT堆栈指令:PUSH,POP,2.2寻址方式,堆栈寻址压栈操作:PUSHRn,假定寄存器Rn为16位寄存器(SP)(Rn),SP(SP)-2,Data,8086/8088指令系统举例,3.180868088指令系统:CPU与存储器结构,80868088CPU寄存器结构,3.180868088指令系统:CPU与存储器结构,存储器及其存储器地址结构主存容量为1M(220),可直接访问的主存物理地址为20位。超过1M的存储空间通过其他方式访问。80868088机器字长16位,所有寄存器长度位16位,数据总线16位。主存采用分段的结构主存存储单元的地址构成:段基址(16bits):段内偏移(16bits)可执行程序(.EXE)的存储结构:代码段(CodeSegment),数据段(DataSegment),堆栈段(StackSegment),扩展数据段(可选)命令程序(.COM)的存储结构:代码段,数据段和堆栈段必须是同一个段。所以命令程序最大为64KB存储空间。,3.180868088指令系统:CPU与存储器结构,存储器地址结构与计算,3.180868088指令系统:CPU与存储器结构,存储器单元结构按字节单元编址,字节单元(2000H)20H(2001H)10H,字单元(2000H)1020H(2004H)5060H,双字单元(2000H)30401020H,3.280868088指令系统:寄存器,通用寄存器:数据寄存器(DataRegister)AX,BX,CX,DX(16位);AH,AL,BH,BL,CH,CL,DH,DL(8位)各寄存器原则上没有固定的应用AX:累加器BX:基址寄存器CX:计数器DX:数据寄存器,3.280868088指令系统:寄存器,通用寄存器:指针寄存器(PointerRegister)堆栈指针:SP(16位)基址指针:BP(16位),默认指向堆栈段,通用寄存器:变址寄存器(IndexRegister)SI,DI:16位一般情况下,二者使用上无差异,在串操作中,SI对应源操作数,DI对应目的操作数,3.280868088指令系统:寄存器,通用寄存器:段寄存器(SegmentRegister)代码段(CodeSegment),数据段(DataSegment),堆栈段(StackSegment),扩展数据段(ExtenddataSegment)代码段寄存器:CS(16bits)数据段寄存器:DS(16bits)堆栈段寄存器:SS(16bits)扩展段寄存器:ES(16bits),3.280868088指令系统:寄存器,指令指针IP(InstructionPointer)IP(16bits)指向代码段中下一条要执行的指令。CS:IP形成下一次要执行的指令的内存地址。,标志寄存器FLAGS(FlagsRegister)16位,记录当前CPU运行程序的各种状态进位标志位CF(CarryFlag)奇偶标志位PF(ParityFlag)辅助进位标志位AF(AuxitiaryFlag)零值标志位ZF(ZeroFlag)符号标志位SF(SignFlag)溢出标志位OF(OverflowFlag)单步跟踪标志位TF(TraceFlag)中断允许标志位IF(Interrupt-enableFlag)方向标志位DF(DirectionFlag),3.380868088指令系统:寻址方式,立即寻址MOVAX,1234H(指令代码:B83412H),3.380868088指令系统:寻址方式,寄存器(直接)寻址MOVAX,BX(指令代码:89D8H),3.380868088指令系统:寻址方式,(存储器)直接寻址MOVAX,0100H(指令代码:A10001H)等价于MOVAX,DS:0100HEA=DS:0100H,3.380868088指令系统:寻址方式,寄存器间接寻址MOVAX,BX(指令代码:8B07H)等价于MOVAX,DS:BXEA=DS:(BX),MOVBH,BP=MOVBH,SS:BPMOVCX,SI=MOVCX,DS:SIMOVDI,BX=MOVDS:DI,BX,3.380868088指令系统:寻址方式,基址(变址)寻址MOVAX,1000HBX(指令代码:8B870001H)等价于MOVAX,DS:BX1000HEA=DS:(BX)+1000H,3.380868088指令系统:寻址方式,基址变址寻址MOVAX,1000HBXSI(指令代码:8B800001H)等价于MOVAX,DS:BX+SI+1000HEA=DS:(BX)+(SI)+1000H基址寄存器只能选:BX,BP变址寄存器只能选:SI,DI基址寄存器BX:默认DS段基址寄存器BP:默认SS段,MOVAX,10HBXDI=MOVAX,DS:BX+DI+10HMOVAL,20HBPSI=MOVAL,SS:BP+SI+20H,3.380868088指令系统:寻址方式,串操作寻址串操作指令(MOVSBMOVSW)隐含的寻址方式源操作数地址DS:(SI)目的操作数地址ES:(DI)寻址完成后SI,DI自动调整(根据方向标志位DF调整),MOVSI,1000HMOVDI,3000HMOVCX,0100HCLDREPMOVSB,3.380868088指令系统:寻址方式,I/O寻址I/O指令特有的寻址方式INAL,DXOUTDX,ALI/O端口地址:12位端口地址I/O端口:I/O接口部件中可访问的空间(寄存器),向COM1口发送字符AMOVDX,3F8HMOVAL,41HOUTDX,AL,3.480868088指令系统:指令格式与编码,一般双操作数指令格式与编码RR型或RS型,必有一个操作数在寄存器中(寄存器直接寻址)长度26个字节(前2个字节必须)Opcode:操作码(6位)d:方向字段(1位)。在第二个字节中,REG确定一个操作数(寄存器直接寻址),MOD和R/M确定零一个操作数的寻址方式。方向字段d表明REG确定的是源操作数还是目的操作数。d=1,REG确定目的操作数,MOD+R/M确定源操作数d=0,REG确定源操作数,MOD+R/M确定目的操作数W:字字节字段(1位):操作数是字节(8位)还是字(16位)W=1,字(16位)W=0,字节(8位),3.480868088指令系统:指令格式与编码,一般双操作数指令格式与编码(续)REG:寄存器字段,指明两个操作数中寄存器直接寻址的那个操作数。与W字段配合使用。,3.480868088指令系统:指令格式与编码,一般双操作数指令格式与编码(续)MOD和R/M:确定另外一个操作数。,3.480868088指令系统:指令格式与编码,一般双操作数指令格式与编码(续)位移量部分:8位或16位,或者无。立即数:8位或16位,或者无。,3.480868088指令系统:指令格式与编码,与累加器(AX或AL)相关双操作数的指令AX(AL):寄存器直接寻址另一操作数:存储器直接立即数指令代码中省略累加器编码字段,采用特定的操作码以区别于其他双操作数指令。,MemAccAccMem,指令:MOVAX,1000H指令代码:101000010000000000010000,3.480868088指令系统:指令格式与编码,指令编码举例MOVAX,1000HBXSIMOV的操作码Opcdoe100010d=1W=1REG=000MOD=10,R/M=000指令前两个字节1000101110000000(8B80H),3.480868088指令系统:指令格式与编码,其他指令格式单操作数指令编码格式与立即数相关的指令的特定格式,单操作数指令,3.580868088指令系统:指令类型,指令类型传送指令:MOV,XCHG,LDS,LEA算术运算指令:ADD,INC,SUB,CMP等逻辑运算指令:AND,OR,NOT,TEST等处理器控制指令:CLC,STC,CLI,STI,CLD,NOP等程序控制指令:CALL,RET,JMP,JNE,INT,IRET等串指令:MOVSB,MOVSW等I/O指令:IN,OUT,3.1指令系统的设计,设计依据操作特性:不同操作的数量,具体是些什么操作,复杂程度等。数据类型:各种操作所处理的数据的类型。指令格式:指令长度,地址数目,指令中不同域的大小等。寄存器数目:CPU中可以直接访问的寄存器的数目及使用方法。寻址(Addressing):操作数的寻址方式。,3.1指令系统的设计,指令设计的相关因素操作数量:决定操作码的位数。操作数数量:采用几个操作数(一般为两个),每个操作数均应包括寻址模式编码。有时操作数是隐含的。寻址方式数量:有时寻址方式可以是隐含的(由操作码决定)。寄存器数量:确定寄存器编码的位数。地址范围:存储器直接寻址很少见,但变址(或基址)寻址时,较大的寻址范围必须以较多的displacement位数为前提。编址粒度(AddressGranularity):字节编址或字编址。字节编址方便,但要以更多的地址位数为代价。,3.1指令系统的设计,指令设计指令编码设计首先考虑指令编码中的固定不变的部分,然后考虑可变的部分。指令编码中的固定部分:指令系统方案确定后不可能发生变化的部分。操作码(数量,位数,编码)寻址方式(数量,位数,编码)寄存器(数量,位数,编码)不同指令所涉及的地址数量,3.1指令系统的设计,指令系统设计举例某机字长为16位,数据总线16位,内存容量64KB,8个16位通用寄存器R0R7。指令系统基本要求是:四种寻址方式:立即寻址,寄存器直接寻址,寄存器间接寻址,变址寻址;立即数和变址寻址时位移量disp均可达16位。32条双操作数指令(其中必有一操作数是寄存器直接寻址)。128条单操作数指令。,3.1指令系统的设计,指令系统设计举例(续)双操作数指令格式,补码除法(加减交替法)规

温馨提示

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

评论

0/150

提交评论