指令系统

指令格式
操作码字段(OP)+地址码字段(A)

操作码
表示操作性质,可扩展
一般来说,一个包含n位的操作码最多能够表示 2^n 条指令

地址码
寄存器编号+寻址方式
根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令
有零地址指令、一地址指令、二地址指令和三地址指令

  1. 零地址指令:(关机指令)
    格式:OPCODE - 操作码
    指令中只有操作码,而没有地址码
  2. 一地址指令:(取反)
    格式:【 OPCODE | A 】
    A:操作数的存储器地址或寄存器编号。A即可以是操作数地址,又是操作结果的存储地址
  3. 二地址指令:add r1 r2
    格式:【 OPCODE | A1A1 | A2A2 】
    OPCODE – 操作码
    A1A1:第一个操作数的存储器地址或寄存器地址
    A2A2:第二个操作数的存储器地址或寄存器地址
  4. 三地址指令
    指令:【 OPCODE | A1A1 | A2A2 | A3A3 】
    A1A1:第一个操作数的存储器地址或寄存器地址
    A2A2:第二个操作数的存储器地址或寄存器地址
    A3A3:操作结果的存储器地址或寄存器地址

操作码定长指令的格式

  • 指令字长决定于三个部分:
    操作码长度:f
    操作数地址的长度:n
    操作地址的个数:m
  • 指令字长固定
    若操作码长度为k位,则最多能有2k2k条不同指令
    指令字长 = 存储字长
  • 指令字长可变
    按字节的倍数变化

典型指令

  • MOV 传送
  • STO 存数 : 由CPU向存储器传送字
  • LAD 取数 : 由存储器向CPU传送字
  • EXC 交换 : 源和目标交换内容
  • CLA 清零
  • SET 置1
  • PUS 进栈
  • POP 退栈
  • ADD、SUB、MUL、DIV、ABS、NEG(变负)、INC(增量,操作数加1)、DEC(减量,操作数减一)
  • AND、OR、NOT、EOR(异或)、TES(测试)、COM(比较)、SHI(移位)、ROT(循环移)
  • JMP、JMPX(条件转移)、JMPC(转子)、RET(返回)

题目中描述的计算机,其部分指令执行过程的控制信号如下图所示。
在这里插入图片描述

题图a 部分指令控制信号
该机指令格式如下图所示,支持寄存器直接和寄存器间接两种寻址方式,寻址方式位分别为0 和 1,寄存器R0~R3 的编号分别为 0、1、2 和 3。
在这里插入图片描述
题图b 指令格式
请回答下列问题。
1)该机的指令系统最多可定义多少条指令?
2)假定 inc、shl 和 sub 指令的操作码分别为 01H、02H 和 03H,则以下指令对应的机器代码 各是什么?
① inc R1 ; R1 + 1→R1
② shl R2,R1 ; (R1) << 1→R2
③ sub R3, (R1),R2 ; ((R1)) – (R2) → R3
3)假设寄存器 X 的输入和输出控制信号分别为 Xin 和 Xout,其值为 1 表示有效,为 0 表示无效(例如,PCout=1 表示 PC 内容送总线);存储器控制信号为 MEMop,用于控制存储器的读(read)和写(write)操作。写出题图 a 中标号①~⑧处的控制信号或控制信号的取值。
4)指令“sub R1,R3,(R2)”和“inc R1”的执行阶段至少各需要多少个时钟周期?

解答:
1 )指令操作码有 7 位,因此最多可定义 27=128 条指令。
2 )各条指令的机器代码分别如下:
① “ inc R1 ”的机器码为: 0000001 0 01 0 00 0 00 ,即 0240H 。
②“ shl R2 , R1 ”的机器码为: 0000010 0 10 0 01 0 00 ,即 0488H 。
③“ sub R3 , (R1),R2 ”的机器码为: 0000011 0 11 1 01 0 10 ,即 06EAH 。
3 )各标号处的控制信号或控制信号取值如下:
①0;②mov;③mova;④left;⑤read;⑥sub;⑦mov;⑧Srout。
【评分说明】答对两个给分。
4 )指令“ sub R1 , R3 , (R2) ”的执行阶段至少包含 8 个时钟周期;指令“ inc R1 ”的执行阶段至少包含 7 个时钟周期。 ???

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值