8085 中的 EI 和 DI 指令
8085 有五个内部中断信号,对应于五个外部中断引脚。并且这些中断仅在内部中断信号被激活时才被识别,8085 会被打断,前提是同时没有更高级别的内部中断信号处于活动状态。8085 在指令最后一个机器周期倒数第二个时钟周期检查所有这些内部中断信号。
在 8085 中,有一个称为 IE 触发器的触发器。这里 IE 代表中断使能。只要此触发器复位到 0 状态,8085 中断系统就会被禁用。也就是说,即使外部中断引脚被激活,相应的内部中断信号也不会被激活。这可以在下图中观察到,该图提供了 8085 中断结构的内部架构。

从图中可以清楚地看出,此触发器状态与对应于 TRAP 的内部中断信号无关。TRAP 是最高优先级、不可屏蔽的中断。这意味着,只要外部 TRAP 引脚被激活,相应的内部中断信号就会始终被激活。
IE 触发器通过以下三种情况复位到 0 状态:
执行 DI 指令;
识别中断请求
重置 8085。
DI 指令代表“禁用中断”。它是一条 1 字节指令。执行此指令时,IE 触发器将被复位。这将禁用 8085 中断系统,除了 TRAP 引脚。
当 8085 识别到中断时,它会跳转到 ISS(中断服务子程序)。识别是指内部中断信号被激活,并且更高级别的内部中断信号未处于活动状态。在 ISS 中,8085 不希望再次被打断。这就是为什么当 8085 识别到中断时,它会将自身置于 DI 状态的原因。但是,TRAP 仍然可以中断 ISS。因此,当控制权转移到 ISS 时,中断系统会自动禁用。因此,程序员无需在 ISS 的开头编写 DI 指令。无论程序员是否在 ISS 的开头编写 DI 指令,中断系统都保持禁用状态,除了 TRAP。
| 助记符,操作数 | 操作码(十六进制) | 字节 |
|---|---|---|
| EI | FB | 1 |
| DI | F3 | 1 |
让我们考虑以下程序段:
| 地址 | 十六进制代码 | 助记符 | 注释 |
|---|---|---|---|
| 2000 | FB | EI | 启用中断将使 EI = 1 |
| 2001 | F3 | DI | 禁用中断将使 EI = 0 |
针对此指令 **EI** 执行的时序图如下:

**总结** - 因此,此指令 EI 需要 1 字节、1 个机器周期(操作码获取)和 4 个 T 状态才能执行,如时序图所示。
针对此指令 **DI** 执行的时序图如下:

**总结** - 因此,此指令 DI 需要 1 字节、1 个机器周期(操作码获取)和 4 个 T 状态才能执行,如时序图所示。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP