第3章习题解答
字符串是什么样
1    1..指令长度和机器字长有什么关系指令长度和机器字长有什么关系??半字长指令、单字长指令、双字长指令分别表示什么意思么意思? ?
解:解:指令长度与机器字长没有固定的关系,指令长度与机器字长没有固定的关系,指令长度可以等于机器字长,指令长度可以等于机器字长,指令长度可以等于机器字长,也可以大于或也可以大于或小于机器字长。通常,把指令长度等于机器字长的指令称为单字长指令;把指令长度等于机器字长的指令称为单字长指令;指令长度等于半个指令长度等于半个机器字长的指令称为半字长指令;指令长度等于两个机器字长的指令称为双字长指令。机器字长的指令称为半字长指令;指令长度等于两个机器字长的指令称为双字长指令。
2    2..零地址指令的操作数来自哪里零地址指令的操作数来自哪里??一地址指令中,另一个操作数的地址通常可采用什么寻址方式获得寻址方式获得??各举一例说明。各举一例说明。
解:解:
双操作数的零地址指令的操作数来自堆栈的栈顶和次栈顶。双操作数的一地址指令的另一个操作数通常可采用隐含寻址方式获得,即将另一操作数预先存放在累加器中。例如,前述零地址和一地址的加法指令。前述零地址和一地址的加法指令。
3    3.某机为定长指令字结构,.某机为定长指令字结构,.某机为定长指令字结构,指令长度指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。操作数、单操作数和双操作数三类。若双操作数指令已有若双操作数指令已有K 种,无操作数指令已有L 种,问单操作数指令最多可能有多少种单操作数指令最多可能有多少种??上述三类指令各自允许的最大指令条数是多少上述三类指令各自允许的最大指令条数是多少? ?    解:解:解:X= (2X= (24一K)×26一[L/26]
双操作数指令的最大指令数:双操作数指令的最大指令数:双操作数指令的最大指令数:224一1。
单操作数指令的最大指令数:15×2单操作数指令的最大指令数:15×26一l(l(假设双操作数指令仅假设双操作数指令仅1条,为无操作数指令留
出1个扩展窗口个扩展窗口))。
无操作数指令的最大指令数:无操作数指令的最大指令数:216一212一26。
其中212为表示某条二地址指令占用的编码数,数,226为表示某条单地址指令占用的编码数。此时双操作数和单操作数指令各仅有1条。条。
4  4..
设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案,使该指令系统包含:使该指令系统包含:44条三地址指令,条三地址指令,88条二地址指令,条二地址指令,180180条单地址指令。条单地址指令。      解:解:解:44条三地址指令条三地址指令
000 XXX YYY ZZZ
..
..
011 XXX YYY ZZZ
8条二地址指令条二地址指令
100 000 XXX YYY
..
..
100 111 XXX YYY
180条单地址指令条单地址指令
101 000 000 XXX
..
..
111 110 011 XXX
5    5.指令格式同上题,能否构成:.指令格式同上题,能否构成:.指令格式同上题,能否构成:
三地址指令三地址指令4条,单地址指令255条,零地址指令64条?为什么为什么? ?
解:三地址指令解:三地址指令4条
000 XXX YYY ZZZ
..
..
011 XXX YYY ZZZ    单地址指令单地址指令255条
100 000 000 XXX
..
..
111 111 110 YYY
只能再扩展出零地址指令只能再扩展出零地址指令8条,所以不能构成这样的指令系统。条,所以不能构成这样的指令系统。
6    6.指令中地址码的位数与直接访问的主存容量和最小寻址单位有什么关系.指令中地址码的位数与直接访问的主存容量和最小寻址单位有什么关系.指令中地址码的位数与直接访问的主存容量和最小寻址单位有什么关系? ?        解:解:
主存容量越大,所需的地址码位数就越长。对于相同容量来说,最小寻址单位越小,地址码的位数就越长。地址码的位数就越长。
7    7.试比较间接寻址和寄存器间址。.试比较间接寻址和寄存器间址。.试比较间接寻址和寄存器间址。
解:解:间接寻址方式的有效地址在主存中,间接寻址方式的有效地址在主存中,操作数也在主存中;操作数也在主存中;操作数也在主存中;寄存器间址方式的有效地寄存器间址方式的有效地址在寄存器中,操作数在主存中。所以间接寻址比较慢。址在寄存器中,操作数在主存中。所以间接寻址比较慢。
8    8.试比较基址寻址和变址寻址。.试比较基址寻址和变址寻址。.试比较基址寻址和变址寻址。
解:解:
基址寻址和变址寻址在形成有效地址时所用的算法是相同的,但是它们两者实际上是有区别的。一般来说,变址寻址中变址寄存器提供修改量变址寻址中变址寄存器提供修改量((可变的可变的)),而指令中提供基准值(固定的固定的));基址寻址中基址寄存器提供基准值基址寻址中基址寄存器提供基准值((固定的固定的)),而指令中提供位移量而指令中提供位移量((可变的可变的))。这两种寻址方式应用的场合也不同,两种寻址方式应用的场合也不同,变址寻址是面向用户的,变址寻址是面向用户的,用于访问字符串、向量和数组等成批数据;而基址寻址面向系统,主要用于逻辑地址和物理地址的变换,主要用于逻辑地址和物理地址的变换,用以解决程序在主用以解决程序在主存中的再定位和扩大寻址空间等问题。在某些大型机中,基址寄存器只能由特权指令来管理,用户指令无权操作和修改。用户指令无权操
作和修改。
9    9.某机字长为.某机字长为16位,主存容量为64K 字,采用单字长单地址指令,共有50条指令。若有直接寻址、间接寻址:变址寻址、相对寻址四种寻址方式,试设计其指令格式。若有直接寻址、间接寻址:变址寻址、相对寻址四种寻址方式,试设计其指令格式。          解:操作码解:操作码6位,寻址方式2位,地址码8位。位。
10    10.某机字长为.某机字长为16位,主存容量为64K 字,指令格式为单字长单地址,共有64条指条指      令。试说明:令。试说明:令。试说明:
(1)    (1)若只采用直接寻址方式,指令能访问多少主存单元若只采用直接寻址方式,指令能访问多少主存单元若只采用直接寻址方式,指令能访问多少主存单元? ?
(2)    (2)为扩充指令的寻址范围,可采用直接/间接寻址方式,若只增加一位直接/间接标为扩充指令的寻址范围,可采用直接/间接寻址方式,若只增加一位直接/间接标为扩充指令的寻址范围,可采用直接/间接寻址方式,若只增加一位直接/间接标    志,指令可寻址范围为多少志,指令可寻址范围为多少??指令直接寻址的范围为多少指令直接寻址的范围为多少? ?
(3)    (3)采用页面寻址方式,若只增加一位采用页面寻址方式,若只增加一位z /c(c(零页/现行页零页
/现行页零页/现行页))标志,指令寻址范围为多标志,指令寻址范围为多    少?指令直接寻址范围为多少指令直接寻址范围为多少?  ?
(4)    (4)采用采用采用(2)(2)(2)、、(3)(3)两种方式结合,指令的寻址范围为多少两种方式结合,指令的寻址范围为多少两种方式结合,指令的寻址范围为多少??指令直接寻址范围为多少指令直接寻址范围为多少?    ?            解:因为计算机中共有解:因为计算机中共有64条指令,所以操作码占6位,其余部分为地址码或标志位。位,其余部分为地址码或标志位。
(1)    (1)若只采用直接寻址方式,地址码部分为若只采用直接寻址方式,地址码部分为10位,指令能访问的主存单元数为210=1K
字。字。
(2)    (2)若采用直接/间接寻址方式,将增加了一位直接/间接标志,地址码部分为若采用直接/间接寻址方式,将增加了一位直接/间接标志,地址码部分为9位,位,
指令直接寻址的范围为指令直接寻址的范围为29=0=0..5K 字,指令可寻址范围为整个主存空间216=64K 字。字。
(3)    (3)若采用页面寻址方式,将增加一位若采用页面寻址方式,将增加一位z /c(c(零页/现行页零页
/现行页零页/现行页))标志,所以指令直接寻址标志,所以指令直接寻址
范围仍为29=0=0..5K 字,指令寻址范围仍为216=64K 字。字。
(4)    (4)此时将需要此时将需要此时将需要@@和z /c 两个标志位,所以指令直接寻址范围为28=0=0..25K 字,指令寻
址范围仍为216=64K 字。字。
11  11.设某机字长.设某机字长32位,位,CPU CPU 有32个32位的通用寄存器,设计一个能容纳的单字长指令
系统。系统。
(1)  (1)如果是存储器间接寻址方式的寄存器一存储器型指令,能直接寻址的空间是多少如果是存储器间接寻址方式的寄存器一存储器型指令,能直接寻址的空间是多少如果是存储器间接寻址方式的寄存器一存储器型指令,能直接寻址的空间是多少??
(2)  (2)如果采用通用寄存器作为基址寄存器,能直接寻址的最大主存空间又是多少如果采用通用寄存器作为基址寄存器,能直接寻址的最大主存空间又是多少如果采用通用寄存器作为基址寄存器,能直接寻
址的最大主存空间又是多少? ?    解:因为计算机中共有解:因为计算机中共有64条指令,所以操作码占6位;位;3232个通用寄存器,寄存器编号占5位;其余部分为地址码或标志位。位;其余部分为地址码或标志位。
(1)  (1)如果是存储器间接寻址方式的寄存器一存储器型指令,如果是存储器间接寻址方式的寄存器一存储器型指令,操作码6位,
寄存器编号5位,间址标志1位,地址码20位,直接寻址的最大主存空间是220字。字。
(2)    (2)如果采用通用寄存器作为基址寄存器,如果采用通用寄存器作为基址寄存器,如果采用通用寄存器作为基址寄存器,EA=(Rb)+A EA=(Rb)+A EA=(Rb)+A,能直接寻址的最大主存空间是,能直接寻址的最大主存空间是232字。字。
12  12.已知某小型机字长为.已知某小型机字长为16位,其双操作数指令的格式如下:位,其双操作数指令的格式如下:
其中:OP 为操作码,R 为通用寄存器地址。为通用寄存器地址。试说明下列各种情况下能访问的最大
主存区域有试说明下列各种情况下能访问的最大主存区域有多少机器字多少机器字? ?
(1)A 为立即数。为立即数。
(2)A 为直接主存单元地址。为直接主存单元地址。
(3)A 为间接地址为间接地址((非多重间址非多重间址) )
(4)A 为变址寻址的形式地址,假定变址寄存器为R 1(字长为16位)。
解:解:解:    (1)1    (1)1个机器字。个机器字。
(2)256个机器字。个机器字。
(3)65536个机器字。个机器字。
(4)65536个机器字。个机器字。    13  13.计算下列.计算下列4条指令的有效地址
条指令的有效地址((指令长度为16位)。          (1)000000Q
(2)l00000Q
(3)170710Q
(4)012305Q
假定:假定:上述4条指令均用八进制书写,条指令均用八进制书写,指令的最左边是一位间址指示位指令的最左边是一位间址指示位指令的最左边是一位间址指示位@(@=O @(@=O @(@=O,,直接寻址;
@=1@=1,间接寻址,间接寻址,间接寻址)),且具有多重间访功能;指令的最右边两位为形式地址;主存容量215单元,
下表为有关主存单元的内容下表为有关主存单元的内容((八进制八进制))。
解:解:
(1)000000Q
因为指令的最高位为因为指令的最高位为0,故为直接寻址,,故为直接寻址,EA=A=00000Q EA=A=00000Q EA=A=00000Q。。    (2)100000Q
因为指令的最高位为因为指令的最高位为1,故指令为间接寻址。,故指令为间接寻址。
(00000)=100002    (00000)=100002,最高位仍为,最高位仍为1,继续间接寻址,,继续间接寻址,(00002)=054304(00002)=054304(00002)=054304,其最高位为,其最高位为0,表示已经到有效地址,示已经到有效地址,EA=54304Q EA=54304Q EA=54304Q。。
(3)170710Q
因为指令的最高位为1,故指令为间接寻址。,故指令为间接寻址。(00010)=100005(00010)=100005(00010)=100005,最高位仍为,最高位仍为1,继续间接寻址。间接寻址。(00005)=100001(00005)=100001(00005)=100001,最高位仍为,最高位仍为1,继续间接寻址。,继续间接寻址。(00001)=046710(00001)=046710(00001)=046710,其最高位为,其最高位为0,表示已到有效地址,,表示已到有效地址,EA=46710Q EA=46710Q EA=46710Q。。
(4)012305Q
因为指令的最高位为0,故为直接寻址,,故为直接寻址,EA=A=00005Q EA=A=00005Q EA=A=00005Q。。
1414.假定某机的指令格式如下:.假定某机的指令格式如下:.假定某机的指令格式如下:
其中:其中:
Bitll=1  Bitll=1:间接寻址;:间接寻址;:间接寻址;
Bit8=1  Bit8=1:变址寄存器:变址寄存器I 1寻址;寻址;
Bit7=1  Bit7=1:变址寄存器:变址寄存器I 2寻址;寻址;
Bit6(  Bit6(零页/现行页寻址零页/现行页寻址零页/现行页寻址)):Z /C=0C=0,表示,表示O 页面;页面;Z Z /C=1C=1,表示现行页面,即指令所在页,表示现行页面,即指令所在页面。面。
若主存容量为若主存容量为212个存储单元,分为26个页面,每个页面有26
个字。个字。      设有关寄存器的内容为设有关寄存器的内容为设有关寄存器的内容为  (PC)=0340Q    (11)=11llQ    (12)=0256Q  (PC)=0340Q    (11)=11llQ    (12)=0256Q
试计算下列指令的有效地址。试计算下列指令的有效地址。试计算下列指令的有效地址。
(1)1046Q
(2)2433Q
(3)32150
(4)1111Q
解:解:
(1)1046Q=001 000 100 110
因为4个标志位均为0,故为直接寻址,,故为直接寻址,EA=A=0046Q EA=A=0046Q EA=A=0046Q。。
(2)2433Q 一010 100 011 011
因为Bit8(I 1)=1)=1,故为变址寄存器,故为变址寄存器1寻址,寻址,EA=(I EA=(I 1)+A=1111+33=1144Q )+A=1111+33=1144Q。。
(3)3215Q=011 010 001 101
因为Bit7(I 2)=1)=1,故为变址寄存器,故为变址寄存器2寻址,寻址,EA=(I EA=(I 2)+A=0256+15=0273Q )+A=0256+15=0273Q。。
(4)111lQ 一001 001 001 001
因为Bit6(z Bit6(z//C)=1C)=1,故为当前页寻址,,故为当前页寻址,,故为当前页寻址,EA=EA=EA=(PC)H∥A (PC)H∥A (PC)H∥A==03∥1103∥11=0311Q =0311Q =0311Q。。
1515.假定指令格式如下:.假定指令格式如下:.假定指令格式如下:            ,,
其中:其中:其中:D D /I 为直接/间接寻址标志,为直接/间接寻址标志,D D /I=0表示直接寻址,表示直接寻址,D D /I=1表示间接寻址。其
余标志位同题14说明。说明。
若主存容量为若主存容量为216个存储单元,分为28个页面,每个页面有28个字。设有关寄存器的内
容为容为        (I 1)=002543Q    (I 2)=063215Q    (PC)=004350Q
试计算下列指令的有效地址。试计算下列指令的有效地址。试计算下列指令的有效地址。
(1)152301Q
(2)074013Q
(3)161123Q
(4)140011Q
解:解:
(1) 152301Q =1 101 010 011 000 001
因为Bit10(I 2)=1)=1,故为变址寄存器,故为变址寄存器2寻址,寻址,EA=(I EA=(I 2)+A=063215+301=063516Q )+A=063215+301=063516Q。。
(2) 074013Q=0 111 100 000 001 011
因为Bit11(I 1)=1)=1,故为变址寄存器,故为变址寄存器1寻址,寻址,EA=(I EA=(I 1)+A=002543+013=002556Q )+A=002543+013=002556Q。。
(3) 161123Q=1 110 001 001 010 011
因为Bit9(z Bit9(z//C)=1C)=1,故为当前页寻址,,故为当前页寻址,,故为当前页寻址,EA=EA=EA=(PC)∥A (PC)∥A (PC)∥A=994123Q =994123Q =994123Q。。
(4)140011Q=1 100 000 000 001 001
因为因为4个标志位均为O ,故为直接寻址,,故为直接寻址,EA=A=000011Q EA=A=000011Q EA=A=000011Q。。
1616.举例说明哪几种寻址方式除去取指令以外不访问存储器.举例说明哪几种寻址方式除去取指令以外不访问存储器.举例说明哪几种寻址方式除去取指令以外不访问存储器??哪几种寻址方式除去取指令外只需访问一次存储器?令外只需访问一次存储器???完成什么样的指令,包括取指令在内共访问4次存储器次存储器? ?
解:解:
除去取指令外不访问存储器:立即寻址,寄存器寻址。除去取指令外不访问存储器:立即寻址,寄存器寻址。
除去取指令外只需访问一次存储器:除去取指令外只需访问一次存储器:直接寻址,寄存器间接寻址,直接寻址,寄存器间接寻址,直接寻址,寄存器间接寻址,变址寻址,基址寻变址寻址,基址寻址,相对寻址,页面寻址。址,相对寻址,页面寻址。
二级间接寻址包括取指令在内共访问二级间接寻址包括取指令在内共访问4次存储器。次存储器。
17    17..设相对寻址的转移指令占两个字节,设相对寻址的转移指令占两个字节,第一个字节是操作码,第一个字节是操作码,第一个字节是操作码,第二个字节是相对位移第二个字节是相对位移量,用补码表示,假设当前转移指令第一字节所在的地址为2000H 2000H,且,且CPU 每取一个字节便自动完成自动完成(PC)+1(PC)+1一PC 的操作。试问当执行JMP*+8和JMP*JMP*一一9指令指令(*(*(*为相对寻址特征为相对寻址特征为相对寻址特征))时,转移指令第二字节的内容各为多少转移指令第二字节的内容各为多少??转移的目的地址各是什么转移的目的地址各是什么? ?
解:转移指令第二字节的内容分别为:解:转移指令第二字节的内容分别为:解:转移指令第二字节的内容分别为:00001000(+8)00001000(+8)00001000(+8),,11110111(11110111(一一9)9)转移的目的地址转移的目的地址分别为:分别为:200AH 200AH 200AH,,1FF9H 1FF9H。。
18    18..什么叫主程序和子程序什么叫主程序和子程序??调用子程序时还可采用哪几种方法保存返回地址调用子程序时还可采用哪几种方法保存返回地址??画图说明调用子程序的过程。调用子程序的过程。
解:解:主程序就是指通常的程序,主程序就是指通常的程序,而子程序是一组可以公用的指令序列,而子程序是一组可以公用的指令序列,而子程序是一组可以公用的指令序列,只要知道子程序只要知道子程序的入口地址就能调用它。的入口地址就能调用它。
保存返回地址的方法有多种:保存返回地址的方法有多种:保存返回地址的方法有多种:
(1)    (1)用子程序的第一个字单元存放返回地址。转子指令把返回地址存放在子程序的第一用子程序的第一个字单元存放返回地址。转子指令把返回地址存放在子程序的第一个字单元中,子程序从第二个字单元开始执行。返回时将第一个字单元地址作为间接地址,采用间址方式返回主程序。采用间址方式返回主程序。
(2)    (2)用寄存器存放返回地址。转子指令先把返回地址放到某一个寄存器中,再由子程序用寄存器存放返回地址。转子指令先把返回地址放到某一个寄存器中,再由子程序将寄存器中的内容转移到另一个安全的地方。将寄存器中的内容转移到另一个安全的地方。
(3)    (3)用堆栈保存返回地址。用堆栈保存返回地址。用堆栈保存返回地址。
调用子程序的过程如下图所示,此时返回地址保存在堆栈中。调用子程序的过程如下图所示,此时返回地址保存在堆栈中。调用子程序的过程如下图所示,此时返回地址保存在堆栈中。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。