是什么
-
定义:指令格式编码是将汇编语言中的操作码、寻址方式和寄存器编号按照硬件约定的位数与排布规则,转换为二进制机器码的过程;括号标记法则是用来区分直接寻址与间接寻址的数学化表达形式。
-
大白话:寄存器名字就是编号(几个寄存器就需要几位二进制来编门牌号);指令写出来是“操作 目的, 源”,但背后执行的动作是“源数据算完流向目的”;带单括号
(R)意味着“寄存器里的值”,带双括号((R))意味着“拿着寄存器里的值去内存找真实数据”。
核心内容
1. 寄存器编码位数计算
-
寻址原理:计算机使用二进制编码对通用寄存器进行唯一标识。要区分 个不同的寄存器,所需的最小二进制编码位数 必须满足:
-
4 寄存器系统(R0~R3)对应关系:
-
00R0 -
01R1 -
10R2 -
11R3
-
在数据通路图中,一般带箭头虚线表示控制信号。
2. 寻址方式与括号层级表达
在微操作与指令语义描述中,括号的层数严格代表访问的寻址深度:
-
无括号(如
R1):表示寄存器本身或寄存器编号。 -
单括号
(R1):表示读取寄存器R1内部存储的数值。在寻址方式对应中,属于 寄存器直接寻址(有效地址就是寄存器)。 -
双括号
((R1))/ 汇编(R1):表示将寄存器R1中的值作为主存地址,再去主存中取出真实操作数。在寻址方式对应中,属于 寄存器间接寻址(,操作数 )。
3. 指令物理结构与微操作语义流向的本质区别
-
指令格式与汇编书写(物理结构排布):
-
机器码排布及汇编代码均遵循 目的操作数在前、源操作数在后 的顺序。
-
标准格式:
操作码 (OP) | 目的操作数 (Md, Rd) | 源操作数1 (Ms1, Rs1) | 源操作数2 (Ms2, Rs2) -
例如:
shl R2, R1的字段结构为:。
-
-
微操作语义描述(数据执行流向):
-
题目解析中书写的
(R1) << 1 -> R2仅是对 运算执行动作与数据流向 的数学化描述(即从右侧源数据流向左侧目的寄存器),绝不是机器码的字段拼装顺序。
-
是的,下半部分右边那一栏(带箭头 的部分)写的就是执行动作(数据计算与流向)。
它通过数学表达式定义了 CPU 执行这三类指令时的行为:
与下方对应
下图表示:
汇编指令 指令的注释

-
左边(汇编指令):程序员实际编写的代码,决定机器码的物理排布。
-
格式固定为:
操作码 目的操作数, 源操作数1, 源操作数2 -
例:
sub R3, (R1), R2表示对(R1)和R2做减法,结果存入R3。
-
-
右边(注释与微操作语义):用数学语言和箭头描述该指令具体执行了什么计算、数据流向哪里。
-
格式固定为:
数据计算过程 $\to$ 结果存入的目标位置 -
例:
((R1)) - (R2) -> R3表示“取 R1 指向的内存数据,减去 R2 寄存器中的数据,结果写入 R3 寄存器”。
-
例题
-
题目:
某计算机字长为 16 位,包含 4 个通用寄存器(R0
R3,编号分别为 03)。指令格式定义如下:OP(7位) | Md(1位) Rd(2位) | Ms1(1位) Rs1(2位) | Ms2(1位) Rs2(2位)其中 为寻址方式位,
0表示寄存器直接寻址,1表示寄存器间接寻址。 为寄存器编号。未使用的字段在低位补0。已知减法指令
sub的操作码为03H,其微操作语义动作为:。-
试分析为什么通用寄存器字段占 2 位。
-
请将微操作动作 转换为标准汇编指令,并给出其 16 位十六进制机器代码。
-
-
分析:
-
系统共 4 个寄存器,,因此 2 位二进制即可完全覆盖 4 个寄存器的编号。
-
微操作动作中, 为源操作数 1(寄存器间接寻址,寻址位为 1,寄存器为 R1); 为源操作数 2(寄存器直接寻址,寻址位为 0,寄存器为 R2); 为目的操作数(寄存器直接寻址,寻址位为 0,寄存器为 R3)。
-
汇编书写规范为
sub Rd, (Rs1), Rs2sub R3, (R1), R2。 -
按照字段物理排布顺序
OP | Md Rd | Ms1 Rs1 | Ms2 Rs2进行二进制拼接。
-
-
答案:
-
寄存器位数计算:
通用寄存器数量 ,由 可得最小编码位数 位,故通用寄存器字段需占 2 位。
-
汇编指令与机器码:
-
标准汇编:
sub R3, (R1), R2 -
字段解析:
-
OP=0000011(03H) -
Md Rd=0(直接寻址) +11(R3) -
Ms1 Rs1=1(间接寻址) +01(R1) -
Ms2 Rs2=0(直接寻址) +10(R2)
-
-
二进制拼接:
0000 0110 1110 1010 -
十六进制机器码:06EAH
-
-
⚠️ 易错点
Warning
混淆微操作箭头方向与指令字段位置:
极易误将
(R1) -> R2理解为“机器码先填 R1 再填 R2”。正确逻辑:机器码字段完全由硬件格式决定,固定先填目的操作数(R2),再填源操作数(R1);箭头仅仅是描述“数据从哪流到哪”。
括号与寻址方式的对应混淆:
在汇编代码中:
R1表示寄存器直接寻址;(R1)表示寄存器间接寻址。在微操作数据通路描述中:
(R1)表示取寄存器 R1 中的内容;((R1))表示以 R1 中的内容为主存地址进行访存(即寄存器间接寻址对应的数据)。切勿把微操作中的(R1)误当成间接寻址。