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