简化的指令计算机 (SIC)2025年3月17日 | 阅读13分钟 SIC 是一种假设的计算机,它包含一些硬件特性。实际机器大多数都包含这些特性。简化的指令计算机基本上有两个版本,即:
1. SIC 机器架构/组件简化的指令计算机包含许多组件,如下所述: 内存简化的指令计算机中的内存组织为 8 位字节序列(1 字节 = 8 位)。一个字可以由 3 个连续字节组成(1 字 = 24 位)。这意味着,借助 24 位,简化的指令计算机得以设计。低编号字节用于寻址一个字,寻址从 0 字节开始。计算机内存包含 215 字节。 ![]() 寄存器简化的指令计算机包含 5 种寄存器。每个寄存器都有一个与之关联的地址,该地址称为**寄存器编号**。每个寄存器只能包含 3 个字节,这意味着其大小为 3 字节。整数的大小取决于寄存器的大小。SIC 中没有堆栈,它主要借助链接寄存器来存储地址。如果我们想编写递归程序,在 SIC 中会非常困难。如果我们编写一个包含多层的函数调用,程序员需要维护返回地址的内存。
状态字寄存器有五种类型,如下所述: 模式:此模式位指的是**管理模式**(值为 1)或**用户模式**(值为 0)。模式位占用 1 位。[0] 状态:在此,我们将看到进程是处于**空闲状态**(值为 1)还是**运行状态**(值为 0)。状态位占用 1 位。[1] ID:此 ID 位指的是**进程 ID** (PID)。ID 位占用 3 位。[2-5] CC:CC 位指的是**条件码**。这意味着 CC 位将显示设备是否准备就绪。CC 位占用 2 位。[6-7] 掩码:掩码位指的是**中断掩码**。掩码位占用 4 位。[8-11] X:X 指的是**未使用的位**。X 位占用 4 位。[12-15] ICode:ICode 指的是**中断码**。其余位由 ICode 占用。[16-23] 数据格式
指令格式简化的指令计算机中的所有指令总共包含 24 位格式。简化的指令计算机的内存大小为 215 字节。 ![]() 此图像中的 X 用于显示索引地址模式。 寻址模式SIC 只能支持 2 种模式,如下所述:
如果 **X = 0**,则表示**直接寻址模式**。如果 **X = 1**,则表示**索引寻址模式**,如下所示:
这里的 () 表示寄存器的内容。 指令集SIC 中的指令集如下所述: 算术指令 SIC 使用内存和寄存器 A 执行运算。借助寄存器,将存储结果。算术指令用 ADD、MUL、SUB、DIV 等表示。**例如:** 算术示例 加载和存储指令 它用于将数据从内存存储或移动到累加器,或将数据从累加器移动到内存。加载和存储指令用 LDX、STA、LDA、STX 等表示。**例如:** 比较指令 它用于比较寄存器 A 中的内容与内存中的数据。它使用 SW 的 CC(条件码)来保存结果。比较指令用 COMP 表示。**例如:** 子程序链接指令 它用于指示与子程序相关的指令。子程序链接指令用 RSUB、JSUB 表示。在此,**RSUB** 将通过跳转到寄存器 L 中的地址来返回,而 **JSUB** 用于跳转并将返回地址放入 L。 条件跳转指令 它首先用于比较内存和累加器的内容。然后,根据条件执行任务。条件跳转指令用 JLT、JGT 和 JEQ 表示。例如 输入和输出每个设备都包含一个 8 位地址。数据以单个字节的形式传输到寄存器 A 的最右边字节,或从寄存器 A 的最右边字节传输。输入和输出指令有三种类型,如下所述: 测试设备 (TD):它使用状态字和条件码来测试设备是否已准备好发送或接收一个字节数据。如果 CC(条件码)为 <,在这种情况下,设备已准备就绪。如果 CC 为 >,在这种情况下,设备正忙。 读取数据 (RD):借助 RD,可以从设备读取一个字节。该字节将存储在寄存器 A 中。 写入数据 (WD):借助 WD,可以将一个字节写入从寄存器 A 指定的内存设备中。 SIC 的 I/O 示例 2. SIC/XESIC/XE 是 SIC(简化的指令计算机)的高级版本,代表**超额费用或超额设备**。SIC(简化的指令计算机)和 SIC/XE 都向上兼容,因为它们密切相关。 SIC/XE 机器架构/组件SIC/XE 包含许多组件,如下所述: 内存内存通常包含 8 字节。在 SIC/XE 系统中,最大可用内存为 1 兆字节,即 220 字节。标准 SIC 的内存大小非常小。由于内存大小的变化,简化的指令计算机超额费用 (SIC/XE) 中的寻址模式和指令格式发生了变化。与 SIC 类似,在 SIC/XE 的体系结构中,一个字(24 位)可以由 3 个连续字节组成。在 SIC/XE 中,所有地址都是字节地址。借助字的低编号字节的位置,可以寻址一个字。 寄存器与 SIC(简化的指令计算机)的寄存器不同,SIC/XE 中有 4 个额外的通用寄存器。这意味着总共有 9 个寄存器(4 个额外寄存器 + SIC 的 5 个寄存器)。SIC/XE 的四个额外寄存器描述如下:
借助 SIC 和 SIC/XE 的所有 9 个寄存器,可以轻松地在自定义汇编语言中执行任务。S 和 T 寄存器只能用于存储。我们不能将这些寄存器用作累加器。**例如:** 数据格式SIC 标准版本和 SIC/XE 的数据格式几乎相同。数据格式存在一些差异,如下所述:
SIC/XE 包含一个额外的 48 位浮点数据类型,如下所示: ![]() 值将使用以下公式表示: 例如 指令格式简化的指令格式不适合 SIC/XE,因为 SIC/XE 的可用内存大小为 220 字节。这意味着 SIC/XE 的地址无法放入 15 位字段。 有两种方法可以解决内存相关问题,如下所述:
SIC/XE 包含四种格式。其中,格式 1 和格式 2 不能用于引用内存。位 'e' 用于区分格式 3 和格式 4。 格式 1:这是一个 1 字节格式。例如:HIO、NORM、SIO、TIO。 ![]() 格式 2:这是一个 2 字节格式。 ![]() 寄存器由上述两个地址表示。因此,我们无需访问内存即可执行。 格式 3:这是一个 3 字节格式。 ![]() 当且仅当“n 位”和“i 位”均为 0 时,指令才会被解释为简单的 SIC 指令。 格式 4:这是一个 4 字节格式。 ![]() 其中
指令的变化可以通过上述位单独或组合解释,如下所示:
因此,最后的 15 位以及 bpe 位被视为地址。 寻址模式对于格式 3,SIC/XE 中引入了两种新的寻址模式,如下所述:
如果在格式 3 中 **b 位**和 **p 位**都设置为 0,则 **disp** 被视为**目标地址**。这个过程称为**直接寻址模式**。借助直接、间接和相对寻址模式以及许多其他寻址模式,我们可以计算目标地址,如下所述: 基址相对寻址 如果我们使用基址相对模式,在这种情况下,disp 将是一个 12 位无符号整数。 ![]() 在此图像中,b 代表 Base(基址)。 程序计数器相对 如果我们使用程序计数器相对模式,在这种情况下,disp 将是一个 12 位有符号整数。 ![]() 在此图像中,p 代表 Program(程序)。 直接寻址 在直接寻址模式中,如果且仅当位 b 和 p 设置为 0 时,目标地址才能直接从地址字段或 disp 中获取。 ![]() 对于格式 3 和格式 4 的直接寻址,指示、目标地址和计算描述如下: 索引寻址 在索引寻址中,将 (x) 项添加到目标地址的计算中。如果位 x 设置为 1,在这种情况下,寄存器 X 的值将加到目标地址的计算中。 ![]() 对于格式 3 和格式 4 的直接索引寻址,指示和目标地址描述如下: 格式 3:n = 1, i = 1, x = 1, TA = (X) + disp 格式 4:n = 1, i = 1, x = 1, TA = (X) + address 现在我们将看到目标地址与位 i 和 n 的使用,如下所示:
立即索引模式描述如下: ![]() 在此图像中,i 代表 immediate(立即)。 间接索引模式描述如下: ![]() 在此图像中,n 代表 indirect(间接)。 简单寻址模式描述如下: 情况 1 ![]() 情况 2 ![]() 寻址模式示例
指令集SIC 和 SIC/XE 的指令集几乎相同,但由于增加了浮点数据格式,SIC/XE 中包含一些额外的指令集。因此,SIC/XE 还提供了许多额外的指令,包括浮点算术指令。所有额外的指令描述如下:
浮点算术运算描述如下: 寄存器移动运算描述如下: 寄存器到寄存器算术运算描述如下: 管理调用运算描述如下: 管理调用用于生成 OS(操作系统)的中断 输入/输出通道运算描述如下: 借助附录 A,我们可以获得所有指令的列表。附录的表示法描述如下: C:条件码 CC P:特权指令 A ← (x. .x+2):将从 x 开始的字移动到 A。 X:此指令仅在 SIC/XE 中可用 输入和输出SIC/XE 提供 I/O 通道。借助此通道,我们可以在 CPU(中央处理单元)执行其他指令的同时执行输入和输出操作。它还允许输入或输出与计算的重叠。由于这种重叠,SIC/XE 的体系结构变得更加有效。I/O 的指令集是 SIO、TIO 和 HIO,它们分别能够启动、测试和停止 I/O 通道的操作。 下一个主题AVR 微控制器中的算术指令 |
我们请求您订阅我们的新闻通讯以获取最新更新。