8085中的SIM指令
在8085指令集中,**SIM**代表“设置中断掩码”。它是一条1字节指令,并且是一条多用途指令。**SIM**指令的主要用途是:
屏蔽/取消屏蔽RST7.5、RST6.5和RST5.5
将RST7.5触发器复位为0
执行数据的串行输出
助记符,操作数 | 操作码(十六进制) | 字节 |
---|---|---|
SIM | 30 | 1 |
当执行SIM指令时,累加器的内容决定了要采取的操作。因此,在执行SIM指令之前,必须使用所需的值初始化累加器。下面描述了执行SIM时累加器各个位的含义和作用:
请注意,除了位5(无关位)之外,累加器的其他位决定了执行SIM指令的效果。中断屏蔽:只有累加器的低4位用于中断的屏蔽或取消屏蔽。
位号 | 用途 |
---|---|
位3 | 这是掩码设置使能(MSE)位。此位可以有两个值:0或1。
|
位2 | 这是屏蔽RST7.5(M7.5)位。此位仅在MSE位=1时才有意义。如果MSE=1且M7.5=0,则RST7.5未屏蔽。如果MSE=1且M7.5=1,则RST7.5被屏蔽。 |
位1 | 这是M6.5位,用于屏蔽/取消屏蔽RST6.5。它与M7.5位类似。 |
位0 | 这是M5.5位,用于屏蔽/取消屏蔽RST5.5。它与M7.5位类似。 |
需要注意的是,可以使用此SIM指令屏蔽或取消屏蔽RST7.5、RST6.5和RST5.5。TRAP和INTR不能使用SIM屏蔽或取消屏蔽。不允许屏蔽TRAP,因为它是最优先级且不可屏蔽的中断。INTR不需要屏蔽功能,因为它是最低优先级的中断。在8085复位后,RST7.5、RST6.5和RST5.5中断将处于屏蔽状态。
复位RST7.5触发器:累加器的位4(R7.5)用于在执行SIM指令时将RST7.5触发器输出复位为0。如果R7.5=0,则SIM指令不用于复位RST7.5触发器。因此,如果R7.5=0,则RST7.5触发器输出不会发生变化。如果R7.5=1,则RST7.5触发器被清零。让我们考虑下图以更好地理解:
从图中可以清楚地看出,仅当执行SIM指令时,SIM信号才会被激活。当累加器的位4(R7.5)=1时,R7.5信号被激活。因此,当累加器的位4=1且执行SIM指令时,RST7.5触发器将其清零输入接收逻辑1,从而被清零。或者,当8085识别RST7.5中断或8085复位时,RST7.5触发器被清零。
在8085微处理器中,有一个名为SOD的引脚。SOD代表串行输出数据。由于8085是8位处理器,因此它通常针对每个时钟脉冲发送和接收8位数据。但有时并行通信不适用。在这些情况下,我们可以选择8位数据的串行通信。这意味着针对每个时钟脉冲,将传输1位信息。这样,传输8位数据需要8个时钟脉冲。这称为串行数据通信。英特尔8085提供SOD(串行数据输出)引脚和SIM指令以促进数据的串行输出。当用户命令8085发送数据时,累加器的最高有效位出现在SOD引脚上。用户通过将累加器的位6设为1并执行SIM指令来命令8085发送累加器的最高有效位。请考虑下表:
位号 | 用途 |
---|---|
位6 | 这是串行输出使能(SOE)位。如果此位=0,则SIM指令不用于数据的串行输出。在这种情况下,累加器的最高有效位不包含任何有用的信息。如果SOE位=1,则SIM指令用于数据的串行输出。然后最高有效位提供要发送到8085的SOD引脚上的数据。 |
位7 | 这是串行输出数据(SOD)位。此位仅在SOE位=1时才有意义。如果SOE=1且执行SIM指令,则SOD位出现在8085的SOD引脚上。 |
让我们考虑以下程序段:
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
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 | 设置中断掩码 |
针对此指令**SIM**执行的时序图如下:
**总结** - 因此,此指令**SIM**需要1个字节、1个机器周期(操作码获取)和4个T状态才能执行,如时序图所示。