Presentation is loading. Please wait.

Presentation is loading. Please wait.

指令系统 吴非 2012-10. 本章主要内容 指令系统 指令格式 寻址方式 典型指令系统 MIPS指令系统 RISC 与 CISC -2-

Similar presentations


Presentation on theme: "指令系统 吴非 2012-10. 本章主要内容 指令系统 指令格式 寻址方式 典型指令系统 MIPS指令系统 RISC 与 CISC -2-"— Presentation transcript:

1 指令系统 吴非 2012-10

2 本章主要内容 指令系统 指令格式 寻址方式 典型指令系统 MIPS指令系统 RISC 与 CISC -2-

3 计算机指令系统特性 完备性:指令丰富,功能齐全,使用方便。 有效性:程序占空间小,执行速度快。 规整性:  对称性、匀齐性:  指令格式和数据格式的一 致性: 兼容性:系列机软件向上兼容 -3-

4 指令格式 表示一条指令的机器字,称为指令字,简称指令。 指令格式:用二进制代码表示指令的结构形式。  指令要求计算机处理什么数据?  指令要求计算机对数据做什么处理?  计算机怎样才能得到要处理的数据? 操作码字段地址码字段 指令的寻址方式需 要解决的问题 指令的操作数需要 解决的问题 指令的操作码需要解 决的问题 -4-

5 操作码(OP)与地址码(AC) 指令系统中每一条指令对应一个操作码 操作码的长度取决于指令系统的规模  L OP =〔log 2 n〕 定长指令、变长指令 地址码包括被操作数,操作数,操作结果 操作码字段地址码字段 -5-

6 指令分类方法 按计算机系统的层次结构分类 按操作数物理位置分类 按操作数个数分类 -6-

7 计算机系统层次结构对指令分类 微指令:  微程序级的指令,属于硬件层面 机器指令:  每一条机器指令可以完成一个独立的运算。 宏指令:  若干机器指令组成的软件指令,属于软件 -7-

8 传统机器级 计算机系统的层次结构 5. 高级语言级 4. 汇编语言级 3. 操作系统级 2. 一般机器级 1. 微程序设计级 -8-

9 按操作数的物理位置分类 访问内存  存储器-存储器( SS )型 访问寄存器  寄存器-寄存器( RR )型 访问内存和寄存器型  寄存器-存储器( RS )型 -9-

10 按操作数个数分类 OP A1 A2 A3 三地址指令 OP A1 A2 二地址指令 OP A1 一地址指令 OP 零地址指令 (A1)OP(A2) → (A3) (A1)OP(A2) → (A1) (AC)OP(A1) → AC 如停机,空操作,堆栈指令 -10-

11 指令字长度 指令中包含二进制代码的位数 与机器字的长度有关 : 单字长, 双字长, 半字长。 多字长指令  解决寻址较大存储空间的问题  取指令要多次访内, 影响速度,占用存储空间较大。 等长指令 : 结构简单,控制线路简单。 变长指令 : 结构灵活,充分利用指令长度,控制复杂 -11-

12 扩展指令 双操作数指令操作码不能和单操作数,无操作数指令相同,否则无 法区分,此题变成排列组合题 假设双操作数指令数为k, 显然k<2 8 2 8 -K为多余状态,可以用于表示单操作数或者无操作数指令 可用于单操作数指令的条数=(2 8 -k)*2 12 , 2 12 是多余12位组合 812 双操作数 2012 单操作数 32 无操作数 2828 2 20 2 32 -12-

13 指令字助记符 ADD SUB MOV JMP STR LDA -13-

14 PDP-11 指令格式举例 -14- OP(10bit)MODE(3)Rn(3) OP(10bit)MODE(3)Rn(3)MODE(3)Rn(3) 源操作数被操作数 寻址模式 操作数地址 单字长指令 双字长指令

15 寻址方式 寻找指令或操作数有效地址的方式  指令寻址  顺序寻址  跳跃寻址  操作数寻址 -15-

16 顺序寻址 程序的指令序列在主存顺序存放。执行时从第一条指令 开始,逐条取出并逐条执行,这种程序的顺序执行过程, 称为顺序寻址方式。 CPU中设置一个程序计数器 ( PC ) 对指令的顺序号进行 计数。 PC 中开始时存放程序的首地址,每执行一条指令, PC 加 1 ,以指出下条指令的地址,直到程序结束。  PC++ 准确应该是加上当前指令的长度 PC存放下一条指令的地址 -16-

17 顺序寻址过程 100 Inc AX add ax,bx PC +1 100 101 内存 OP MSMS MSMS RSRS RSRS MdMd MdMd RdRd RdRd -17-

18 跳跃寻址 当程序中出现分支或循环时,就会改变程序的执行顺 序。此时对指令寻址就要采取跳跃寻址方式。 所谓跳跃,就是指下条指令的地址不是通过程序计数 器 PC 当前值获得的,而是由指令本身给出。 跳跃的处理方式是重新修改 PC 的内容。然后进入取指 令阶段。 -18-

19 跳跃寻址过程 IR 100 JMP 103 MOV AX,BX PC 内存 100 101 101 102 103 103 +1 +1 JMP 103 指令寄存器 IR MOV AX,BX 101 103 104 -19-

20 操作数的寻址方式 形成操作数有效地址的方法。  单地址指令地址码的构成: X, I,D  实际有效地址为 E, 实际操作数 S  S= (E) -20- OP X X I I D D 操作码变址位 形式地址 间址位

21 寻址方式分类 立即寻址 直接寻址 间接寻址 寄存器寻址 寄存器间接寻址 相对寻址 变址寻址 复合寻址 -21-

22 立即寻址 地址码字段是操作数本身  S=D  例: MOV AX,2038H (2038H→AX)  Little-Endian -22- 38 20 38 内存 AX MOV 000 2038H

23 寄存器寻址(Register Addressing) 操作数在 CPU 的内部寄存器中.  AX,BX,CX,DX  MOV AX, BX E=R -23- 0x2000 0x4FFF BX AX 0x2000 MOV 001 0000

24 直接寻址 ( Direct Addressing) 地址码字段直接给出操作数在内存的地址. E=D MOV AX, [200] -24- 77 OP X X D D 200 200 内存 MOV 010 200

25 间接寻址(Indirect Addressing) D单元的内容是操作数地址, D是操作数地址的地址  E=(D) -25- 400 788 200 200 400 需要访问两次内存, 速度慢 已被淘汰 OPXD 内存 MOV 011 200

26 寄存器间接寻址 (Register Indirect Addressing) D单元的内容是操作数的地址,D是操作数地址的地址  E=(R) MOV AX, [BX] -26- 300 R OPXR 300 400 400 788 内存 MOV 100 0001

27 相对寻址 (Relative Addressing) 指令中的D加上PC的内容作为操作数的地址. E=D+(PC) -27- 2000 PC 2200 程序指令计数器 OPX200 XXX 2200 内存 JMP 101 200

28 变址寻址 (Index Addressing)---数组访问 指定一个寄存器R,其存放基址,R被称为变址寄存器。它与本指令的 地址无关, R的内容可以随要求填入。 指定一个寄存器R,其存放基址,R被称为变址寄存器。它与本指令的 地址无关, R的内容可以随要求填入。 E=D+(R) E=D+(R) MOV AX, 32[SI] SI,DI 都称为变址寄存器 MOV AX, 32[SI] SI,DI 都称为变址寄存器 -28- 3000 操作数 R RR R 3032 OPX32 内存 MOV 110 0002 32

29 复合寻址 (Composite Addressing) 将间址,相对,变址,基值等寻址方式组合. 变址间址 先变址,后间址. E=((R)+D) -29- 3000 5000 操作数 OPXD = 100 3100

