8085 微處理器中的標誌暫存器


8085 微處理器中,標誌暫存器可以包含總共八個標誌。因此,一個標誌可以用 1 位資訊來表示。但 8085 中只實現了五個標誌。它們是

  • 進位標誌 (Cy),

  • 輔助進位標誌 (AC),

  • 符號標誌 (S),

  • 奇偶標誌 (P),以及

  • 零標誌 (Z)。

這些標誌位在標誌暫存器中的相應位置已在下圖中顯示。標記為“x”的位置在標誌暫存器中應視為“無關位”。使用者不需要記住這些標誌在標誌暫存器中的位置。

圖:標誌暫存器

現在考慮 8085 程式設計師的視角,其中包含的標誌暫存器在下圖中進行了描述 -

圖:8085 標誌暫存器的程式設計師視角

這些單獨的標誌根據最後執行的算術或邏輯指令的結果,要麼設定為 1,要麼復位為 0。但在一些算術和邏輯指令中,這些標誌中的一些或全部都不會受到影響。還有一些算術和邏輯指令,標誌暫存器中的標誌位也不會受到影響。例如,在執行 DCX 和 INX 指令時,標誌暫存器中的標誌位根本不會受到影響。

但是,在任何資料傳輸指令中,標誌暫存器中的任何標誌位都不會受到影響。現在讓我們分別考慮每個標誌位,以便我們進一步討論。

進位標誌 (Cy):在執行任何兩個 8 位數的加法後,生成的進位可以是 0 或 1。即只有 1 位。因此,要儲存進位資訊,1 位儲存就足夠了。Cy 標誌儲存在標誌暫存器中的最低有效位位置。使用 Cy 標誌的指令在使用者程式中被廣泛使用。

示例 1:在 45H 和 F3H 的加法中,產生的結果將是 38H,並且 Cy 標誌 = 1,如下所示。

示例 2:在 85H 和 1EH 的加法中,產生的結果將是 A3H,並且 Cy = 0,如下所示。

輔助進位標誌 (Ac):現在讓我們考慮任何兩個 8 位(2 個十六進位制數字)數的加法,當我們新增這兩個數的最低有效位十六進位制數字時,可能會生成進位。這種進位也稱為中間進位,也稱為半進位或輔助進位 (AC)。英特爾更喜歡稱之為 AC。在上面的示例 1 中,沒有生成 AC,但在示例 2 中,生成了 AC。

由於這只是一箇中間進位,我們可能不希望儲存此位資訊。但 8085 微處理器仍然將此 AC 資訊儲存在標誌暫存器中的第 4 位。DAA 指令執行的結果受此標誌狀態的影響。但是,在我們的 8085 指令集中,沒有提供任何明確使用 AC 標誌的指令。

符號標誌 (S):當針對任何邏輯或算術運算產生的結果為負數時,S 標誌設定為 1,由 8 位結果的最高有效位為 1 表示。否則,如果結果為正數,則將其復位為 0,由 8 位結果的最高有效位為 0 表示。

因此,S 標誌的值本質上是 8 位結果的最高有效位的值。在上面的示例 1 中,由於 8 位結果是 38H = 0 011 1000,最高有效位為 0 表示結果為正,符號標誌被複位為 0。請注意,我們這裡不考慮包括進位的 9 位結果來確定 S 標誌的值。在示例 2 中,由於 8 位結果是 A3H = 1 010 0011,最高有效位已變為 1,這意味著負數,符號標誌被設定為 1。

但是,當我們使用無符號數時,我們將簡單地忽略 S 標誌。例如,如果我們將 85H 和 1EH 視為無符號數,它們的和將是無符號數 A3H。在這種情況下,S 標誌變為 1,但我們不關心 S 標誌的值。我們也將忽略它。

使用 S 標誌的指令在使用者程式中經常使用。

奇偶標誌 (P):如果針對任何邏輯和算術運算產生的 8 位結果中包含偶數個 1,則 P 標誌設定為 1。如果 8 位結果中包含奇數個 1,則 P 標誌被複位為 0。

在我們之前的示例 1 中,由於 8 位結果 38H = 0011 1000 包含三個 1,因此包含奇數個 1,奇偶標誌被複位為 0。另一方面,在示例 2 中,由於 8 位結果 A3H = 1010 0011 包含四個 1(因此為偶數個 1),奇偶標誌被設定為 1。

由於使用者實際上並不關心算術運算後結果中存在的 1 的數量,因此在實踐中,此標誌沒有多大用處。

零標誌 (Z):如果在算術和邏輯運算後,產生的 8 位結果為 00H,則 Z 標誌設定為 1。如果 8 位結果不等於 00H,則 Z 標誌被複位為 0。因此,Z 標誌被設定以指示結果為 0。

在前面的示例 1 中,由於 8 位結果是 38H 且不為零,因此 Z 標誌被複位為 0。同樣,在另一方面,在示例 2 中,由於 8 位結果是 A3H,因此 Z 標誌在此處再次被複位為 0。使用 Z 標誌的指令在使用者程式中被廣泛使用。

更新於: 2023 年 9 月 10 日

38K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告