彙編學習之二 cf zf 操作標記位

2021-09-19 11:21:24 字數 829 閱讀 7178

除整數暫存器外,cpu還維護著一組單個位的條件碼暫存器

這些暫存器儲存著最近算術或者邏輯操作所產生的一些效果 列如:

邏輯操作的1 或者0 

有符號數的結果是否溢位 等

cf(carry flag):進製標誌 描述了最近操作是否發生了進製(可以檢查無符號操作是否溢位)

zf(zero flag):零標誌 最近操作結果為0(列如 邏輯操作 等)

sf(sign flag):符號標誌最近操作結果為負數

of(overflow flag):溢位標誌最近操作導致乙個補碼溢位 補碼溢位通常有兩種結果(正溢位或者負溢位)

邏輯操作會將進製標誌和溢位標誌設定為0  (只是邏輯操作不會發生進製和溢位)

對於移位操作,進製標誌會設定為最後移出的位,而溢位標誌會設定為0

inc dec指令會設定溢位標誌和零標誌,但是不會改變進製標誌

了解條件碼之後出現兩類指令 僅僅設定條件碼不會改變其他的暫存器 (其儲存運算元的暫存器都不會改變  僅僅進行測試)

cmp a,b    操作 b-a (除不更新目標暫存器外 cmp和sub的行為是一樣的)

cmpb  a, b

cmpw  a, b

cmpl  a, b 

test a,b 操作 b&a (除不更新目標暫存器外 test和and的行為是一樣的)

testb  a, b

testw  a, b

testl a, b

例(cmp):

movw $0x0fff, %ax

movw $1,%bx

cmpw %ax, %bx

這時會設定符號標誌 但是%bx中的值還是$1

16位彙編學習筆記(二) 組合語言的語句

課後練習題 指令語句 具有對應的機器碼 偽指令語句 無對應的機器碼 指示匯程式設計序如何彙編源程式,包括括號,變數,段的定義 巨集指令語句 巨集彙編中的巨集指令語句,暫不介紹 偽指令 名字 偽指令定義符號 引數 引數 注釋 偽指令定義符規定了偽指令的功能。引數的個數和型別由偽指令的不同而不同 引數 ...

32位組合語言學習筆記 4 移位操作

sal k,d d d k 左移。shl,與 sal相同。sar k,d d d k 算術右移。shr k,d d d l k 邏輯右移。算術右移是指左邊空出來的位填符號位。邏輯右移是指左邊空出來的位填0。示例 shift.c int shift left2 rightn int x,int n g...

32位組合語言學習筆記 5 特殊的算術操作

imull s edx eax eax s edx 表示64 位的高32 位,eax 表示低32 位 有符號 64位乘法。mull s edx eax eax s 無符號 64位乘法。cltd eax 暫存器中的數,按照符號位擴充套件到 edx,轉為 8個位元組。idivl s edx edx ea...