8085 微处理器中的内存读取 (MR) 机器周期
“MOV C, M”指令中的最后三个时钟周期是内存读取机器周期的示例。内存读取机器周期的波形如下所示
指令 | 操作 | 地址寄存器 |
---|---|---|
LDA 1234H | 将 W 加载为 12H(或 Z 加载为 34H) | 程序计数器 (PC) |
POP B | 从堆栈顶部弹出信息 | 堆栈指针 (SP) |
MOV C, M | 从 HL 指向的内存中加载 A | HL |
LDAX B | 从 BC 指向的内存中加载 A | BC |
LDAX D | 从 DE 指向的内存中加载 A | DE |
LDA 1234H | 从内存位置 1234H 加载 A | WZ |
在内存读取机器周期期间,接收到的寄存器中的数据取决于指令内的 MR 机器周期,如下所示。其中“r”代表任何寄存器 A、B、C、D、E、H 或 L。
指令 | 操作 | 数据寄存器 |
---|---|---|
MOV r, M | 从 HL 指向的内存中加载 r | R |
POP PSW | 从堆栈顶部加载标志 | 标志 |
MVI M, 25H | 从内存中加载 Temp 为 25H | Temp |
示例
“MVI M, 25H”指令的执行。假设在位置 C002H,我们有 36H,它是指令“MVI M, ABH”的操作码。这里需要十个时钟周期来完成操作码获取、解码和执行。前四个时钟周期构成操作码获取机器周期,接下来的三个时钟周期将是内存读取机器周期,最后的三个时钟周期将是内存写入机器周期。
除了地址信息外,以下状态信号还在 T1 期间由控制单元激活。
ALE = 1,表示地址存在于 AD7-0 上;
IO/M* = 0,表示地址仅指定给内存;
S1 = 0,S0 = 1,表示它是内存写入机器周期。
以下是指令执行的详细说明 -
在 8085 指令集中,此指令 MVI M, d8 用于将 HL 对指向的内存位置直接加载一个 8 位值。此指令使用立即寻址来指定数据。它在内存中占用 2 个字节。
助记符,操作数 | 操作码(十六进制) | 字节 |
---|---|---|
MVI M, Data | 36 | 2 |
例如,我们可以考虑 MVI M, ABH 作为此类指令的示例。它是一个 2 字节指令,MVI M 的操作码占用一个字节,ABH 占用另一个字节。我们假设 HL 寄存器对包含 16 位地址 4050H,并且该地址的内容最初为 CDH。因此,在执行指令后,更新的值将为 -
| 之前 | 之后 |
---|---|---|
(HL) | (4050) | (4050) |
(4050) | CDH | ABH |
表格如下所示
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2006 | 36 | MOV M, ABH | HL 寄存器对指向的内存位置的内容将被 ABH 更新 |
2007 | AB | | 操作数 ABH |
让我们检查此指令 MVI M, ABH 的时序图
总结:因此,此指令 MVI M, ABH 需要 2 个字节、3 个机器周期(操作码获取、内存读取、内存写入)和 10 个 T 状态才能执行,如时序图所示。
广告