资源描述
1. 某机字长32位,指令单字长,指令系统中具有二地址指令,一地址指令和零地址指令若干条,已知每个地址长12位,采用扩展操作码方式,问该系统中的二地址指令,一地址指令和零地址指令各最多能有多少条?二地址 28-1 一地址(28-1)*212-1 零地址(28-1)*212-1)*(212)2. 指令字长为12位,每个地址码为3位,采用扩展操作码方式,设计4条三地址指令,16条二地址指令,64条一地址指令和16条零地址指令。a) 给出一种操作码的扩展方案A11 A10 . A0000 xxx yyy zzz.011 xxx yyy zzz 以上为3地址100 000 xxx yyy .101 111 xxx yyy 以上为2地址110 000 000 xxx .110 111 111 xxx 以上为1地址111 000 000 000 .111 000 001 111 以上为0地址b) 画出指令译码逻辑以下为非,*为与3地址=(A11)2地址=A11*(A10)1地址=A11*A10*(A9)0地址=A11*A10*A9*(A8)*(A7)*(A6)*(A5)*(A4)c) 计算操作码的平均长度(4*3+16*6+64*9+16*12)/(4+16+64+16)3. 假定一个32位的微处理器,指令字长32位,每条指令由两部分构成,其中第一字节为操作码,剩余的为立即数或操作数地址。a) 可直接访问的最大主存空间是多少?224存储字长b) 程序计数器(PC)和指令寄存器(IR)各需要多少位?24,324. 某计算机的字长为16位,存储器按字编址,访存指令格式如下其中,OP是操作码,MOD是寻址方式,见下表,MOD值寻址方式0立即寻址1直接寻址2间接寻址3变址寻址4相对寻址A为形式地址。设PC和RX分别为程序计数器和变址寄存器,字长为16位,问:a) 该格式能定义多少种指令。25b) 各寻址方式的寻址范围是多少?0 11 0 28-12 0 216-13 EA=A+(变址寄存器)即0 216-14 EA=A+(PC)即(PC)-27(PC)+27-1c) 写出各寻址方式的有效地址EA的计算式。0 EA=pc1 EA=A2 EA=(A)3 EA=A+(变址寄存器)4 EA=A+(PC)5. 某机字长32位,共有机器指令100条,指令单字长,等长操作码,CPU内部有通用寄存器32个,都可以做为变址寄存器用。存储器按字节编址,指令拟用直接寻址,间接寻址,变址寻址和相对寻址4种方式。a) 分别画出4种不同寻址方式的一地址指令的格式。(格式参考第4题中的指令格式)分析:指令100条,至少需7位,4中寻址,需2位直接,间接,相对寻址的OP 7位,MOD 2位 A 23 位变址寻址 OP 7位,MOD 2位 寄存器编号 5位 A 32-7-2-5 位b) 采用直接寻址和间接寻址方式,可寻址的存储器空间是多大?直接 223字节=8MB间接 232字节=4GBc) 写出各寻址方式的有效地址EA的计算式。和第四题一样6. 某主存部分单元的地址码与存储内容对应关系如下:地址码 存储内容1020H 13D5H1021H 2EF1H1022H 1024H1023H 1B26H1024H 57D3H设(R0)=1022H,X=3H,(PC)=1022H,(R1)=1020H。若指令字长等于存储字长的两倍,指令中地址码或者立即数占16位,则马上要执行的指令的机器码是 。1B26 1024h(第一个是操作码,第二个是地址码)若寻址方式采用 变址寻址X(R1),则取得的操作数是 1B26h 。EA=X+(R1)=3+1020=1023若寻址方式采用 立即寻址,则取得的操作数是 1024h 。EA=pc若寻址方式采用 直接寻址,则取得的操作数是 57D3h 。EA=地址码7. 某计算机有变址寻址,间接寻址和相对寻址等寻址方式,设当前指令地址码部分为001AH, 正在执行的指令所在的地址为1F05H,变址寄存器中的内容为23A0H.a) 当执行取数指令时,如为变址寻址方式,取出的数是多少?EA=001A+23A0=23BAh1748hb) 如为间址寻址,取出的数是多少?EA=(A)=(001Ah)=23A0h2600h主存部分单元的地址码与存储内容对应关系如下:地址码 存储内容001AH 23A0H1F05 H 2400H1F1FH 2500H23A0H 2600H23BAH 1748H8. 以主存地址7EA8H为首地址存放了一条双字节指令,其中第一字节为操作码OP,是转移指令;第二字节为相对寻址的位移量D,它是一个8位补码。问:a) 位移量D的表示范围多大?-27 27-1b) 该指令的转移空间从哪儿到哪儿?(这里假设存储字长是1字节)执行后IP=7EA8H+2+D(范围是7EA8H+2-80H 7EA8H+2+7FH)9. 某一自底向上生成的存储器堆栈,栈指针始终指向栈顶的满单元。若栈底地址为3000H,栈中已压入两个数据a和b,SP为堆栈指针。a) 画出此时堆栈的示意图.这就不画了b) 若现在将数据c和d按顺序压入堆栈,试写出这两个数据进栈的操作步骤。1. Mov acc,c2. Push c3. Mov acc,d4. Push dc) 写出数据d出栈的操作步骤1. pop acc2. Mov d,acc注:由于硬件设计的原因,设数据必须先存放到ACC才能入栈;数据出栈也必须先存放到ACC10. 存储器堆栈的栈顶内容是1000H,堆栈自底向上生成,栈指针寄存器SP的内容是100H,一条双字长的子程序调用指令位于存储器地址为2000H,2001H处,指令第二个字节是地址字段,内容为3000H。问以下情况下,PC,SP和栈顶的内容:a) 子程序调用指令被读取之前Pc=2000h,sp=100h,栈顶内容=1000hb) 子程序调用指令被执行之后Pc=3000h,sp=FFh,栈顶内容=2002hc) 从子程序返回之后Pc=2002h,sp=100h,栈顶内容=1000h
展开阅读全文