8085 微处理器中 POP rp 指令


在 8085 指令集中,使用助记符 **POP**,我们可以通过 **rp**(寄存器对,例如 BC、DE、HL 或 AF)从堆栈顶部弹出 2 个字节。其中 AF 是由标志寄存器和累加器寄存器组成的寄存器对,也称为 PSW(处理器状态字)。在 PSW 中,累加器是 MS 字节,标志寄存器是 LS 字节。

助记符,操作数 操作码(十六进制) 字节数
POP B C1 1
POP D D1 1
POP H E1 1
POP PSW F1 1

在上文中提到的操作码中,2 位用于表示寄存器对。2 位有 4 种组合,因此可以使用 POP 指令指定 4 个寄存器对。如前所述,它们是 BC、DE、HL 和 AF 或 PSW。

注意,对于 LXI 指令,可以使用 4 个可能的寄存器对,即 BC、DE、HL 和 SP。因此,同一指令不能同时使用 SP 和 PSW。

rp 代码 寄存器对
0 0 BC
0 1 DE
1 0 HL
1 1 SP 或 PSW,但不能同时使用。

让我们考虑以下示例,以便更好地理解指令的操作。

这里我们考虑指令 POP D,它属于该类别的一个指令。由于 rp 可以具有四个值中的任何一个,因此此类指令有四个操作码。它在内存中只占用 1 个字节。**POP D** 是此类指令的一个示例。它是一个 1 字节指令。下面用一个示例显示此指令执行的结果。

之前 之后

(BC)

AABBH AABBH

(SP)

3FFEH 4000H

(3FFFH)

AAH AAH

(3FFEH)

BBH BBH

(DE)

任意值 AABBH

地址 十六进制代码 助记符 注释
2000 01 LXI B, AABBH 用 AABBH 初始化 BC 寄存器对
2001 BB 低位字节 BBH
2002 AA 高位字节 AAH
2003 31 LXI SP,4000H 用 4000H 初始化 SP
2004 00 低位字节 00H
2005 40 高位字节 40H
2006 C5 PUSH B AAH 将移动到 3FFFH,BBH 将移动到 3FFEH
2007 D1 POP D 弹出并用堆栈内容初始化 DE 寄存器对

针对该指令 **POP D** 执行的时序图如下:

POP

**总结** - 因此,此指令 **POP** 需要 1 个字节、3 个机器周期(操作码提取、内存读取、内存读取)和 10 个 T 状态才能执行,如时序图所示。

更新于:2019-07-30

7K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告