计算机组成原理第三章习题答案.ppt
2008.10,北京理工大学计算机科学技术学院,习题讲评,计算机组成原理习题串讲,2008.10,北京理工大学计算机科学技术学院,习题讲评,3-3 某机为定长指令字结构,指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令已有K种,无操作数指令已有L种,问单操作数指令最多可能有多少种?上述三类指令各自允许的最大指令条数是多少?,2008.10,北京理工大学计算机科学技术学院,习题讲评,双操作数指令K,无操作数指令L,设单操作数指令X,2008.10,北京理工大学计算机科学技术学院,习题讲评,(24-K)26-X26=L,留给单地址的扩展窗口,留给无地址的扩展窗口,(24-K),(24-K)26-X,X=(24-K)26-,上述三类指令各自允许的最大指令条数为:双操作数:24-1 单操作数:1526-1(假设双操作数指令仅1条,为无操作数指令留出1个扩展窗口)。,2008.10,北京理工大学计算机科学技术学院,习题讲评,无操作数:(1526-1)26(假设双操作数指令仅1条,单操作数指令留出1个扩展窗口),这样实现比较简单。如果单操作数指令也仅取1条,则无操作数指令的数目还可以增多,但实现比较麻烦。具体的条数:216 212 26 其中212 为表示某条二地址指令占用的编码数,26为表示某条单地址指令占用的编码数。,2008.10,北京理工大学计算机科学技术学院,习题讲评,3-4 设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案,使该指令系统包含:4条三地址指令,8条二地址指令,180条单地址指令。,若操作码采用定长编码方法,最多只能表示8条三地址指令,显然不能满足要求。故应采用变长编码方法(扩展操作码法)。,2008.10,北京理工大学计算机科学技术学院,习题讲评,为二、一地址指令留下了100111四个扩展窗口,为一地址指令留下了101111三个扩展窗口,2008.10,北京理工大学计算机科学技术学院,习题讲评,101111三个扩展窗口可以扩展出192条一地址指令。643=192 现只需要180条一地址指令,故最后12个操作码编码为非法操作码。,2008.10,北京理工大学计算机科学技术学院,习题讲评,3-10 某机字长为16位,主存容量为64K字,指令格式为单字长单地址,共有64条指令。试说明:(1)若只采用直接寻址方式,指令能访问多少主存单元?(2)为扩充指令的寻址范围,可采用直接/间接寻址方式,若只增加一位直接/间接标志,指令可寻址范围为多少?指令直接寻址的范围为多少?,2008.10,北京理工大学计算机科学技术学院,习题讲评,(3)采用页面寻址方式,若只增加一位Z/C(零页/现行页)标志,指令寻址范围为多少?指令直接寻址范围为多少?(4)采用b、c两种方式结合,指令的寻址范围为多少?指令直接寻址范围为多少?,2008.10,北京理工大学计算机科学技术学院,习题讲评,因机器共64条指令,操作码占6位,其余部分为地址码或标志位。(1)若只采用直接寻址方式,地址码部分为10位,指令能访问的主存单元数为210=1K字。,(2)若采用直接/间接寻址方式,将增加了一位直接/间接标志,地址码部分为9位,指令直接寻址的范围为29=0.5K字,指令可寻址范围为整个主存空间216=64K字。,2008.10,北京理工大学计算机科学技术学院,习题讲评,(3)若采用页面寻址方式,将增加一位Z/C(零页/现行页)标志,所以指令直接寻址范围仍为29=0.5K字,指令寻址范围仍为216=64K字。,(4)采用b、c两种方式结合,将需要和Z/C两个标志位,所以指令直接寻址范围为28=0.25K字,指令的可寻址范围仍为216=64K字。,2008.10,北京理工大学计算机科学技术学院,习题讲评,3-13 计算下列四条指令的有效地址(指令长度为16位)。(1)000000Q(2)100000Q(3)170710Q(4)012305Q 假定:上述四条指令均用八进制书写;指令的最左边是一位间址指示位。(=0,直接寻址;=1,间接寻址),且具有多重间访功能;指令的最右边两位为形式地址;主存容量215单元,下表为有关主存单元的内容(八进制):,2008.10,北京理工大学计算机科学技术学院,习题讲评,(1)000000Q 因为指令的最高位为0,故为直接寻址,EA=A。指令中的形式地址为00Q,因主存容量为215个单元,主存地址共15位,所以EA=00000Q。,00000,2008.10,北京理工大学计算机科学技术学院,习题讲评,(2)100000Q 因为指令的最高位为1,故指令为间接寻址。(00000)=100002,最高位仍为1,继续间接寻址。(00002)=054304,其最高位为0,表示已找到有效地址,EA=54304Q。,00000,00002,100002,054304,054304,2008.10,北京理工大学计算机科学技术学院,习题讲评,(3)170710Q 因为指令的最高位为1,故指令为间接寻址。(00010)=100005,最高位仍为1,继续间接寻址。(00005)=100001,最高位仍为1,继续间接寻址。(00001)=046710,其最高位为0,表示已找到有效地址,EA=46710Q。,00010,00005,00001,100005,100001,046710,046710,2008.10,北京理工大学计算机科学技术学院,习题讲评,(4)012305Q 因为指令的最高位为0,故为直接寻址,EA=A。指令中的形式地址为05Q,因主存容量为215个单元,地址主存共15位,所以EA=00005Q。,00005,2008.10,北京理工大学计算机科学技术学院,习题讲评,3-14 假定某机的指令格式如下:,其中:Bit8=1:变址寄存器I1寻址;Bit7=1:变址寄存器I2寻址;Bit6(零页/现行页寻址):Z/C=0,表示0页面;Z/C=1,表示现行页面,即指令所在页面,2008.10,北京理工大学计算机科学技术学院,习题讲评,若主存容量为212个存储单元,分为26个页面,每个页面有26个字。设有关寄存器的内容为:(PC)=0340Q(I1)=1111Q(I2)=0256Q 试计算下列指令的有效地址。(1)1046Q(2)2433Q(3)3215Q(4)1111Q,2008.10,北京理工大学计算机科学技术学院,习题讲评,(1)1046Q 将用八进制书写的指令变换成二进制。1 0 4 6,001 000 100 110,因为四个标志位均为0,故为直接寻址。EA=A=100110B=46Q 因主存容量为212个存储单元,主存地址共12位,所以EA=0046Q,2008.10,北京理工大学计算机科学技术学院,习题讲评,(2)2433Q 将用八进制书写的指令变换成二进制。2 4 3 3,010 100 011 011,因为Bit8(I1)=1,故为变址寄存器1寻址。EA=(I1)+A=1111Q+33Q=1144Q,001 001 001 001,+011 011,001 001 100 100,2008.10,北京理工大学计算机科学技术学院,习题讲评,(3)3215Q 将用八进制书写的指令变换成二进制。3 2 1 5,011 010 001 101,因为Bit7(I2)=1,故为变址寄存器2寻址。EA=(I2)+A=0256Q+15Q=0273Q,000 010 101 110,+001 101,000 010 111 011,2008.10,北京理工大学计算机科学技术学院,习题讲评,(4)1111Q 将用八进制书写的指令变换成二进制。1 1 1 1,001 001 001 001,因为Bit6(Z/C)=1,故为当前页寻址。EA=(PC)HA=03Q11Q=0311Q,000 011,001 001,000 011 001 001,2008.10,北京理工大学计算机科学技术学院,习题讲评,3-17 设相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量,用补码表示。假设当前转移指令第一字节所在的地址为2000H,且CPU每取一个字节便自动完成(PC)+1PC的操作。试问当执行JMP*+8和JMP*-9指令(*为相对寻址特征)时,转移指令第二字节的内容各为多少?,2008.10,北京理工大学计算机科学技术学院,习题讲评,转移指令第一字节所在的地址为2000H,指令执行过程中自动完成(PC)+22000H+2=2002H。当执行JMP*+8时,转移指令第二字节的内容为08H,转移地址为200AH。当执行JMP*-9指令时,转移指令第二字节的内容为F7H,转移地址为1FF9H。,2008.10,北京理工大学计算机科学技术学院,习题讲评,3-21 在某些计算机中,调用子程序的方法是这样实现的:转子指令将返回地址存入子程序的第一个字单元,然后从第二个字单元开始执行子程序,回答下列问题:(1)为这种方法设计一条从子程序转到主程序的返回指令。(2)在这种情况下,怎么在主、子程序间进行参数的传递?(3)上述方法是否可用于子程序的嵌套?,2008.10,北京理工大学计算机科学技术学院,习题讲评,(4)上述方法是否可用于子程序的递归(即某个子程序自己调用自己)?(5)如果改用堆栈方法,是否可实现d所提出的问题?,2008.10,北京理工大学计算机科学技术学院,习题讲评,(1)返回指令通常为零地址指令。返回地址保存在堆栈中,执行返回指令时自动从堆栈中弹出。而目前返回地址是保存在子程序的第一个单元中,故此时返回指令不能再是零地址指令了,而应当是一地址指令。如,间接寻址可找到返回地址,然后无条件转移到返回的位置。,2008.10,北京理工大学计算机科学技术学院,习题讲评,主程序,子程序,CALL A,K,K+1,A,K+1,JMP A,CALL A,JMP A,返回地址,2008.10,北京理工大学计算机科学技术学院,习题讲评,(2)在这种情况下,可利用寄存器或主存单元进行主、子程序间的参数传递。(3)可以用于子程序的嵌套(多重转子)。因为每个返回地址都放在调用的子程序的第一个单元中。(4)不可以用于子程序的递归,因为当某个子程序自己调用自己时,第一个单元的内容将被破坏。(5)如果改用堆栈方法,可以实现子程序的递归,因堆栈具有后进先出的功能。,