30 MOV 000 38H MOV 001 00 MOV 010 200 MOV 011 200 JMP 101 200 MOV 100 01 MOV 110 02 32 立即寻址 寄存器寻址 直接寻址 间接寻址 寄存器间接 相对寻址 变址寻址 0~255 -128~127 0~255# Reg 0~255 RAM Cell 0~2 16 -1 RAM Cell PC-128~PC+127 0~2 16 -1 RAM Cell 操作码5bit 寻址模式 形式地址D 8bit 寻址范围 不同寻址方式对比 S=D E=R E=D E=(D) E=(R) E=PC+D E=R+D 实地址E -30-

31 堆栈寻址方式 堆栈------ 一组能存取数据的暂时存储单元。 串联堆栈  一组专门的寄存器  数据的传送在栈顶和通用寄存器之间进行。  快速:在CPU内部实现  串行:进栈和出栈涉及到栈内所有其它数据的移动;  栈容量有限:取决于CPU内堆栈专用寄存器的数量;  栈顶不动,数据移动。 内存堆栈 -31-

32 堆栈寻址方式 AX BX AX CX BX AX PUSH AX PUSH BX PUSH CX CX BX AX POP CX 堆栈顶 -32-

33 存储器堆栈 用一部分主存空间作堆栈称为存储器堆栈。  堆栈的数目、长度可随意指定  SP---堆栈指示器(栈指针), CPU中一个专门寄存器,SP内容是 栈顶单元地址。改变SP内容即可移动栈顶的位置。  堆栈操作期间,堆栈中数据不动,栈顶移动  非破坏性读出 -33-

34 进栈 进栈--------累加器中的数送堆栈保存. (AC) →堆栈 MSP 堆栈指针 (sp) -1 →sp -34- a PUSH a PUSH b PUSH c 100 99 98 97 SP a b b AC

35 出栈  出栈--------将堆栈中的数取出送累加器  堆栈指针(sp) +1 → sp (堆栈MSP)→ AC -35- 100 99 98 97 SP a b b AC a

36 8088/8086典型指令 数据传送类  取数 MOV AX , TEMP  存数 MOV TEMP , AX  传送 MOV AX , CX 算术运算类  定点+,-, × , ÷  ADD , ADC , INC , SUB , DEC MUL , DIV 等  浮点+,-, × , ÷ ,求反,求补 NEG ,比较 逻辑运算类  NOT , AND , OR , XOR , TEST -36-

37 8088/8086典型指令 程序控制类  无条件转移 JMP 条件转移 C,Z,N,P,V  转子程序 JSR 子程序返回 RET 中断返回 IRET 输入/输出类  IN AX,n OUT n, AX 字符串处理 字符串传送、转换、比较、查找 特权指令: 系统资源的分配和管理 其他类  标志操作:CLC(clear carry flag)  CLI (clear interrupt elable flag)  HLT,WAIT,ESC,LOCK -37-

38 38 例 3 某计算机采用双字节长指令, 内存基于字节寻址, 指令中的数据采用补 码表示, 且 PC 的值在取指阶段完成修改. 完成下列相对寻址的问题. 1) 若某采用相对寻址指令的当前地址为 2003H, 且要求转移后的目标地址 为 200AH, 则该相对寻址指令的形式地址字段的值为多少 ? 2) 若某采用相对寻址的指令的当前地址为 2008H, 且要求转移后的目标地 址为 2001H, 则该相对寻址指令的形式地址字段的值为多少 ? 解:解: 1)200AH – (2003H +2) = 5H (0000 0101) 2)2001H – (2008H +2) = -9 (1111 0111 即 F7H) 若计算机字长 32 位, 且 PC 的值在取指阶段修改, 情况如何 ?

39 MIPS 指令系统 -39-

40 汇编语言 CPU主要工作:执行指令 指令是CPU执行最主要的操作 不同类型的CPU执行不同指令集  Instruction Set Architecture (ISA).  Intel 80x86 (Pentium 4), IBM/Motorola PowerPC (Macintosh), MIPS, Intel IA64,... -40-

41 MIPS体系结构 MIPS公司发布了第一个商用RISC结构 本课程将讨论MIPS的一些细节 为什么选择MIPS而不是Intel 80x86?  MIPS简洁雅致,不会陷入繁琐的细节.  MIPS广泛应用于嵌入式应用  X86平台主要应用于PC领域 -41-

