8085微处理器中无进位返回(RNC)
在8085指令集中,RNC是一个助记符,代表“无进位返回”。仅当Cy标志值为0时,此指令才用于返回主程序。如果Cy标志值为1,程序流程将在子程序中顺序继续。它是一个1字节指令。
| 助记符,操作数 | 操作码(十六进制) | 字节数 |
|---|---|---|
| RNC | D0 | 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内存位置将存储累加器的内容10H。在成功执行RNC指令后,控制权将返回到此指令。 |
| 200A | 76 | HLT | 程序结束。 |
| 200B | 3E | MVI A, 40H | A ← 40H,用初始值40H初始化累加器 |
| 200C | 40 | 40H作为操作数 | |
| 200D | 06 | MVI B, 30H | B ← 30H,用初始值30H初始化寄存器B |
| 200E | 30 | 30H作为操作数 | |
| 200F | 90 | SUB B | A ← A – B= 40H – 30H = 10H,由于计算结果没有进位,因此Cy = 0 |
| 2010 | D0 | RNC | 将控制权返回到地址2009H。返回地址2009H将从堆栈顶部弹出。因此,从地址4FFEH弹出09H,从地址4FFFH弹出20H,并且SP将根据其内容相应地获取其初始地址5000H。 |
| 2011 | 80 | ADD B | A ← A + B ← 10H + 30H = 40H。 (但在本例中,此行不可访问,因此不会执行) |
| 2012 | 77 | MOV M, A | M ← A,累加器的内容将被传输到内存位置4050H,因为它是由HL寄存器对指向的。因此,在4050H内存位置将存储累加器的内容40H。 (但在本例中,此行不可访问,因此不会执行) |
| 2013 | C9 | RET | 将控制权返回到地址2009H。返回地址2009H将从堆栈顶部弹出。因此,从地址4FFEH弹出09H,从地址4FFFH弹出20H,并且SP将根据其内容相应地获取其初始地址5000H。 (但在本例中,此行不可访问,因此不会执行) |
针对此指令RNC执行的时序图如下所示 –

总结 - 因此,此指令RNC需要1个字节、3个机器周期(操作码获取、内存读取、内存读取)和12个T状态才能执行,如时序图所示。
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP