暫存器,標誌暫存器

2022-09-06 20:57:24 字數 3869 閱讀 1202

涉及硬體傳輸資料的,往往包含以下內容:

1.資料傳輸引腳(資料放**)

2.控制引腳(怎麼控制)

3.狀態引腳(結果如何)

暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於

c語言中的陣列。

一.8個通用暫存器

16 bit

accumulate

axah

alr0

count

cxch

clr1

data

dxdh

dlr2

base

bxbh

blr3

stack

spr4

stack base

bpr5

source

sir6

destination

dir7

二.專用暫存器:

三.標誌暫存器:

1514

1312

111098

7654

3210

ofdf

iftf

sfzf

afpf

cf分為6個狀態位

+ 3個控制位。

(1) cf: carry flag進製標誌,運算結果的最高有效位有進製(加法)或借位(減法)時,

cf = 1

,否則cf = 0

。對於無符號數的數**算,才關注

cf,有符號數則不關注。

(2) of: overflow flag溢位標誌位,若運算的結果有溢位,則

of = 1

,否則of = 0

。對於有符號數的數**算,才關注

of,無符號數則不關注。

何為溢位?例如用8位表示補碼,範圍是

-128 ~ +127

,超出此範圍就產生溢位。

何時溢位?兩個同符號數相加(包括不同符號數相減),結果的符號相反才溢位,其他情況不可能溢位。正數和負數相加不可能溢位。

進製和溢位的區別:

進製表示無符號數的運算超出範圍,運算結果依然正確,補上cf即可。

溢位表示有符號數的運算超出範圍,運算結果已經不正確。

如何運用進製和溢位?

處理器對兩個數進行運算時,按無符號數求得結果,並設定cf位;同時根據是否超出有符號數的範圍,設定

of位。

應利用哪個標誌,由程式設計師決定。如果將數字看作無符號數,就關注cf;如果將數字看作有符號數,就關注of。

(3) zf: zero flag零標誌位,若運算結果為0,則

zf =1

,否則zf = 0

兩個無符號數a和b,指令

sub a, b

,如何判斷a和

b之間的關係?

若zf = 1,則

a = b

。若cf = 1,則

a < b

。若cf = 0 且

zf = 0

,則a > b

。(4) sf: sign flag符號標誌位。若運算結果最高位為1,則

sf = 1

,否則sf = 0

。由於有符號數的最高位為

1是負數,也可理解為負號標誌位。

兩個有符號數a和b,指令

sub a, b

,如何判斷a和

b之間的關係?

若zf = 1,則

a = b

。若sf = 1,則

a < b

。若sf = 0 且

zf = 0

,則a > b

。(5) pf: parity flag奇偶標識位,運算結果最低位元組(最低

8位)中,若

1的個數為偶數,則

pf = 1

,否則pf = 0

(6) af: auxiliary carry flag輔助進製標誌,運算結果中最低半個位元組(最低

4位)是否有進製或借位,有則

af = 1

,否則af = 0

。主要是處理器內部使用,一般使用者不用關心。

(7) df: direction flag方向標誌位,用於串操作指令中,控制位址的變化方向。例如將一串資料拷貝到另一處,設定

df = 0

,則位址自動增加,設定

df = 1

,則位址自動減少。

cld指令使

df = 0

,std指令使

中斷允許標誌,控制外部可遮蔽中斷是否能被處理器響應。

if = 1則允許中斷,

if = 0則禁止中斷。

cli指令使

if = 0

,sti指令使

中斷類似於windos程式設計中的

wndproc

,可以直接呼叫,但更多時候被動呼叫。

何時使用if?

自己寫中斷時,首先禁止中斷,否則可能中斷裡觸發中斷。例如劫持系統的中斷時,先設if=0,等自己要做的事情完成再恢復中斷。

(9) tf: trap flag陷阱標誌位,也稱為單步標誌位,用於控制處理器是否單步執行指令。

tf = 1則單步執行指令,

tf = 0則正常執行指令,不單步。

單步執行指令時,處理器在每條指令執行結束時,產生乙個編號為1的內部中斷,也稱為單步中斷。編寫偵錯程式時可接管此中斷,隨後顯示各暫存器值等。

標誌暫存器df 標誌暫存器

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

標誌暫存器

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

標誌暫存器

按位起作用 15 14 13 12 11 of 10 df 09 if 08 tf 07 sf 06 zf 05 04 af 03 02 pf 01 00 cf 沒有標記的位,沒有含義 只有add,sub,mul,div,inc,or,and等運算指令才會影響標誌暫存器,mov,push,pop 等...