42 汇编语言的变量---寄存器 汇编语言不能使用变量(C、JAVA可以)  Int a; float b;  寄存器变量没有数据类型 汇编语言的操作对象是寄存器 好处:寄存器是最快的数据单元 缺陷:寄存器数量有限  编程必须小心,仔细的高效使用各寄存器 MIPS寄存器字长---32bits= 1 Word MIPS指令集包括32个通用寄存器 32 registers in MIPS $0, $1, $2, … $30, $31 -42-

43 32个MIPS寄存器 寄存器编号MIPS助记符释义备注 0$Zero固定值为0硬件置位 2~3$v0~$v1函数调用返回值 4~7$a0~$a3函数调用参数4个参数 8~15$t0~$t7暂存寄存器8个参数 16~23$s0~$s7通用寄存器调用之前需保存 24~25$t8~$t9暂存寄存器2个2个 28$gp全局指针 29$sp堆栈指针 30$fp帧指针 31$ra函数返回地址 1$at汇编器保留 26~27$k0~$k1操作系统保留 -43-

44 加减指令 加法  a = b + c (in C)  add $s0,$s1,$s2 (in MIPS)  C语言变量a, b, c编译后对应寄存器 $s0,$s1,$s2 减法  d = e – f (in C)  sub $s3,$s4,$s5 (in MIPS)  C语言变量d, e, f编译后对应寄存器 $s3,$s4,$s5 -44-

45 加减指令 如何编译下面的C语言表达式? a = b + c + d - e; 编译成多行汇编指令 add $t0, $s1, $s2 # temp = b + c add $t0, $t0, $s3 # temp = temp + d sub $s0, $t0, $s4 # a = temp - e 一个简单的C语言表达式变成多行汇编语句 #号后面是注释 -45-

46 内存数据访问指令lw sw lb sb lh sh 读内存指令  g = h + A[8] ; (in C)  lw $t0,32($s3) # $s3 为A[0]地址 (in MIPS)  add $s1,$s2,$t0 # g=h+A[8] 变址寻址  偏移量+基址寄存器 写内存指令  A[12] = h + A[8] ;  lw $t0,32($t3) # get A[8] (in MIPS)  add $t0,$s2,$t0 # A[12]=h+A[8]  sw $t0,48($s3) #store A[12] -46-

47 加立即数 常数相加指令  g = g + 4 ; (in C)  Lw $t0, 0($s3) # $t0=4 $s3=Address(4)  add $s1,$s1,$t0 # g=g+4 立即数相加指令  addi $s3,$s3,4 # $s3=$s3+4 (in MIPS) 指令实例语义注释 加 add $s1,$s2,$s3$s1=$s2+$s3 寄存器寻址 减 sub $s1,$s2,$s3$s1=$s2-$s3 寄存器寻址 加立即数 addi $s1,$s2,100$s1=$s2+100 寄存器寻址+立即数寻址 取字 lw $s1,100($s2)$s1=Mem[$s2+100] 寄存器寻址+变址寻址 存字 sw $s1,100($s2)Mem[$s2+100]=$s1 寄存器寻址+变址寻址 -47-

48 条件判断指令 beq reg 1,reg 2,label C语言条件判断指令 If (a==b) { i=1; } else { i=2; } 等效C指令 If (a==b) goto L1; i=2; goto L2; L1:i=1; L2: 等效MIPS指令 beq $s0,$s1,L1 addi $s3,$Zero,2 j L2; L1:addi $s3,$Zero,1 L2: MIPS数据传送指令 addi $s3,$Zero,1 # $s3=1 add $s3,$s2,$Zero # $s3=$s2 -48-

49 MIPS 条件判断指令 条件跳转  If (reg 1 ==reg 2 ) goto Label 1 (C 语言 )  beq reg 1,reg 2,Label 1 (MIPS 指令 )  bne reg 1,reg 2,Label 2 无条件跳转指令  goto Label ; (C 语言 )  J label (MIPS 指令 )  beq $Zero,$Zero,label (MIPS 指令 ) -49-

