“PC 加 1（1 个指令字长）”自动形成下一条指令的地址。对于一个指

“PC 加 1（1 个指令字长）”自动形成下一条指令的地址。对于一个指令 32 位，4 字节这个含义是不是就是 PC+4？

是的，你的理解是正确的。

在计算机体系结构中，程序计数器（PC，Program Counter）用于存放下一条要执行的指令的地址。对于指令长度为 **32 位（4 字节）** 的体系结构（如 RISC-V、ARM、MIPS 等），指令是按 **字（Word）** 对齐的，因此每执行一条指令后，PC 会自动增加 **4**（即指向下一条指令的地址）。

### 具体解释：

1. **指令字长 = 32 位 = 4 字节**  
    每条指令占用 4 个字节的内存空间。
    
2. **PC 的增量**  
    由于指令是连续存放的，下一条指令的地址就是当前指令地址 +4：
    
    PCnew=PCcurrent+4 PCnew​=PCcurrent​+4
1. **为什么不是 +1？**
    
    - 如果 PC+1，地址只会增加 1 个字节（8 位），这会指向当前指令的中间部分，导致错误。
        
    - PC+4 才能正确跳到下一条完整的 32 位指令。
        

### 示例：

假设当前指令地址是 `0x00000000`，那么：

- 第 1 条指令地址：`0x00000000`
    
- 第 2 条指令地址：`0x00000004`（`0x00000000 + 4`）
    
- 第 3 条指令地址：`0x00000008`（`0x00000004 + 4`）
    
- 以此类推。
    

### 特殊情况（跳转/分支指令）：

如果是 **跳转指令（如 `jump`、`branch`）**，PC 的值会被直接修改为目标地址（而不是简单的 +4）。

### 总结：

对于 **32 位（4 字节）指令** 的体系结构，默认情况下 **PC = PC + 4**。你的理解完全正确！

所以如果指令不是按字对齐的（32 字节为 1 个字），那么 PC 不一定+4 咯？

你的思考方向是正确的！**PC 的增量取决于指令的长度和对齐方式**。如果指令不是按字（Word）对齐的，或者指令长度不是固定的，PC 的增量可能会变化。具体分析如下：

---

### 1. **指令按字对齐（常见情况）**

- **32 位体系结构（如 RISC-V、ARM、MIPS）**：
    
    - 指令长度固定为 **32 位（4 字节）**，且按 **字（Word）对齐**（即指令地址是 4 的倍数，如 `0x0, 0x4, 0x8...`）。
        
    - **PC 每次 +4**，因为每条指令占 4 字节。
        
    - 这是绝大多数现代 RISC 架构的默认行为。
        
- **64 位体系结构（如 RISC-V 64、ARM 64）**：
    
    - 指令长度可能仍是 32 位（如 RISC-V），PC 仍 +4；
        
    - 如果指令长度是 64 位（8 字节），则 PC +8。
        

---

### 2. **指令不按字对齐（罕见情况）**

- **变长指令（如 x 86）**：
    
    - x 86 指令是 **变长** 的（1~15 字节不等），且不需要对齐。
        
    - PC 的增量取决于当前指令的字节数，可能是 +1、+2、+3...
        
    - 例如：
        
        asm
        
        mov eax, 0 x 1234  ; 假设这条指令占 5 字节
        add ebx, ecx     ; 假设这条指令占 2 字节
        
        - 执行完 `mov` 后，PC +5；
            
        - 执行完 `add` 后，PC +2。
            
- **非对齐访问（一般避免）**：
    
    - 某些架构允许指令非对齐存放（如地址 `0x1001`），但会牺牲性能（可能触发异常或额外时钟周期）。
        
    - 此时 PC 仍按实际指令长度增加（如 4 字节指令从 `0x1001` 开始，下一条指令在 `0x1005`）。
        

---

### 3. **关键结论**

- **PC 的增量由指令长度决定**：
    
    - 固定长度指令（如 RISC）：PC + 指令字节数（如 32 位 → +4）。
        
    - 变长指令（如 CISC）：PC + 当前指令的实际字节数。
        
- **对齐是性能优化**：
    
    - 按字对齐的指令可以加速取指（内存访问更高效），因此大多数现代架构强制对齐。
        

---

### 示例对比

