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(3)SP的修改与主存编址方法有关①按字编址进栈出栈(SP)–1SP(SP)+1SP②按字节编址存储字长16位进栈出栈(SP)–2SP(SP)+2SP存储字长32位进栈出栈(SP)–4SP(SP)+4SP【例4.1】某计算机存储器按字(16位)编址,每取出一条指令后PC值自动加1,说明其指令长度是()。A.1个字节B.2个字节C.3个字节D.4个字节第4章指令系统例题第4章指令系统【例4.2】在关于一地址运算类指令的叙述中,正确的是()A.仅有一个操作数,其地址由指令的地址码提供B.可能有一个操作数,也可能有两个操作数C.一定有两个操作数,另一个是隐含的D.指令的地址码字段存放的一定是操作码第4章指令系统【例4.3】一个计算机系统采用32位单字长指令,地址码为12位,如果定义了250条二地址指令,那么单地址指令的条数有()A.4KB.8KC.16KD.24K第4章指令系统【例4.4】设机器字长32位,一个容量为16MB的存储器,CPU按半字寻址,其寻址单元数是()A.224B.223C.222D.221【例4.5】设机器字长32位,一个容量为16MB的存储器,若按双字编址,其寻址单元数是()A.8MBB.2MC.4MD.16M第4章指令系统【例4.6】在一个36位长的指令系统中,设计一个扩展操作码,使之能表示下列指令:(1)7条具有两个15位地址和一个3位地址的指令;(2)500条具有一个15位地址和一个3位地址的指令;(3)50条无地址指令。第4章指令系统(1)(2)(3)OP(3)A1(15)A2(15)A3(3)000…010OP1(3)OP2(15)A1(15)A2(3)111000000000000000…000000111110011OP1(3)OP2(15)OP3(18)111000000111110100000000000000000000……000001000100101000000000000000000第4章指令系统【例4.7】某机字长16位,存储器直接寻址空间128字,变址时的位移量为-64~63,16个通用寄存器可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(1)直接寻址的二地址指令3条。(2)变址寻址的一地址指令6条。(3)寄存器寻址的二地址指令8条。(4)直接寻址的一地址指令12条。(5)零地址指令32条。试问还有多少种代码未用?若安排寄存器寻址的一地址指令,还能容纳多少条?第4章指令系统某机字长16位,存储器直接寻址空间128字,变址时的位移量为-64~63,16个通用寄存器可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(1)直接寻址的二地址指令3条。000110OP(2)A1(7)A2(7)第4章指令系统某机字长16位,存储器直接寻址空间128字,变址时的位移量为-64~63,16个通用寄存器可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(2)变址寻址的一地址指令6条。1100011001……11101OP(5)Rx(4)A(7)第4章指令系统某机字长16位,存储器直接寻址空间128字,变址时的位移量为-64~63,16个通用寄存器可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(3)寄存器寻址的二地址指令8条。1111000011110001……11110111OP(8)Ri(4)Rj(4)第4章指令系统某机字长16位,存储器直接寻址空间128字,变址时的位移量为-64~63,16个通用寄存器可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(4)直接寻址的一地址指令12条。111110000111110001……111111011OP(9)A(7)第4章指令系统某机字长16位,存储器直接寻址空间128字,变址时的位移量为-64~63,16个通用寄存器可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(5)零地址指令32条。11111110000000001111111000000001……1111111000011111OP(16)第4章指令系统某机字长16位,存储器直接寻址空间128字,变址时的位移量为-64~63,16个通用寄存器可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。试问还有多少种代码未用?若安排寄存器寻址的一地址指令,还能容纳多少条?(480,30)11111110000111111111111111111111OP(12)Ri(4)第4章指令系统【例4.8】假设寄存器R中的数值为200,主存地址为200和300的地址单元中存放的内容分别是300和400,若访问到的操作数是200,则寻址方式是()A.直接寻址200B.寄存器间接寻址(R)C.存储器间接寻址(200)D.寄存器寻址R分析:直接寻址200和寄存器间接寻址(R)获得的操作数是300,存储器间接寻址(200)获得操作数是400,寄存器寻址R获得操作数200.第4章指令系统【例4.9】在变址寄存器寻址方式中,若变址寄存器的内容是4E3CH,指令中的形式地址是63H,则它对应的有效地址是()A.63HB.4D9FHC.4E3CHD.4E9FH第4章指令系统【例4.10】一条双字长的LOAD指令存储在地址为200和201的存储位置,该指令将指定的内容装入累加器AC中。指令的第一个字指定操作码和寻址方式,第二字是地址部分。寄存器与主存内容示意图如图所示,指令的寻址方式字段可指定任何一种寻址方式。问在下列寻址方式中,装入AC的值。(1)直接寻址(2)立即寻址(3)间接寻址(4)相对寻址(5)变址寻址(6)寄存器R1寻址(7)寄存器R1间接寻址(800)(500)(300)(325)(900)(400)(700)第4章指令系统【例4.11】堆栈寻址中,设A为累加器,SP为堆栈指示器,MSP为SP指示的栈顶单元,如果进栈操作的动作顺序是(A)MSP,(SP)-1SP,那么出栈操作动作顺序应为()A.(MSP)A,(SP)+1SPB.(SP)+1SP,(MSP)AC.(SP)-1SP,(MSP)AD.以上都不对第4章指令系统【例4.12】在向上生成(地址码减小方向)堆栈中,若约定为实顶栈(即堆栈指针随时指向实有数据的堆栈),则正确的弹出数据操作为()A.先使(SP)+1,再读出数据B.先读出数据,再使(SP)+1C.先使(SP)-1,再读出数据D.先读出数据,再使(SP)-1第4章指令系统【通考真题1】某机器字长16位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一个字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节PC自动加1。若某转移指令所在主存地址为2000H,相对位移量字段的内容为06H,则该转移指令成功转移后的目标地址是()A.2006HB.2007HC.2008HD.2009H第4章指令系统【通考真题2】下列关于RISC的叙述中,错误的是()A.RISC普遍采用微程序控制器B.RISC大多数指令在一个时钟周期内完成C.RISC的内部通用寄存器数量相对CISC多D.RISC的指令数、寻址方式和指令格式种类相对CISC少第4章指令系统【通考真题3】某计算机字长16位,主存地址空间大小为128KB,按字编址,采用定长指令格式,指令各字段定义如下:转移指令采用相对寻址方式,相对偏移是用补码表示,寻址方式定义如下:第4章指令系统(1)该指令系统最多可有多少条指令?该计算机最多有多少个通用寄存器?存储器地址寄存器(MAR)和存储器数据寄存器(MDR)至少各需多少位?(16,8,16,16)(2)转移指令的目标地址范围是多少?(0~216-1)(3)若操作码0010B表示加法操作(助记符add),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H,地址1234H的内容为5678H,地址5678H中的内容为1234H,则汇编语句为”add(R4),(R5)+”(逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储单元的内容会改变?改变后的内容是什么?(2315H,(R5)=5679H,存储单元5678H的内容变为68ACH)