是什么

  • 定义指令系统是计算机硬件能够直接识别并执行的全部机器指令的集合;寻址方式是指寻找操作数的有效地址(EA)或下一条要执行指令地址的方式。

  • 大白话:指令是 CPU 听得懂的“密码条”,操作码告诉你“干什么”,寻址方式告诉你“去哪里抓数据、算完放哪里”。

核心内容

1. 指令格式与参数对应关系

  • 指令字长 vs 机器字长

    • 机器字长:CPU 内部寄存器和 ALU 一次能直接处理的二进制位数(如 16 位)。

    • 单字长指令:指令长度等于机器字长;双字长/半字长依此类推。

  • MAR 与 MDR 位数确定

    • (通常等于机器字长/数据总线宽度)。

    • (注意编址方式:若按字编址,需用总容量除以字长算出字数再求对数)。

  • 位宽与区间计算(闭区间计数原理)

    • 指令字段占位区间 ,其位数公式为:(加1是因为b减a算的是步长,而要的是点的总个数

    • 位二进制编码最多可区分 种操作或通用寄存器。

2. 常见寻址方式汇总(有效地址 EA 与操作数形式)

  • 立即寻址 即为操作数本身(速度最快,无需访存)。

  • 直接寻址(形式地址直接就是主存物理地址,访存 1 次)。

  • 间接寻址(一次间址访存 2 次,多次间址看最高位标志位)。

  • 寄存器寻址:操作数存放在寄存器中,(不访存,速度极快)。

  • 寄存器间接寻址,操作数在主存中,地址由寄存器给出(访存 1 次)。

  • 相对寻址

    • 偏移量 常用补码表示。若偏移量占 位,转移范围为

  • 基址寻址

    • 基址寄存器内容由 OS 设定且在程序执行过程中不变,偏移量 可变(常用于多道程序并发与动态重定位)。

  • 变址寻址

    • 变址寄存器内容由用户在执行中不断修改,基地址 保持不变(常用于数组遍历与循环程序)。

3. 汇编语句转机器码的标准流程

  1. 查表填码:根据指令助记符(如 ADD)确定 OP 字段二进制。

  2. 确定寻址与寄存器

    • 括号形式如 (Rn) 对应寄存器间接寻址,填入对应寻址特征码与寄存器编号。

    • 自增/自减符号如 (Rn)+ 对应自增间址。

  3. 按位拼接并转十六进制

    • 按照指令格式排列字段(OP | Ms | Rs | Md | Rd)。

    • 每 4 位二进制划分为一组,转换成十六进制(不足 4 位需跨字段按位拼凑)。

例题

  • 题目

    某计算机字长为 16 位,主存地址空间大小为 128KB,按字编址,采用单字长指令格式,指令各字段定义如下:

    • 位 15~12:OP(4位)

    • 位 11~6:源操作数,包含 Ms(寻址方式 3位)和 Rs(寄存器 3位)

    • 位 5~0:目的操作数,包含 Md(寻址方式 3位)和 Rd(寄存器 3位)

      寻址方式定义:

    • 000B: 寄存器直接 Rn,操作数

    • 001B: 寄存器间接 (Rn),操作数

    • 010B: 寄存器间接自增 (Rn)+,操作数

    • 011B: 相对 D(Rn),转移目标地址

    1. 该指令系统最多可有多少条指令?计算机最多有多少个通用寄存器?MAR 和 MDR 至少各需要多少位?

    2. 转移指令的目标地址范围是多少?

    3. 若操作码 0010B 表示加法 add,寄存器 R4、R5 编号分别为 100B101B,地址 单元内容为 ,地址 单元内容为 。给出 add (R4), (R5)+ 对应的机器码(十六进制),并指出执行后哪些寄存器和存储单元的内容会改变及改变后的值。

  • 分析

    • 第一问:OP 占 4 位确定指令数;Rs/Rd 占 3 位确定寄存器数;按字编址容量为 个字,地址线 16 位。

    • 第二问:Rn 长度为 16 位,16 位补码范围是

    • 第三问:提取源操作数 (R4) 寻址特征与编号,提取目的操作数 (R5)+ 寻址特征与编号,按位拼接转 16 进制;根据间接寻址规则分别从主存取数,相加后写回目的地址 ,最后将 R5 自增 1。

  • 答案

    1)

    2)

    通用寄存器 Rn 为 16 位,16 位补码表示范围为 )。

    转移指令的目标地址范围为:

    3)

    • 各字段编码:

    • 二进制拼接为 0010 0011 0001 0101B,机器码为:

    • 执行后改变的内容:

      • 主存单元 5678H:内容变为 68ACH(由

      • 通用寄存器 R5:内容变为 5679H(由

⚠️ 易错点

Warning

  • 按字节编址 vs 按字编址:计算 MAR 位数时,必须将容量除以字长得到“字数”;若是按字节编址,则直接以字节为单位求对数。

  • 自增量单位判断:在自增寻址中,加 1 还是加 2 取决于编址单位。按字编址且单字长访问时直接 ;按字节编址且访问 16 位字时需 (需以题目硬件规范为准)。

  • 相对寻址 PC 陷阱:计算有效地址 时,若题目未特殊说明, 默认指向当前指令的下一条指令地址;如果指令格式明确给出偏移量存放在通用寄存器中,则严格依题意套用公式。

  • 补码表示范围端点不对称 位补码范围是 ,负数端比正数端绝对值多 1(因为 0 占用了正数形式 00...00)。