8085 微处理器中的返回如果为负 (RM)


在 8085 指令集中,RM 是一个助记符,代表“返回如果为负”。仅当 S 标志值为 1 时,此指令才用于返回主程序。如果 S 标志值为 0,则程序流程将在子程序中依次继续。它是一个 1 字节指令。

助记符,操作数
操作码(以十六进制表示)
字节
RM
F8
1


让我们考虑以下示例代码以获得更好的解释 -

地址
十六进制代码
助记符
注释
2000
31
LXI SP, 5000H
SP ← 5000H。初始化 SP
2001
00


地址的低位字节
2002
50


地址的高位字节
2003
21
LXI H, 4050H
HL ← 4050H,初始化 HL 寄存器对
2004
50


地址的低位字节
2005
40


地址的高位字节
2006
CD
CALL 200BH
调用地址为 200BH 的子程序。因此,现在程序的控制权将转移到位置 200BH。下一个指令的返回地址 2009H(即地址)将被压入堆栈顶部。结果,4FFFH(SP – 1)将包含 20H,而 4FFEH(SP – 2)将分别包含 09H。
2007
0B


地址的低位字节
2008
20


地址的高位字节
2009
77
MOV M, A
M ← A,累加器的内容将传输到内存位置 4050H,因为它由 HL 寄存器对指向。因此,在 4050H 内存位置,累加器的,内容 F0H 将被存储。在成功执行 RM 指令后,控制权将返回到此指令。
200A
76
HLT
程序结束。
200B
3E
MVI A, 40H
A ← 40H,用初始值 40H 初始化累加器
200C
40


40H 作为操作数
200D
06
MVI B, 50H
B ← 50H,用初始值 30H 初始化寄存器 B
200E
50


50H 作为操作数
200F
90
SUB B
A ← A – B = 40H – 50H = -10H = F0H,由于计算结果为负,因此 S = 1
2010
F8
RM
将控制权返回到地址 2009H。返回地址 2009H 将从堆栈顶部弹出。因此,从地址 4FFEH 弹出 09H,从地址 4FFFH 弹出 20H,并且 SP 将相应地将其内容恢复为初始地址 5000H。
2011
80
ADD B
A ← A + B ← -10H + 50H = 40H。
(但在本例中,此行无法访问,因此不会执行)
2012
77
MOV M, A
M ← A,累加器的内容将传输到内存位置 4050H,因为它由 HL 寄存器对指向。因此,在 4050H 内存位置,累加器内容 40H 将被存储。
(但在本例中,此行无法访问,因此不会执行)
2013
C9
RET
将控制权返回到地址 2009H。返回地址 2009H 将从堆栈顶部弹出。因此,从地址 4FFEH 弹出 09H,从地址 4FFFH 弹出 20H,并且 SP 将相应地将其内容恢复为初始地址 5000H。
(但在本例中,此行无法访问,因此不会执行)


针对此指令 RM 执行的时间图如下所示 -

摘要 - 因此,此指令 RM 需要 1 个字节、3 个机器周期(操作码获取、内存读取、内存读取)和 12 个 T 状态才能执行,如时间图所示。

更新于: 2020-06-27

283 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告