|架构类型|指令长度|对齐要求|PC 增量|
|---|---|---|---|
|RISC-V|固定 32 位|按 4 字节对齐|+4|
|x 86|变长（1~15 字节）|无对齐要求|+实际指令长度|
|ARM Thumb|混合 16/32 位|2 字节对齐|+2 或 +4|

---

### 回答你的问题

- **如果指令不是按字对齐的**（比如 x 86 的变长指令），PC 的增量就不一定是 +4，而是**实际指令的字节数**。
    
- **如果指令长度本身不是 32 位**（如 16 位指令），PC 会 +2 而不是 +4。
    

总之，PC 的行为完全取决于 **指令集架构的设计**（固定/变长、对齐要求等）。32 位 RISC 的 +4 只是最常见的一种情况。

Yy-z 02 模型机中，ADD DR,Data 对应两个字节 第一个字节 OP(-0101) XX DR（2 位） DATA（8 位立即数）。REG[DR]+DATA->REG[DR].那么这里为什么是 PC+1?Data 源操作数为什么是立即寻址？不是也有 DR 吗？

在 **Yy-z 02 模型机** 中，`ADD DR, Data` 指令的设计涉及 **指令编码格式** 和 **寻址方式**，我们来逐步解析你的问题：

---

### **1. 为什么 `PC + 1` 而不是 `PC + 2`？**

- **指令长度**：  
    该指令占 **2 字节**（第一个字节 = `OP + DR`，第二个字节 = `8 位立即数 Data`）。  
    但 **PC 的增量是按“指令条数”计算，而不是字节数**（取决于架构定义）。
    
    - 如果 Yy-z 02 的 **PC 设计为每条指令 +1**（无论指令占多少字节），那么执行 `ADD DR, Data` 后，`PC = PC + 1`。
        
    - 这种设计常见于 **字节编址但指令地址按“指令单元”递增** 的简单模型机（类似某些微控制器的 PC 行为）。
        
- **对比现实架构**：
    
    - x 86（变长指令）：PC 按实际字节数增加（如 2 字节指令 → `PC + 2`）。
        
    - RISC（固定长度）：PC 按固定值增加（如 4 字节指令 → `PC + 4`）。
        
    - **Yy-z 02 可能是简化设计**，用 `PC + 1` 表示“下一条指令”，而实际指令占用 2 字节。
        

---

### **2. 为什么 `Data` 是立即寻址？`DR` 的作用是什么？**

- **指令格式**：  
    `ADD DR, Data` 的编码为：
    
    text
    
    第 1 字节：OP (4 位) | XX (2 位) | DR (2 位)  
    第 2 字节：8 位立即数 Data
    
    - ** `DR` **：目标寄存器（Destination Register），指定结果存放的位置（`REG[DR] + Data → REG[DR]`）。
        
    - ** `Data` **：**8 位立即数**（直接嵌入指令中的常数），属于 **立即寻址**（Immediate Addressing）。
        
- **为什么不是寄存器寻址？**
    
    - 如果设计为 `ADD DR, SR`（如 `ADD R1, R2`），则需另一个字段指定源寄存器 `SR`，但该指令未提供此字段。
        
    - **立即寻址的优势**：可以直接完成 `REG[DR] + 常数` 的操作（无需额外访问寄存器或内存）。
        
- **如果有 `DR` 参与运算，为什么不算寄存器寻址？**
    
    - 寻址方式针对的是 **源操作数**（`Data`），而 `DR` 是 **目标操作数**。
        
    - 该指令的寻址方式组合：
        
        - 目标操作数：**寄存器直接寻址**（`REG[DR]`）。
            
        - 源操作数：**立即寻址**（`Data`）。
            

---

### **3. 对比其他可能的指令设计**

- **情况 1**：若指令为 `ADD DR, SR`（如 x 86 的 `ADD R1, R2`）：
    
    - 源操作数 `SR` 是寄存器寻址。
        
    - 编码需额外字段表示 `SR`（可能占用更多字节）。
        
- **情况 2**：若指令为 `ADD DR, [ADDR]`（如 `ADD R1, [0x100]`）：
    
    - 源操作数是 **内存直接寻址**，需编码内存地址（占用更多字节）。
        
- **Yy-z 02 的选择**：  
    为了简化设计，`ADD DR, Data` 直接使用 **立即数**，减少指令复杂度和编码长度（仅 2 字节）。
    

---

### **4. 总结**

