8085 中的 RIM 指令
在 8085 指令集中,读取中断掩码。这是一个 1 字节的多用途指令。它用于以下目的。
检查 RST7.5、RST6.5 和 RST5.5 是否被屏蔽;
检查中断是否启用;
检查 RST7.5、RST6.5 或 RST5.5 中断是否挂起;
执行串行数据输入。
助记符,操作数 | 操作码(十六进制) | 字节 |
---|---|---|
RIM | 20 | 1 |
为了获取关于中断系统的状态信息,读取中断掩码指令提供了关于中断系统的信息,并且该指令可以用于串行数据输入。通过这个 RIM 指令,8085 可以知道哪个中断被屏蔽或未屏蔽等。执行 RIM 指令后累加器的內容提供了这些信息。
因此,执行读取中断掩码指令后,查看累加器的內容至关重要。执行读取中断掩码后累加器的各个位的含义如下图所示:
中断的掩码状态:累加器的低 3 位用于提供中断的掩码状态。请注意,它们不用于屏蔽或取消屏蔽。屏蔽或取消屏蔽必须使用读取中断掩码指令。
位号 | 用途 |
---|---|
位 0 | 这是 RST5.5 掩码 (M5.5) 位。
|
位 1 | 这是 RST6.5 掩码 (M6.5) 位。
|
位 2 | 这是 RST7.5 掩码 (M7.5) 位。
|
中断启用 (IE) 状态:累加器的位 3 在执行读取中断掩码指令后提供 IE 触发器的状态。
如果 IE = 1,则表示中断系统已启用。如果在执行 RIM 指令之前执行了 EI 指令,则会出现这种情况。
如果 IE = 0,则表示中断系统已禁用。如果在执行 RIM 指令之前发生了以下情况之一,则会出现这种情况。
执行了 DI 指令
Intel 8085 已复位
Intel 8085 已进入中断服务子程序。
让我们在下面的表格中查看其他状态位:
位号 | 用途 |
---|---|
位 4 | 这是中断挂起 RST5.5 (IP5.5) 位。
|
位 5 | 这是中断挂起 RST6.5 (IP6.5) 位。
|
位 6 | 这是中断挂起 RST7.5 (IP7.5) 位。
|
8085 微处理器有一个标记为串行输入数据的引脚。这对于串行数据通信是必需的。微处理器可以在每个时钟脉冲读取 1 位信息。因此,当执行 RIM 指令时,累加器的最高位接收 8085 的 SID 引脚上的数据。鉴于此,执行 RIM 指令后,累加器位 7 的含义如下:
位号 | 用途 |
---|---|
位 7 | 这是 SID 位。执行 RIM 指令后,8085 的 SID 引脚上的数据将 加载到此位位置。 |
让我们讨论一下 8085 的各种中断的详细信息,总结如下表所示。
引脚 | 优先级 | 中断服务子程序地址 | 灵敏度 | 条件 |
---|---|---|---|---|
TRAP | 最高 | 0024H | 上升沿和高电平 | 无条件 |
RST7.5 | 第二 | 003CH | 上升沿 | 未屏蔽且 EI |
RST6.5 | 第三 | 0034H | 高电平 | 未屏蔽且 EI |
RST5.5 | 第四 | 002CH | 高电平 | 未屏蔽且 EI |
INTR | 最低 | 由外部设备提供 | 高电平 | EI |
让我们考虑以下程序段:
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2000 | 3E | MVI A, 19H | A ← 19H =0001 1001,这意味着 SOD=0,SDE=0,R7.5=1,MSE=1,M5.5=1 |
2001 | 19 | 累加器值 19H | |
2002 | 30 | SIM | 设置中断掩码 |
2003 | 20 | RIM | 读取中断掩码。如果累加器获得值 01H,则表示 SID=0,I7.5=0,I6.5=0,I5.5=0,IE=0,M7.5=0,M6.5=0 和 M5.5=1 |
此指令读取中断掩码执行的时序图如下所示:
**总结** − 所以这个读取中断掩码指令需要 1 个字节、1 个机器周期(操作码获取)和 4 个 T 状态来执行,如时序图所示。