標誌暫存器

2021-07-31 15:44:21 字數 3370 閱讀 6299

8086的標誌暫存器是16位暫存器,它是按位起作用的,也就是說,它的每一位都有專門的含義,記錄特定的資訊。

8086cpu中沒有使用flag的1、3、5、12、13、14、15位,這些位不具有任何含義

標誌暫存器的作用

1) 用來儲存相關指令的某些執行結果

2) 用來為cpu執行相關指令提供行為依據

3) 用來控制cpu的相關工作方式

1. zf-零標誌

zf標記相關指令的計算結果是否為0

zf=1(zr),表示「結果是0 」,1表示「邏輯真」

zf=0 ( nz ),表示「結果不是0」,0表示「邏輯假」

2. pf-奇偶標誌

pf記錄指令執行後,結果的所有二進位制位中1的個數:

pf = 1 (pe ),表示1的個數為偶數

pf = 0 (po),表示1的個數為奇數

3. sf-符號標誌

sf記錄指令執行後,將結果視為有符號數

sf = 1 (ng), 表示結果為負

sf = 0(pl),表示結果為非負

sf 標誌是cpu對有符號數運算結果的一種記錄 。

將資料當作有符號數來運算的時候,通過sf可知結果的正負;將資料當作無符號數來運算,sf的值則沒有意義,雖然相關的指令影響了它的值。

4. cf-進製標誌

在進行無符號數運算的時候,cf記錄了運算結果的最高有效位向更高位的進製值,或從更高位的借位值

cf=1(cy), 表示有進製或借位

cf=0(nc), 表示無進製或借位

5. of-溢位標誌

在進行有符號數運算的時候,如結果超過了機器所能表示的範圍稱為溢位

of = 1(ov), 表示有溢位

of = 0(nv), 表示無溢位

eg:

mov al,0f0h

add al,88h

執行結果:cf=1, of=1

即當無符號數運算有進製,當有符號數運算有溢位

adc-帶進製加法指令

格式:adc 操作物件1,操作物件2

功能:操作物件1=操作物件1+操作物件2+cf

sbb-帶借位減法指令

格式:sbb 操作物件1,操作物件2

功能:操作物件1=操作物件1–操作物件2–cf

cmp指令

格式:cmp 操作物件1,操作物件2

功能:比較兩個操作物件

原理:相當於減法指令, 只是不儲存結果,cmp 指令執行後, 將對標誌暫存器產生影響,其他相關指令通過識別這些被影響的標誌暫存器位來得知比較結果。

j***系列指令和cmp指令配合,構造條件轉移指令

根據無符號數比較結果進行轉移的指令:

根據有符號數比較結果進行轉移的指令:

根據單個標誌位轉移的指令:

j-jump e-equal n-not b-below a-above l-less g-greater

s-sign c-carry p-parity o-overflow z-zero

df-方向標誌位(direction flag)

功能:

在串處理指令中,控制每次操作後si,di的增減。

df = 0:每次操作後si,di遞增;

df = 1:每次操作後si,di遞減。

對df位進行設定的指令:

cld指令:將標誌暫存器的df位設為0(clear)

std指令:將標誌暫存器的df位設為1(setup)

串傳送指令

1. movsb

功能:以位元組為單位傳送

(1) ((es)×16 + (di)) = ((ds) ×16 + (si))

(2) 如果df = 0則:

(si) = (si) + 1

(di) = (di) + 1

如果df = 1則:

(si) = (si) - 1

(di) = (di) - 1

2. movsw

功能:以字為單位傳送

(1) ((es)×16 + (di)) = ((ds) ×16 + (si))

(2) 如果df = 0則:

(si) = (si) + 2

(di) = (di) + 2

如果df = 1則:

(si) = (si) - 2

(di) = (di) - 2

rep指令

rep指令常和串傳送指令搭配使用

功能:根據cx的值,重複執行後面的指令

(1)rep movsb

相當於

s : movsb

loop s

(2)rep movsw

相當於

s : movsw

loop s

eg:

將data段中的第乙個字串複製到它後面的空間中。

data segment

db 『welcome to masm!』

db 16 dup (0)

data ends

assume cs:codesg,ds:datasg

datasg segment

db 'welcome to masm!'

db 16 dup (0)

datasg ends

codesg segment

start: mov ax,data

mov ds,ax

mov si,0

mov es,ax

mov di,16

cld ;df設為0

mov cx,8

rep movsw ;串傳送

mov ax,4c00h

int 21h

codesg ends

endstart

標誌暫存器df 標誌暫存器

cpu內部的暫存器中,有一種特殊的暫存器具有以下三種作用。用來儲存相關指令的某些執行結果 用來為cpu執行相關指令提供行為依據 用來控制cpu的相關工作方式 這種特殊的暫存器在8086cpu種,被稱為標誌暫存器 flag 8086cpu的標誌暫存器有16位,其中儲存的資訊通常被稱為程式狀態字 psw...

暫存器,標誌暫存器

涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...

標誌暫存器

標誌暫存器 標誌暫存器 flags register,fr 又稱程式狀態字 program status word,psw 這是乙個存放條件標誌 控制標誌暫存器,主要用於反映處理器的狀態和運算結果的某些特徵及控制指令的執行 各標誌在標誌暫存器中的位置 條件標誌 cf carry flag 進製標誌 ...