|问题|解释|
|---|---|
|**PC +1**|Yy-z 02 可能将 PC 定义为“指令地址计数器”，每条指令 +1（实际指令占 2 字节）。|
|** `Data` 是立即寻址**|源操作数是嵌入指令的 8 位常数，不是来自寄存器或内存。|
|** `DR` 的作用**|指定目标寄存器，参与运算但不算源操作数的寻址方式。|

这种设计在教学中很常见，用于简化数据通路和控制逻辑的实现。如果是实际架构（如 x 86、ARM），行为会更复杂。

寻址方式针对的是 源操作数（Data），而 DR 是 目标操作数。DR 虽然也参与了源操作数，但因为是目标操作数就把他作为目标操作数？

你的问题涉及到 **指令操作数的角色划分** 和 **寻址方式的定义**，这是计算机体系结构中容易混淆的概念。我们来彻底理清楚：

---

### **1. 操作数的角色：源操作数 vs 目标操作数**

在一条指令中，操作数分为两类：

- **源操作数（Source Operand）**：提供数据的输入（如被加数、被减数等）。
    
- **目标操作数（Destination Operand）**：存放结果的输出（如加法结果的存放位置）。
    

以 `ADD DR, Data` 为例：

- ** `Data` **：是源操作数（提供加数）。
    
- ** `DR` **：**既是源操作数，又是目标操作数**。
    
    - 作为源操作数：提供被加数（`REG[DR]` 的初始值）。
        
    - 作为目标操作数：存放结果（`REG[DR] + Data → REG[DR]`）。
        

---

### **2. 为什么 `DR` 不被归类为源操作数的寻址方式？**

虽然 `DR` 参与了运算（提供了被加数），但 **寻址方式的定义通常仅针对显式指定的源操作数**（即指令中直接编码的操作数）。

- ** `Data` ** 是显式的源操作数（立即寻址）。
    
- ** `DR` ** 是隐式的源操作数（通过目标操作数隐含使用），它的寻址方式始终是 **寄存器直接寻址**（因为 `DR` 直接指向寄存器）。
    

#### 类比现实指令（x 86 的 `ADD`）：

asm

ADD EAX, 5     ; EAX 是目标操作数，5 是立即寻址的源操作数
ADD EAX, EBX   ; EAX 是目标操作数，EBX 是寄存器寻址的源操作数

- 即使 `EAX` 提供了初始值，我们仍说：
    
    - 第一行的源操作数是 `5`（立即寻址）。
        
    - 第二行的源操作数是 `EBX`（寄存器寻址）。
        
- `EAX` 的角色始终是 **目标操作数**，尽管它参与了运算。
    

---

### **3. Yy-z 02 的 `ADD DR, Data` 设计逻辑**

- **指令语义**：`REG[DR] + Data → REG[DR]`
    
    - 需要两个输入（`REG[DR]` 和 `Data`），一个输出（`REG[DR]`）。
        
- **编码限制**：  
    指令只有 2 字节，无法同时编码两个寄存器（如 `ADD DR, SR`），因此：
    
    - 显式编码一个源操作数（`Data`，立即寻址）。
        
    - 另一个源操作数（`REG[DR]`）通过目标操作数隐含提供。
        

#### 为什么这样设计？

1. **节省指令长度**：避免为第二个源操作数分配额外编码位。
    
2. **简化硬件**：无需从指令中解码两个寄存器地址，只需一个 `DR` 字段。
    
3. **常见模式**：类似 `INC DR`（`REG[DR] + 1 → REG[DR]`），隐含使用 `DR` 作为源和目标。
    

---

### **4. 关键结论**

|概念|说明|
|---|---|
|**目标操作数（`DR`）**|既是源（提供初始值），又是目标（存放结果），但寻址方式仅针对显式操作数。|
|**源操作数（`Data`）**|显式指定的立即数，其寻址方式是 **立即寻址**。|
|**寻址方式的定义**|通常仅适用于指令中显式编码的源操作数，而非隐含使用的目标操作数。|

---

### **5. 类比思考**

假设你有一条指令 `MOV DR, SR`（将 `SR` 的值复制到 `DR`）：

- `SR` 是源操作数（寄存器寻址）。
    
- `DR` 是目标操作数（寄存器寻址）。
    
- 虽然 `DR` 是寄存器，但它的寻址方式不会被单独讨论，因为它是目标。
    

同理，`ADD DR, Data` 中 `DR` 的角色是目标，而 `Data` 是唯一的显式源操作数，因此只有 `Data` 的寻址方式需要明确说明。