50 逻辑运算 移位指令  a=b<<2; C 语言  sll $s1,$s2,2 # shift left  srl $s1,$s2,2 # shift right 逻辑运算  and $t0,$t1,$t2 # t0=t1&t2  or $t0,$t1,$t2 # t0=t1|t2  andi $t0,$t1,100 # t0=t1&100  ori $t0,$t1,100 # t0=t1|100 -50-

51 循环结构 C语言简单循环结构,A为int数组  do { g = g + A[i]; i = i + j; } while (i != h); 重写代码  Loop:g = g + A[i]; i = i + j; if (i != h) goto Loop; 编译后的变量映射: ghijA[0] $s1$s2$s3$s4$s5 -51-

52 循环结构 最后编译的MIPS代码: Loop: sll $t1,$s3,2 # $t1= 4*I addu $t1,$t1,$s5 # $t1=addr A+4i lw $t1,0($t1) # $t1=A[i] addu $s1,$s1,$t1 # g=g+A[i] addu $s3,$s3,$s4 # i=i+j bne $s3,$s2,Loop # goto Loop # if i!=h 原始C代码: Loop:g = g + A[i]; i = i + j; if (i != h) goto Loop; -52-

53 比较指令 slt slti MIPS比较指令(Set on Less Than) slt reg 1,reg 2,reg 3 if (reg 2 < reg 3 ) ( C 语言) reg 1 = 1; else reg 1 = 0; If (g<h) goto Less; (用slt,bne 两条指令实现) slt $t0,$s0,$s1 # $t0 = 1 if g<h bne $t0,$0,Less # goto Less # if $t0!=0 # (if (g<h)) Less: -53-

54 MIPS过程调用 C语言函数调用 int function(int a,int b) { return (a+b); } MIPS实现过程调用的机制  返回地址寄存器 $ra  参数寄存器 $a0, $a1, $a2, $a3  返回值寄存器 $v0 $v1  局部变量 $s0~$s7  堆栈指针 $sp -54-

55 过程调用实现机制 sum(a,b); /* a,b:$s0,$s1 */ } int sum(int x, int y) { return x+y; } 1000 add $a0,$s0,$zero # x = a 1004 add $a1,$s1,$zero # y = b 1008 addi $ra,$zero,1016 # $ra=1016 1012 j sum # 跳转,调用过程 sum 1016 … 2000 sum: add $v0,$a0,$a1 # 过程入口 2004 jr $ra # new # 返回主程序 instruction J 1016 1008 jal sum 1012 1008 jal sum 1012 -55-

56 过程调用机制 JAL Label #link and jump 等效于如下指令 $ra=PC+4; #save next instruction address J Label 过程返回指令 Jr $ra #return to main program 问题:利用 $ra 做返回地址,如果过程嵌套如何返回?  $ra 会被多次覆盖  利用堆栈保存 $ra -56-

57 多级过程调用 int sumSquare(int x, int y) {return mult (x,x)+ y; } 主程序调用 sumSquare(x , y), sumSquare 调用 mult(x,y). 调用 sumSquare(x , y) 时 $ra 保存一次,保证该过程执 行完毕后能返回主程序。 但调用 mult 时会覆盖 $ra 在调用 mult 时需要保存 sumSquare 的返回地址 -57-

58 堆栈操作 sumSquare: addi $sp,$sp,-8 # space on stack sw $ra, 4($sp) # save ret addr sw $a1, 0($sp) # save y add $a1,$a0,$zero # mult(x,x) jal mult # call mult lw $a1, 0($sp) # restore y add $v0,$v0,$a1 # mult()+y lw $ra, 4($sp) # get ret addr addi $sp,$sp,8 # restore stack jr $ra mult:... 注意:除了返回地址以外,函数参数等会覆盖的变量都需要入栈 “push” “pop” -58-

