计算机组成原理蒋本珊第三章Word文件下载.docx
《计算机组成原理蒋本珊第三章Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机组成原理蒋本珊第三章Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
>
F
。
丄丄XXX\\\ZZZ
S条二Hk刚:
描令
100000XXXYYV
100111XXXYVV
ISO级甲虺如;
指令
1O1OOOOOOXXX
Ill丄丄0。
丄丄XXX
5.指令格式同上题,能否构成:
三地址指令4条,单地址指令2
55条,零地址指令64条?
为什么?
解匸二地址描令4条
000XXXYYYZZZ
4«
A
011XXXYYYZZZ
单地址捋令255荼
100000000XXX
111111110YYY
只能再扩展岀零地址搐令S条”所以不能购成这样的描令系统“
6.指令中地址码的位数与直接访问的主存容量和最小寻址单位有
什么关系?
66解:
主存容量越大,所需的地址码位数就越长。
对于相同容量来说,最小寻址单位越小,地址码的位数就越长。
7.试比较间接寻址和寄存器间址。
间接寻址方式的有效地址在主存中,操作数也在主存中;
寄存器间址方式的有效地址在寄存器中,操作数在主存中。
所以间接寻
址比较慢。
8.试比较基址寻址和变址寻址。
基址寻址和变址寻址在形成有效地址时所用的算法是相同的,但是它们两者实际上是有区别的。
一般来说,变址寻址中变址寄存器提供修改量(可变的),而指令中提供基准值(固定的);
基
址寻址中基址寄存器提供基准值(固定的),而指令中提供位移量
(可变的)。
这两种寻址方式应用的场合也不同,变址寻址是面向用户的,用于访问字符串、向量和数组等成批数据;
而基址寻址面向系统,主要用于逻辑地址和物理地址的变换,用以解决程序在主存中的再定位和扩大寻址空间等问题。
在某些大型机中,基址寄存器只能由特权指令来管理,用户指令无权操作和修改。
9.某机字长为16位,主存容量为64K字,采用单字长单地址指令,共有50条指令。
若有直接寻址、间接寻址、变址寻址、相对寻址四种寻址方式,试设计其指令格式。
操作码6位,寻址方式2位,地址码8位。
10.某机字长为16位,主存容量为64K字,指令格式为单字长单地址,共有64条指令。
试说明:
(1)若只采用直接寻址方式,指令能访问多少主存单元?
(2)为扩充指令的寻址范围,可采用直接/间接寻址方式,若只
增加一位直接/间接标志,指令可寻址范围为多少?
指令直接寻址
的范围为多少?
(3)采用页面寻址方式,若只增加一位Z/C(零页/现行页)标
志,指令寻址范围为多少?
指令直接寻址范围为多少?
(4)采用
(2)、(3)两种方式结合,指令的寻址范围为多
少?
指令直接寻址范围为多少?
解:
因为卄畀机中共有64条捋令,所以操作码占6位.其余部分先地址码威标志位,
(1)若貝采用直接寻址方式"
地址码部分为ioajs令能访问的主存单元数为晋=
C)若采用肯接间接吊址方式*将增加f-位自接间接标志•地址码部分为9位、搞令直接寻址的范围为2"
=0^字,指令可寻址范国为整个主存空间2l°
=64K字口
(3)若采用页面寻址方式,将增加一位Z/C(?
页徳行页瘍志,所以指令有接寻址范围仍为夕=05K字•描令寻址范围仍为加=関K字.
(4)此时将需要@和2化两个标志位,所喙指令直接寻址范围为2*=0.25K指令的可寻址范围仍为216=64K字扫
11.设某机字长32位,CPU有32个32位的通用寄存器,设计一个能容纳64种操作的单字长指令系统。
(1)如果是存储器间接寻址方式的寄存器-存储器型指令,能直
接寻址的最大主存空间是多少?
(2)如果采用通用寄存器作为基址寄存器,能直接寻址的最大主存空间又是多少?
因为计算机中共有64条指令,所以操作码占6位;
32个通用寄存器,寄存器编号占5位;
其余部分为地址码或标志位。
(1)如果是存储器间接寻址方式的寄存器-存储器型指令,操作码6位,寄存器编号5位,间址标志1位,地址码20位,直接寻址的最大主存空间是,…字。
(2)如果采用通用寄存器作为基址寄存器,匕、=宀*)一僦,能直接寻址的最大主存空间是学字。
12.已知某小型机字长为16位,其双操作数指令的格式如下:
0卩
A
其中:
OP为操作码,R为通用寄存器地址。
试说明下列各种情况下能访问的最大主存区域有多少机器字?
(1)A为立即数。
(2)A为直接主存单元地址。
(3)A为间接地址(非多重间址)。
(4)A为变址寻址的形式地址,假定变址寄存器为
R1(字长为
16位)。
(1)
1个机器字。
(2)
256个机器字。
(3)
65536个机器字。
(4)
rrart/■-、」ttttria
6位)。
13.计算卜列4条指令的有效地址(指令长度为1
(1)0000
00Q
(2)100000Q(3)
170710Q
(4)012305Q
―旋述理条指令均用八进制书写赭令的最左边是一位间址指示位@<
@=o,直接寻址@=i.ra接寻址),且具有多重间访功能;
指令的&
右边两位为形式地琏;
主存容■a严单元,表弘4为有关主疗单元的内容(八进制人
表A4习题13的表格
(1)OOOOOOQ
因为指令的最高位为0・故为直接寻址,EA=
地址
内容
00000
100002
A=00000Qo
00001
04G710
(2)100000Q
00002
054304
因为指令的最高位为1•故指令为间接寻址。
00003
100000
(00000)=100002■最高位仍为1•继续间接寻址。
00004
102543
(00002)=054304,其昴髙位为0,裏示已找到有效
00005
100001
地址・EA=54304Q。
00006
0C3215
(3)170710Q
00007
077710
因为指令的最高位为1,故指令为间接寻址,
00010
100005
(00010)=100005,44筒位仍为1•继续间接孑址。
(00003尸100001尿髙位仍为1,继续间接寻址°
(00001)=046710•其晟髙位为0,表示已找到有效地址.EA=4G710Qo(4)012305(?
因为指令的最鬲位为0•故为育接寻址.EA=A=00005Qo
14.假定某机的箱令格式如下:
65
11109
8
OP
L
Z/C
BiiJLJL=1:
间接寻址;
Bii8=l;
变址窃存器;
Bii7=「变址奇存器4耳址;
Bil6<
容页/现行虫寻址);
N/C=O•表示O反面;
Z/C=l,夜示现行页而■即指令所在页而。
若主存容虽为尹个仔储单-元■分为2°
个页面,毎个页面右兰个字。
设有关侖存器的内容为
(PC)=03409(Ii)=1111Q(k)=O256Q试汁算下列指令的有效地址。
(1>
104GQ
(2>
2433Q
(3>
3215Q
(4>
丄丄丄丄Q
解;
(丄、104G4J=001000IdOL10
忸为4个标占位均为0,故为直按R」lL.EA=A=0046Q.
<
2>
2433V=010100Oil01丄
因为Bil8<
k)=1.故为变址寄仃器丄寻址十:
人=(H)+人=丄丄丄丄+龄=丄“4心“
3ZJ5Q—011010001101
冈为Ti;
t7<
J_〉■丄*故为变址奇疗器二孑址.FA-<
1.A—0!
^5G4IS—0273Q„
4>
丄丄丄丄Q」00丄00100100丄
因为BilGCZA:
)=1,故为当前页寻址,EA=(PC>
n#A=O3Z/ll=O3IlQo
15.假足)格式如卜:
LQ3U
7
P
丄2
丄丄
nv
【L
n/r
U/I为苴按TB搔订址尿志・D4=0衣于肯接寸址JJ1=1占加刨接寸址*其余怖盂何同题14说朋“
若主存容皐为驴个存储单-元,分为于个虫向.毎个W面有F亍字。
设有爻襦疗驕的内容为
(10—00^5439(L」一06強15Q(PC)—004S50Q
试汁算下■列搭令的右效地址。
(11152301Q
◎IO7^O13y
3>
161L23V
(4■140011V
f1,15^30lQ=l101010011000001
典勿HiilO(H}■1*放均亜址奇存裾J补til.F\=门;
)+沖=M;
忙1月+301—0G351byD
|0740139=0111100000001Dll
因为Bitll(L}=I,故为变址奇存器1寻址.EA=(L)+A=002543+013^0025569,
(3■1611239—11100010010100L1
因hHil0(Z(:
)=1M沟当前页扌址,EA=(PC)/A=OO4123Qo
(4,14001IQ=1100000000001001
困勿4,傢态仃均为0駅为TT播?
ItlltEA-A-000011Qe
16.举例说明哪几种寻址方式除去取指令以外不访问存储器?
哪
几种寻址方式除去取指令外只需访问一次存储器?
完成什么样的指
令,包括取指令在内共访问4次存储器?
除去取指令以外不访问存储器:
立即寻址,寄存器寻址。
除去取指令外只需访问一次存储器:
直接寻址,寄存器间接寻址,变
址寻址,基址寻址,相对寻址,页面寻址
二级间接寻址包括取指令在内共访问4次存储器
17.设相对寻址的转移指令占两个字节,第一个字节是操作码,
第二个字节是相对位移量,用补码表示。
假设当前转移指令第一字节所在的地址为2000H,且CPU每取一个字节便自动完成(PC)+1
fPC的操作。
试问当执行JMP*+8和JMP*-9指令(倡为相对寻址特征)时,转移指令第二字节的内容各为多少?
转移的目
的地址各是什么?
转移指令第二字节的内容分别为:
00001000(+8),11110111
(-9)
转移的目的地址分别为:
200AH,1FF9H。
20.什么叫主程序和子程序?
调用子程序时还可采用哪几种方法保
存返回地址?
画图说明调用子程序的过程。
主程序就是指通常的程序,而子程序是一组可以公用的指令
序列,只要知道子程序的入口地址就能调用它。
保存返回地址的方法有多种:
(1)用子程序的第一个字单元存放返回地址。
转子指令把返回地址存放在子程序的第一个字单元中,子程序从第二个字单元开始执
行。
返回时将第一个字单元地址作为间接地址,采用间址方式返回主程序。
(2)用寄存器存放返回地址。
转子指令先把返回地址放到某一个
寄存器中,再由子程序将寄存器中的内容转移到另一个安全的地方。
(3)用堆栈保存返回地址。
调用子程序的过程如图3唱8所示,此时返回地址保存在堆栈中
K:
CALL
^+1:
札ET
图聲呂主程序圖用子程序的过程
21.在某些计算机中,调用子程序的方法是这样实现的:
转子指令将返回地址存入子程序的第一个字单元,然后从第二个字单元开始执行子程序,请回答下列问题:
(1)为这种方法设计一条从子程序转到主程序的返回指令。
(2)在这种情况下,怎么在主、子程序间进行参数的传递?
(3)上述方法是否可用于子程序的嵌套?
(4)上述方法是否可用于子程序的递归(即某个子程序自己调用自己)?
(5)如果改用堆栈方法,是否可实现(4)所提出的问题?
(1)返回指令通常为零地址指令。
返回地址保存在堆栈中,执行返回指令时自动从堆栈中弹出。
而目前返回地址是保存在子程序的第一个单元中,故此时返回指令不能再是零地址指令了,而应当是一地址指令。
如:
JMP
子程1亍戸地址
间接寻址可找到返回地址,然后无条件转移到返回的位置。
(2)在这种情况下,可利用寄存器或主存单元进行主、子程序间的参数传递。
(3)可以用于子程序的嵌套(多重转子)。
因为每个返回地址都
放在调用的子程序的第一个单元中。
(4)不可以用于子程序的递归,因为当某个子程序自己调用自己时,子程序第一个单元的内容将被破坏。
(5)如果改用堆栈方法,可以实现子程序的递归,因堆栈具有后进先出的功能。