---

### **总结回答你的问题**

- ** `DR` 是目标操作数**，尽管它提供了初始值，但寻址方式通常不针对目标操作数定义。
    
- ** `Data` 是显式源操作数**，它的寻址方式是立即寻址。
    
- 这种设计是为了 **指令编码简洁** 和 **硬件实现简单**，在简单模型机中很常见。
    

如果仍有疑问，可以继续讨论！

PC 给出吓一跳指令字的访问存储地址（指令在内存中的地址）。因此位数取决于存储器的字数。这个存储器的字数就是地址长度？

### **PC 位数、存储器地址长度与指令字长的关系**

你的问题涉及 **程序计数器（PC）的位数**、**存储器的地址空间** 和 **指令字长** 之间的关系。我们来逐步分析：

---

## **1. 关键概念**

### **(1) 存储器的“字数” vs “地址长度”**

- **存储器的字数**：存储器可以存储的 **指令或数据的数量**（按“字”计算）。
    
    - 例如，一个存储器能存储 `2^N` 个字，那么它的“字数”就是 `2^N`。
        
- **地址长度（地址位数）**：用于寻址存储器中每个“字”所需的 **二进制位数**。
    
    - 如果存储器有 `2^N` 个字，那么 **地址长度 = N 位**（因为需要 `N` 位二进制数才能表示 `2^N` 个不同的地址）。
        

✅ **结论**：  
**存储器的字数 = 2 地址长度 2 地址长度**，因此 **地址长度（位数）决定了可以访问的存储器字数**。

---

### **(2) 指令字长（Instruction Word Length）**

- **指令字长**：一条指令占用的 **二进制位数**（如 32 位、16 位、8 位）。
    
- **存储器的“字长”**：存储器一次可读/写的 **数据位数**（通常与指令字长一致）。
    

例如：

- 如果 **指令字长 = 32 位（4 字节）**，存储器按 **字（Word）** 访问，那么：
    
    - 每个 **存储器地址指向 1 个字（4 字节）**。
        
    - 因此，`PC + 1` 实际上是 **地址 +4 字节**（因为 1 个指令字 = 4 字节）。
        

---

### **(3) PC 的位数**

- **PC（Program Counter）** 存储的是 **下一条指令的存储器地址**，因此：
    
    - **PC 的位数 = 存储器的地址长度**。
        
    - 例如：
        
        - 如果存储器有 `2^{16} = 65536` 个字，那么 **地址长度 = 16 位**，PC 也是 16 位。
            
        - 如果存储器有 `2^{32} = 4GB` 地址空间，那么 **PC = 32 位**。
            

✅ **结论**：  
**PC 的位数 = 存储器的地址长度**，而 **地址长度取决于存储器的字数**（地址长度=log⁡2(字数)地址长度=log 2​(字数)）。

---

## **2. 你的问题的具体分析**

### **问题：**

> “PC 给出下一条指令字的访问存储地址（指令在内存中的地址）。因此位数取决于存储器的字数。这个存储器的字数就是地址长度？”

### **回答：**

1. **“存储器的字数” ≠ “地址长度”**
    
    - **字数** = 存储器能存储的指令/数据的数量（如 `2^{16} = 65536` 个字）。
        
    - **地址长度** = 表示这些字数所需的二进制位数（如 65536 个字 → 16 位地址）。
        
    - 关系：**地址长度 = log⁡2(字数)log 2​(字数)**。
        
2. **PC 的位数 = 地址长度**
    
    - PC 存储的是 **指令的存储器地址**，所以它的位数必须足够表示所有可能的指令地址。
        
    - 如果存储器有 `2^{16}` 个字，那么 **PC = 16 位**。
        
    - 如果存储器有 `2^{32}` 个字，那么 **PC = 32 位**。
        
3. **指令字长影响 PC 的增量，但不影响 PC 的位数**
    
    - 如果 **指令字长 = 32 位（4 字节）**，那么 `PC + 1` 实际上是 **地址 +4**（因为 1 个指令字 = 4 字节）。
        
    - 但 **PC 的位数仍然由存储器的总字数决定**，而不是指令字长。
        

---

## **3. 举例说明**

### **假设一个 16 位地址的存储器（PC = 16 位）**

- **存储器字数**：216=65536216=65536 个字。
    
