1、单击此处编辑母版文本样式,第二级,母版标题样式,*,指令系统,设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案,使该指令系统包含:4条三地址指令,8条二地址指令,180条单地址指令。,解:,000,001,010,011,OP,A,1,A,2,3,3,3,A,3,3,二地址指令8条,单地址指令64条,单地址指令64条,单地址指令52条,三地址指令4条,(100)OP=6位,100 000,111,(101)OP=9位,101 000 000,111 111,(110)OP=9位,110 000 000,111 111,(111)OP=9位,111 000 000,1
2、10 011,单地址指令180条,1,指令系统,指令格式同上题,能否构成:三地址指令4条,单地址指令255条,零地址指令64条?为什么?,解:,OP,A,1,A,2,3,3,3,A,3,3,000,001,010,011,单地址指令64条,单地址指令64条,单地址指令64条,单地址指令63条,三地址指令4条,(100)OP=9位,100 000 000,111 111,(101)OP=9位,101 000 000,111 111,(110)OP=9位,110 000 000,111 111,(111)OP=9位,111 000 000,111 110,单地址指令255条,(111 111 11
3、1)OP=12位,111 111 111 000,111 111 111,零地址指令8条,不能,因为按此分配方案,零地址指令只能有8条,不够64条。,2,某机为定长指令字结构,指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令已有K种,无操作数指令已有L种,1)单操作数指令最多可能有多少种?,解:,指令系统,OP,A,1,A,2,4,6,6,0000,K-1,K 000000,111111,K+n 000000,111111,xxxxxx 000000,111111,1111 111111 000000,111111,K条,L条,?,(2,4,-
4、K)*2,6,L/2,6,3,指令系统,2)上述三类指令各自允许的最大指令条数多少?,OP,A,1,A,2,4,6,6,0000,1110,双操作数指令最多为15条,OP,A,1,A,2,4,6,6,00001条双操作数指令,0001 000000,111111,1111 000000,111110,(1111 111111)无操作数指令扩展口,单操作数指令最多为15*2,6,-1,OP,A,1,A,2,4,6,6,00001条双操作数指令,(0001)单操作数指令扩展口,0010 000000000000,111111111111,1111 000000000000,111111111111
5、无操作数指令最多为14*2,12,(1111 111111)无操作数指令扩展口,(0001)单操作数指令扩展口,4,指令系统,OP,A,1,A,2,4,6,6,00001条双操作数指令,(0001)单操作数指令扩展口,0010 000000000000,111111111111,1111 000000000000,111111111111,无操作数指令最多为14*2,12,0000,xxxxxx xxxxxx,(0001),单操作数指令扩展口,0001 000000,xxxxxx,单操作数指令1条,0001 000001,00000,111111111111,0010 00000000000
6、0,111111111111,1111 000000000000,111111111111,OP,A,1,A,2,4,6,6,无操作数指令最多为,15*2,12,-,2,6,5,无操作数指令最多为14*2,12,是什么导致这样的结果?,2)上述三类指令各自允许的最大指令条数多少?,OP,A,1,A,2,4,6,6,0000,1110,双操作数指令最多为15条,OP,A,1,A,2,4,6,6,00001条双操作数指令,0001 000000,111111,1111 000000,111110,(1111 111111)无操作数指令扩展口,单操作数指令最多为15*2,6,-1,OP,A,1,A,
7、2,4,6,6,00001条双操作数指令,(0001)单操作数指令扩展口,0010 000000000000,111111111111,1111 000000000000,111111111111,无操作数指令最多为,14*2,12,(1111 111111)无操作数指令扩展口,(0001)单操作数指令扩展口,6,某机字长16位,内存容量为64K字,指令格式为单字长单地址,共有64条指令。试说明:,(1)若只采用直接寻址方式,指令能访问多少内存单元?,解:,指令系统,(2)为扩充指令的寻址范围,可采用直接/间接寻址方式,若只增加一位直接/间接标志,指令可寻址范围为多少?指令直接寻址的范围为多少
8、OP,D,15 10 9 0,EA=D 1024个单元,OP,D,15 10 9 8 0,间接:EA=(D)64K个单元,直接:EA=D 512个单元,9,指令系统,(3)采用页面寻址方式,若只增加一位Z/C(零页/现行页)标志,指令寻址范围为多少?指令直接寻址范围为多少?,(4)采用(2)、(3)两种方式结合,指令的寻址范围为多少?指令直接寻址范围为多少?,OP,D,15 10 9 8 0,Z/C,EA=页面号/D 64K个单元,直接:EA=D 256个单元 间接:EA=(D)64K个单元,页面:EA=页面号/D 64K个单元,OP,D,15 10 9 8 7 0,Z/C,10,指令系统
9、设某机字长32位,CPU有32个32位的通用寄存器,设计一个能容纳64种操作的单字长指令系统。,(1)如果是存储器间接寻址方式的寄存器存储器型指令,能直接寻址的最大内存空间是多少?,解:机器字长32位,单字长指令,指令字长也为32位,指令系统能容纳64种操作,操作码为6位。,RS型双操作数指令,32个寄存器,(2)如果采用通用寄存器作为基址寄存器,能直接寻址的最大内存空间又是多少?,基址寻址 EA=(Ri)+D 2,32,=4G个单元,OP(6位),Ri(5位),D(21位),直接寻址 EA=D,2,21,=2M个存储单元,11,指令系统,已知某小型机字长为16位,其双操作数指令的格式如下:
10、其中,OP为操作码,R为通用寄存器地址,试说明下列各种情况下能访问的最大内存区有多少机器字?,(1)A为立即数。,立即数:访问1个内存单元。指令本身。,(2)A为直接内存单元地址。,2,8,=256个机器字。,(3)A为间接地址(非多重间址)。,EA=(A)2,16,=64K,(4)A为变址寻址的形式地址,假定变址寄存器为Ri(字长16位)。,EA=(R1)+A 64K,OP,R,A,0 5 6 7 8 15,12,(05)=100001,(00)=100002,(4)000005Q,(3)100010Q,(2)100000Q,(10)=100005,指令系统,计算机下列四条指令的有效地址(指
11、令长度为16位)。,(1)000000Q (2)100000Q,(3)100010Q (4)000005Q,假定:上述4条指令均用八进制书写,指令的最左边是一位间址指示位(=0,直接寻址;=1,间接寻址),且具有多重间访功能;指令的最右边两位为形式地址;内存容量2,15,单元,下表为有关内存单元的内容(八进制):,地址,内容,000,00,100002,000,01,046710,000,02,054304,000,03,100000,000,04,102543,000,05,100001,000,06,063215,000,07,077710,000,10,100005,(1)000000Q
12、形地,形地,二间,二间,三间,形地,形地,形地,EA=00,EA=00005Q,形地,形地,一间,一间,直,直,EA=(02)=054304Q,EA=(01)=046710Q,操作数=100001Q,操作数=100002Q,13,指令系统,14.假定某机的指令格式如下:,11,10 9,8,7,6,5 0,OP,I,1,I,2,Z/C,A,解:(1)EA=0046Q (2)EA=1144Q,其中:Bit8=1:变址寄存器I1寻址;Bit7=1:变址寄存器I,2,寻址;Bit6(零页/现行页寻址):Z/C=0,表示0页面;Z/C=1,表示现行页面,即指令所在页面。,若内存容量为2,12,个存储
13、单元,分为2,6,个页面,每个页面有2,6,个字。,设有关寄存器的内容为:,(PC)=0340Q (I,1,)=1111Q (I,2,)=0256Q,,试计算下列指令的有效地址。,(1)1046Q (2)2433Q (3)3215Q (4)1111Q,14,指令系统,(3)3215Q=,(4)1111Q=,0,11,0,1,0,001101,I,2,变址,偏移量,EA=(I,2,)+15Q=0256Q+15Q=0273Q,0,01,0,0,1,001001,现行页,页内地址,EA=(PC),H,/11Q=03/11Q=0311Q,15,指令系统,15.假定指令格式如下:,15,12 11,10
14、9,8,7 0,OP,I,1,I,2,Z/C,D/I,A,其中:D/I为直接/间接寻址标志,D/I=0表示直接寻址,D/I=1表示间接寻址。其余标志位同前题说明。若内存容量为2,16,个存储单元,分为2,8,个页面,每个页面有2,8,个字。,设有关寄存器的内容为:,(I,1,)=002543Q (I,2,)=063215Q (PC)=004350Q,,试计算下列指令的有效地址。,(1)152301Q (2)074013Q,(3)161123Q (4)140011Q,16,指令系统,(1)3215Q=,(2)1111Q=,1101,0,1,0,0,11000001,EA=(I,2,)+A=06
15、3215Q+301Q=063516Q,EA=(I,1,),+A=002543Q+013Q=002556Q,(3)3215Q=,(4)1111Q=,EA=(PC),H,/A=004Q/123Q=004123Q,EA=000/A=000Q/011Q=000011Q,0111,1,0,0,0,00001011,1110,0,0,1,0,01010011,1100,0,0,0,0,00001001,I,2,变,I,1,变,现行页,0页,17,指令系统,16.举例说明哪几种寻址方式除去取指令以外不访问存储器?哪几种寻址方式除去取指令外只需访问一次存储器?完成什么样的指令,包括取指令在内共访问4次存储器?
16、解:,1)立即寻址 mov ax,0020H 寄存器寻址 mov ax,bx 除取指外不访问内存。,2)寄存器间接寻址 mov ax,bx,直接寻址 mov ax,si+20H,页面寻址、基址寻址 mov ax,bx+20H,变址寻址 mov ax,si+20H,相对寻址 这六类除取指外,只访问一次存储器。,3)二级间接寻址包括取指令在内,共访问4次内存。,1,一间,OP,0 EA,操作数,取指,1 二间,18,指令系统,17.设相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量,用补码表示。假设当前转移指令第一个字节所在的地址为2000H,且CPU每取一个字节便自动完
17、成(PC)+1,PC的操作。试问当执行JMP*+8和JMP*-9指令(*为相对寻址特征)时,转移指令第二字节的内容各为多少?,解:,操作码,位移量,2000H,2001H,2002H,位移量,位移量,下一指令,JMP指令,PC,PC+2,JMP*+8 指令第二字节 08H,转移目的地址 2000H+2H+08H=200AH,JMP*-9 指令第二字节F7H(补码),转移目的地址2000H+2H+F7H=1FFF9H,19,指令系统,19.在某些计算机中,调用子程序的方法是这样实现的:转子指令将返回地址存入子程序的第一个字单元,然后从第二个字单元开始执行子程序,请回答下列问题:,(1)为这种方法
18、设计一条从子程序转到主程序的返回指令。,解:返回地址是保存在子程序的第一个单元中,故此时返回指令应当是一地址指令。如,OP,子程序首地址,间接寻址可找到返回地址,然后无条件转移到返回的位置。,20,指令系统,主程序,子程序,A,JMP A,CALL A,K,K+1,K+1,返回地址,21,指令系统,(2)在这种情况下,怎么在主、子程序间进行参数的传递?,在这种情况下,可利用寄存器或主存单元进行主、子程序间的参数传递。,(3)上述方法是否可用于子程序的嵌套?,可以用于子程序的嵌套(多重转子)。因为每个返回地址都放在调用的子程序的第一个单元中。,(4)上述方法是否可用于子程序的递归?,不可以用于子
19、程序的递归,因为当某个子程序自己调用自己时,第一个单元的内容将被破坏。,(5)如果改用堆栈方法,是否可实现4)所提出的问题?,如果改用堆栈方法,可以实现子程序的递归,因堆栈具有后进先出的功能。,22,指令系统,20.某计算机有10条指令,它们的使用频度分别是:,0.3,0.24,0.16,0.12,0.07,0.04,0.03,0.02,0.01,0.01用Huffman编码法对它们的操作码进行编码,并计算其操作码的平均码长。,0.01 0.01 0.02 0.03 0.04 0.07 0.12 0.16 0.24 0.30,0.02,0.28,0.04,0.07,0.11,0.18,0.42
20、1.00,0.58,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1111111,1111110,111110,11110,1110,110,011 010 10 00,L=2.64,等长编码=4,23,指令系统,21.某计算机有8条指令,它们的使用频度分别是:,0.3,0.3,0.2,0.1,0.05,0.02,0.02,0.01,试分别用Huffman编码法和Huffman扩展编码法对其操作码进行编码,限定Huffman扩展编码法只能有两种长度。它们的平均码长各比定长操作码的码长减少多少?,(1),Huffman编码法,0.01 0.02 0.02 0.05 0.1 0.2 0.3 0.3,0.03,0.05,0.10,0.2,0.4,0.6,1.0,1,0,1,0,1,1,1,1,1,0,0,0,0,0,111111,111110,11110,1110,110,10,01 00,L=2.38,24,指令系统,(2)Huffman扩展编码法:只有2位、3位两种码长,0.01 0.02 0.02 0.05 0.1 0.2 0.3 0.3,1111 1110 1101 1100 11 10 01 00,L=2.2,(3)等长编码=3位,Huffman编码法减少 3-2.38=0.62位,Huffman扩展编码法减少 3-2.2=0.8,25,






