8085 微处理器中无进位调用 (CNC)
在 8085 指令集中,CNC 是一个助记符,代表“无进位调用”。仅当 Cy 标志值为 0 时,此指令才用于分支到指令中提供的 16 位地址的子程序。如果 Cy 标志值为 1,则程序流程按顺序继续在主程序中执行。它是一个 3 字节指令。
助记符,操作数 | 操作码(十六进制) | 字节 |
---|---|---|
CNC 标签 | D4 | 3 |
让我们考虑以下示例代码以更好地解释 -
地址 | 十六进制代码 | 助记符 | 注释 |
---|---|---|---|
2000 | 31 | LXI SP, 5000H | SP ← 5000H.初始化 SP |
2001 | 00 | 地址的低位字节 | |
2002 | 50 | 地址的高位字节 | |
2003 | 3E | MVI A, 40H | A ← 40H,用初始值 40H 初始化累加器 |
2004 | 40 | 40H 作为操作数 | |
2005 | 06 | MVI B, 30H | B ← 30H,用初始值 30H 初始化寄存器 B |
2006 | 30 | 30H 作为操作数 | |
2007 | 90 | SUB B | A ← A – B= 40H – 30H = 10H,由于计算结果中没有进位,所以 Cy = 0 |
2008 | D4 | CNC 2010H | 由于 Cy = 0,因此调用地址为 2010H 的子程序。因此,程序的控制权将转移到位置 2010H。下一个指令的地址 200BH(即返回地址)将被压入堆栈顶部。结果,4FFFH(SP – 1)将包含 20H,而 4FFEH(SP – 2)将分别包含 0BH。 |
2009 | 10 | 地址的低位字节 | |
200A | 20 | 地址的高位字节 | |
200B | 21 | LXI H, 4050H | HL ← 4050H,初始化 HL 寄存器对。在执行 RET 指令后,控制权将返回到此指令。 |
200C | 50 | 地址的低位字节 | |
200D | 40 | 地址的高位字节 | |
200E | 77 | MOV M, A | M &larar A,累加器的内容将被传输到内存位置 4050H,因为它由 HL 寄存器对指向。因此,在 4050H 内存位置,将存储累加器的内容 40H。 |
200F | 76 | HLT | 程序结束。 |
2010 | 80 | ADD B | A ← A + B ← 10H + 30H = 40H |
2011 | C9 | RET | 将控制权返回到地址 200BH。返回地址 200BH 将从堆栈顶部弹出。因此,从地址 4FFEH 弹出 0BH,从地址 4FFFH 弹出 20H,并且 SP 将相应地将其内容恢复为初始地址 5000H。 |
针对此指令 CNC 2010H 执行的时序图如下所示 -
总结 - 因此,此指令 CNC 需要 3 个字节、5 个机器周期(操作码获取、内存读取、内存读取、内存写入、内存写入)和 18 个 T 状态才能执行,如时序图所示。
广告