8085微处理器中的正数调用(CP)
在8085指令集中,CP是一个助记符,代表“Call if Positive”(正数调用)。只有当S标志位的值为0时,此指令才跳转到指令中提供的16位地址的子程序。如果S标志位的值为1,则程序流程将按顺序继续执行主程序。这是一个3字节指令。
| 助记符,操作数 | 操作码(十六进制) | 字节 |
|---|---|---|
| CP标签 | F4 | 3 |
让我们考虑以下示例代码以更好地解释:
| 地址 | 十六进制代码 | 助记符 | 注释 |
|---|---|---|---|
| 2000 | 31 | LXI SP, 5000H | SP ← 5000H. 初始化堆栈指针(SP) |
| 2001 | 00 | 地址的低位字节 | |
| 2002 | 50 | 地址的高位字节 | |
| 2003 | 3E | MVI A, 40H | A ← 40H,将累加器A初始化为40H |
| 2004 | 40 | 操作数为40H | |
| 2005 | 06 | MVI B, 30H | B ← 30H,将寄存器B初始化为30H |
| 2006 | 30 | 操作数为30H | |
| 2007 | 90 | SUB B | A ← A – B = 40H – 30H = 10H,由于10H = 0001 0000B是一个正数结果,所以P = 0 |
| 2008 | F4 | CP 2010H | 由于S = 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 ← A,累加器的内容将被传输到HL寄存器对指向的内存位置4050H。因此,在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。 |
针对此指令CP 2010H执行的时序图如下所示:

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