8085微处理器中的返回进位(RC)指令


在8085指令集中,RC是一个助记符,代表“返回进位”。只有当Cy标志位值为1时,此指令才返回主程序。如果Cy标志位值为0,程序流程将依次继续在子程序中执行。它是一个1字节指令。

助记符,操作数
操作码(十六进制)
字节数
RC
D8
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,累加器的內容将被传输到HL寄存器对指向的内存位置4050H。因此,在4050H内存位置将存储累加器的內容F0H。成功执行RC指令后,控制将返回到此指令。
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,由于计算结果产生了进位,所以Cy = 1
2010
D8
RC
将控制返回到地址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,累加器的內容将被传输到HL寄存器对指向的内存位置4050H。因此,在4050H内存位置将存储累加器的內容40H。
(但在这个例子中,这一行代码无法访问,所以不会被执行)
2013
C9
RET
将控制返回到地址2009H。返回地址2009H将从堆栈顶部弹出。因此,从地址4FFEH弹出09H,从地址4FFFH弹出20H,SP将相应地恢复其初始地址5000H的内容。
(但在这个例子中,这一行代码无法访问,所以不会被执行)


此指令RC执行的时序图如下:


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

更新于:2020年6月27日

627 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告