59 32位定长MIPS指令格式(R型指令) OP:指令的基本操作---操作码 Rs:第一个源操作数寄存器 Rt:第二个源操作寄存器 Rd:存放结果的目的操作寄存器 Shamt:偏移量,用于移位指令 Funct:函数,对操作码进行补充 OP RSRS RSRS RtRt RtRt shamt RdRd RdRd 6bits funct 5bits 6bits R 型指令 -59-

60 MIPS指令格式 (R型指令) 6bits5bits 6bits 指令格式OPrsrtrdshamtfunct addR0 Reg 032 10 sub减R0 Reg 034 10 andR0 Reg 36 orR0 Reg 37 nor R 0 Reg 39 sllR0 Reg 0 srlR0 Reg 2 jrR0 REG00 08 addR0 181917 32 add $s1,$s2,$s3 # machine code 0x2538820 -60-

61 MIPS指令格式 (I、J型指令) 6bits5bits 6bits 指令格式OPrsrtrdshamtfunct addR0 Reg 032 10 addiI8 Reg 16bits 立即数 lwI35 Reg 16bits 立即数 swI43 Reg 16bits 立即数 andi I 12 Reg 16bits 立即数 oriI13 Reg 16bits 立即数 beqI4 Reg 16bits 立即数(相对寻址) bneI5 Reg 16bits 立即数(相对寻址) jJ2 26bit 立即数(伪直接寻址) jalJ3 26bit 立即数(伪直接寻址) -61-

62 MIPS指令格式 OP RSRS RSRS RtRt RtRt shamt RdRd RdRd 6bits funct 5bits 6bits OP RSRS RSRS RtRt RtRt 6bits 立即数 5bits 16bits OP 6bits 立即数 26bits R 型指令 I 型指令 J 型指令 -62-

63 MIPS寻址方式总结 寄存器寻址 基址寻址 立即数寻址 PC相对寻址 beq req1,req2,label  16位偏移地址左移两位+PC 伪直接寻址 J label  26位偏移地址+PC高4位  30位字地址 -63-

64 指令系统发展方向 CISC--- 复杂指令系统计算机  Complex Instruction System Computer  指令数量多,指令功能,复杂的计算机。 RISC--- 精简指令系统计算机  Reduced Instruction System Computer  指令数量少,指令功能单一的计算机。 -64-

65 高级语言中各种语句的动态出现频度 PascalC 赋值语句 4538 循环语句 53 程序调用语句 1512 判断语句 2943 直接转移语句 – 3 其它 61 -65-

66 精减指令系统(RISC) 选取使用频率最高的一些简单指令,指令条数少; 寻址方式简单 指令长度固定,指令格式简单 CPU设置大量寄存器 只有存/取数指令才能访问存储器, 其余指令的操作都在寄存器之间进行. 每一个机器周期完成一条机器指令。 -66-

67 CISC与RISC的比较 特 征 CISCRISC IBM 370/16 8 VAX 11/78 0 Intel 80486 SPARC MIPS R4000 开发年份 19731978198919871991 指令数量 / 条 2083032356994 指令长度 /B2~62~62~52~51 ~ 11 44 寻址方式 4221122 通用寄存器数 / 个 16 8 40 ~ 520 32 控制存储器大小 /Kb 420480246 -- Cache 大小 /KB 64 832128 -67-

68 典型 RISC 机指令系统 机器型号指令数寻址方式指令格式通用寄存器数 RISC-I312278 RISC-II3922138 MIPS553416 SPARC7543120-136 MIPSR3000913332 i860653432 -68-

69 例1. 字长16位,主存64K,指令单字长单地址,80条指令。寻址方 式有直接、间接、相对、变址。请设计指令格式。 解: 80条 log[80]=7 采用7位操作码 寻址方式4种 采用2位 PC为16位 变址寄存器16位 相对寻址 E=(PC)+D 变址寻址 E=(R)+D -69- OPD 15 9 8 7 6 0

70 -70- 答:指令格式及寻址方式的特点如下: 1)单字长二地址指令; 2)操作码可指定16条指令; 3)源和目的均有8种寻址方式; 4)源地址寄存器和目的地址寄存器均有8个; 5)可寻址范围为1~64K 2.分析以下指令格式及寻址方式特点? OP 寻址方式寄存器寻址方式寄存器 源地址 目标地址 15 12 11 9 8 6 5 3 2 0