- **指令字长**：假设 32 位（4 字节）。
    
- **PC 行为**：
    
    - 当前指令地址 = `0x0000`（16 位）。
        
    - 下一条指令地址 = `0x0004`（`PC + 4`，因为 1 指令 = 4 字节）。
        
    - 但 **PC 仍然是 16 位**，因为存储器只有 65536 个地址。
        

### **如果存储器是 32 位地址（PC = 32 位）**

- **存储器字数**：232=4 GB 232=4 GB 地址空间。
    
- **指令字长**：仍假设 32 位（4 字节）。
    
- **PC 行为**：
    
    - 当前指令地址 = `0x00000000`（32 位）。
        
    - 下一条指令地址 = `0x00000004`（`PC + 4`）。
        
    - **PC 是 32 位**，因为存储器地址需要 32 位表示。
        

---

## **4. 常见误区**

- ❌ **误区 1**：认为“PC 的位数 = 指令字长”。
    
    - 实际上，**PC 的位数 = 存储器的地址长度**，而指令字长只影响 PC 的增量（如 `PC +1` 或 `PC +4`）。
        
- ❌ **误区 2**：认为“存储器的字数 = 地址长度”。
    
    - 实际上，**地址长度 = log⁡2(字数)log 2​(字数)**（如 65536 个字 → 16 位地址）。
        

---

## **5. 总结**

|概念|说明|
|---|---|
|**存储器字数**|存储器能存储的指令/数据的总数量（如 `2^{16}` 个字）。|
|**地址长度**|表示所有存储器地址所需的二进制位数（如 16 位）。|
|**PC 位数**|等于存储器的地址长度（如 16 位地址 → PC = 16 位）。|
|**指令字长**|影响 PC 的增量（如 32 位指令 → `PC +4`），但不影响 PC 位数。|

### **最终结论**

- **“存储器的字数” ≠ “地址长度”**，而是 **地址长度 = log⁡2(字数)log 2​(字数)**。
    
- **PC 的位数 = 存储器的地址长度**，由存储器的总字数决定。
    
- **指令字长** 只影响 PC 的增量（如 `PC +1` 或 `PC +4`），不影响 PC 的位数。
    

希望这个解释能彻底理清你的疑问！如果有进一步问题，欢迎继续讨论。

Yy-z 02 模型机中，ADD DR,Data 对应两个字节 第一个字节 OP(-0101) XX DR（2 位） DATA（8 位立即数）。REG[DR]+DATA->REG[DR].那么这里为什么是 PC+1?指令两个字节就应该是 PC+2

### **问题回顾**

在 **Yy-z 02 模型机** 中，指令 `ADD DR, Data` 的编码如下：

- **第 1 字节**：`OP (4位) | XX (2位) | DR (2位)`
    
- **第 2 字节**：`8 位立即数 Data`
    
- **执行操作**：`REG[DR] + Data → REG[DR]`
    

**疑问**：  
既然这条指令占 **2 字节**，为什么是 `PC + 1` 而不是 `PC + 2`？

---

### **关键原因**

#### **1. PC 的增量单位可能不是“字节”，而是“指令”**

在部分简化模型机（如 Yy-z 02）中，**PC 的增量单位可能是“指令”而非“字节”**：

- ** `PC + 1` 表示“指向下一条指令”**，而 **不关心指令占多少字节**。
    
- 这种设计类似于某些微控制器（如 8051），其 PC 按“指令单元”递增，而非严格按字节递增。
    

**示例**：

- 假设当前 `PC = 0`，执行 `ADD DR, Data`（占 2 字节）后：
    
    - 按字节计算：`PC` 应指向 `0 + 2 = 2`。
        
    - 但若 PC 按“指令”递增，则 `PC = 0 + 1 = 1`（指向下一条指令，实际地址可能是 `1 × 2 = 2`）。
        

#### **2. 存储器可能是“字编址”而非“字节编址”**

- 如果存储器是 **字编址（Word-Addressable）**，每个地址对应 2 字节（1 个字）：
    
    - 指令 `ADD DR, Data` 占 **1 个字（2 字节）**，因此 `PC + 1` 实际跳转 2 字节。
        
    - 类似 RISC-V 的 `PC + 4`（因为 1 指令 = 4 字节，存储器按字节编址）。
        

**对比**：

|编址方式|指令长度|PC 增量|实际地址增量|
|---|---|---|---|
|字节编址|2 字节|PC + 2|+2 字节|
|字编址（2 字节）|1 字|PC + 1|+2 字节|

#### **3. 可能是教学模型的简化设计**

Yy-z 02 作为教学模型机，可能故意简化：

- **统一 `PC + 1` **：无论指令长度（1 字节或 2 字节），PC 都 `+1`，避免学生混淆。
    
- **隐藏细节**：实际存储器访问由硬件处理，学生只需关注“指令顺序”。
    

---

### **验证方法**

1. **检查 Yy-z 02 的存储器编址方式**：
    
    - 如果是 **字节编址**，`PC + 1` 应指向下一字节（与指令长度矛盾）。
        
    - 如果是 **字编址**，`PC + 1` 指向下一字（与指令长度一致）。
        
2. **观察其他指令的 PC 行为**：
    
    - 如果 `MOV DR, SR`（假设 1 字节）也 `PC + 1`，则可能是“按指令递增”。
        
    - 如果 `JMP 0x100`（长指令）仍 `PC + 1`，则进一步确认 PC 单位。
        
3. **查阅手册或实验说明**：
    
    - 教学模型机的文档通常会明确 PC 的增量规则。
        

---

### **现实架构对比**

|架构|指令长度|PC 增量规则|原因|
|---|---|---|---|
|x 86|变长（1-15 B）|PC + 实际字节数|字节编址，变长指令|
|RISC-V|固定 4 B|PC + 4|字节编址，定长指令|
|ARM Thumb|混合 2 B/4 B|PC + 2 或 +4|字节编址，半字/字对齐|
|Yy-z 02|2 B（本例）|PC + 1|可能是字编址或按指令递增|

---

### **结论**

在 Yy-z 02 模型机中，`ADD DR, Data` 指令占 2 字节但 `PC + 1`，可能的原因是：

1. **PC 按“指令”递增**（而非字节），`+1` 表示“下一条指令”。
    
2. **存储器字编址**，`PC + 1` 实际跳转 2 字节（1 个字）。
    
3. **教学简化**，统一用 `PC + 1` 避免复杂计算。
    

**最终答案**：  
**Yy-z 02 的 PC 增量规则可能是“每执行一条指令，PC + 1”**（无论指令占多少字节），这是一种简化设计。实际地址增量由存储器编址方式决定（可能是 +2 字节）。

我可以理解成指令是按字节对齐的吗？所以指令虽然为 2 个字节，但是 PC+1

### **关键结论**

在 **Yy-z 02 模型机** 中，`ADD DR, Data` 指令占 **2 字节** 但 `PC + 1`，可以理解为：

1. **指令按字节存储**（字节对齐），但 **PC 的增量单位是“指令地址”而非“字节地址”**。
    
    - 每执行一条指令，`PC + 1`（指向下一条指令的“逻辑地址”）。
        
    - 实际存储器中，指令可能占用 2 字节，但硬件自动处理地址转换。
        
2. **类比“数组索引”**：
    
    - 若存储器是 **字节数组**，指令占 2 字节，则：
        
        - `PC = 0` → 指令在 `[0, 1]`
            
        - `PC + 1` → 下一条指令在 `[2, 3]`
            
    - **PC 的值是“指令索引”**，硬件隐式 ×2 得到字节地址。
        
3. **简化设计**：
    
    - 教学模型机可能隐藏字节级细节，让学生专注指令流（`PC +1` 总是指向下一条指令，无论其长度）。
        

---

### **是否算“字节对齐”？**

- **是**，因为指令存储在连续的字节中（无空洞）。
    
- **但 PC 的 +1 不是“字节地址 +1”**，而是“指令序号 +1”。
    

### **现实类比**

- **类似 x 86 的“段地址 + 偏移”**：逻辑地址（PC）和物理地址（实际字节）可能不同。
    
- **类似 RISC-V 的 `PC +4` **：虽然指令占 4 字节，但 PC 的值按字递增。
    

---

### **最终回答**

✅ **可以理解为“指令按字节存储，但 PC 按指令单位递增”**。

- 执行 `ADD DR, Data`（2 字节）后，`PC +1` 指向下一条指令（实际字节地址 +2）。
    
- 这种设计在教学中用于简化控制逻辑，实际硬件会处理地址转换。
    

由于违反用户使用规范，你的账号已被禁言至 2026 年 9 月 18 日 20:07，如有疑问请 。