71 200 500 1100 200 100 500 800 100 200 2100 OP X X D=100 PC=1000 R 基 =2000 寻址方式 X 操作数 立即 0100 直接 1200 间接 2500 相对 3100 变址 4 200 变址间址 5500 有效地址 E S=D E=D=100 E=(D)=200 E=PC+D=1100 E=(R)+D=2100 E=((R)+D)=200 3 .设某机的指令格式、有关寄存器和主存内容如下, X 为寻址方式, D 为形式地址,请在下表中填入有效地址 E 及操作数的值 。 ? -71-

72 OP MSMS MSMS RSRS RSRS MdMd MdMd RdRd RdRd 15 1211 65 0 源操作数目的操作数 M s /M d 寻址方式助记符含义 000B 寄存器直接 RnRn 操作数 =(R n ) 001B 寄存器间接 (R n ) 操作数 =((R n )) 010B 寄存器间接,自增 (R n )+ 操作数 =((R n )),(R n )+1→(R n ) 011B 相对 D(R n ) 转移目标地址 =(PC)+(R n ) 注 (x) 表示存储器地址 x 或寄存器 x 的内容 (11 分 ) 某计算机字长为 16 位,主存地址空间大小为 128KB ,按字编址。采用单 字长指令格式,指令各字段定义如下: 10 年研究生统考 转移地址采用相对寻址方式,相对偏移量用补码表示。寻址方式定义如下: ( 1 )该指令系统最多可有多少条指令?该计算机最多有多少个通用寄存器? 存储器地址寄存器 MAR 和存储器数据寄存器 MDR 至少需要多少位?

73 OP MSMS MSMS RSRS RSRS MdMd MdMd RdRd RdRd 15 1211 65 0 源操作数目的操作数 M s /M d 寻址方式助记符含义 000B 寄存器直接 RnRn 操作数 =(R n ) 001B 寄存器间接 (R n ) 操作数 =((R n )) 010B 寄存器间接,自增 (R n )+ 操作数 =((R n )),(R n )+1→(R n ) 011B 相对 D(R n ) 转移目标地址 =(PC)+(R n ) 注 (x) 表示存储器地址 x 或寄存器 x 的内容 (11 分 ) 某计算机字长为 16 位,主存地址空间大小为 128KB ,按字编址。采用单 字长指令格式,指令各字段定义如下: 转移地址采用相对寻址方式,相对偏移量用补码表示。寻址方式定义如下: ( 2 )转移指令的目标地址范围是多少?

74 M s /M d 寻址方式助记符含义 000B 寄存器直接 RnRn 操作数 =(R n ) 001B 寄存器间接 (R n ) 操作数 =((R n )) 010B 寄存器间接,自增 (R n )+ 操作数 =((R n )),(R n )+1→(R n ) 011B 相对 D(R n ) 转移目标地址 =(PC)+(R n ) (11 分 ) 某计算机字长为 16 位,主存地址空间大小为 128KB ,按字编址。采用单 字长指令格式,指令各字段定义如下: ( 3 )若操作码 0010B 表示加法操作,助记符为 add ,寄存器 R4 , R5 的编号 分别为 100B 和 101B , R4 的内容为 1234H , R5 的内容为 5678H ,地址 1234H 中 的内容为 5678H ,地址 5678H 中的内容为 1234H ,则汇编语句 add (R4),(R5)+ 逗号前为源操作数,逗号后为目的操作数,对应的机器码是多少?用十六 进制表示。该指令执行以后,哪些寄存器和存储单元的内容会发生改变? 改变后的内容是什么?

75 本章重点内容 指令系统基本概念 指令基本格式 指令系统寻址方式 -75-


Download ppt "指令系统 吴非 2012-10. 本章主要内容 指令系统 指令格式 寻址方式 典型指令系统 MIPS指令系统 RISC 与 CISC -2-"

Similar presentations


Ads by Google