Instrukcje warunkowe

background image

Znacznik

Nazwa

Ustawiany na 1 gdy ..., a zerowany w przeciwnym przypadku.

CF

Carry Flag

wystąpiło przeniesienie lub pożyczka z najbardziej znaczącego bitu wyniku (nadmiar w operacjach
na liczbach bez znaku)

PF

Parity Flag

najmłodsze 8 bitów wyniku zawiera parzystą liczbę jedynek

AF

Asjust Flag

wystąpiło przeniesienie lub pożyczka z najmłodszych 4 bitów rejestru AL (używany w arytmetyce
dziesiętnej)

ZF

Zero Flag

wynik jest równy zero

SF

Sign Flag

najbardziej znaczący bit wyniku (bit znaku dla liczb w kodzie uzupełnień do 2) jest równy 1

OF

Overflow Flag

wynik jest zbyt duży lub zbyt mały, aby mógł być zapisany w kodzie uzupełnień do 2 (nadmiar w
operacjach na liczbach ze znakiem)

Instrukcja

OF

SF

ZF

AF

PF

CF

AAA
AAS

-

-

-

TM

-

M

AAD
AAM

-

M

M

-

M

-

DAA
DAS

-

M

M

TM

M

TM

ADC
SBB

M

M

M

M

M

TM

ADD
SUB
CMP
CMPS
SCAS
NEG

M

M

M

M

M

M

DEC
INC

M

M

M

M

M

MUL
IMUL

M

-

-

-

-

M

DIV
IDIV

-

-

-

-

-

-

RCL 1
RCR 1

M

TM

RCL count
RCR count

-

TM

ROL 1
ROR 1

M

M

ROL count
ROR count

-

M

SAL 1
SAR 1
SHL 1
SHR 1

M

M

M

-

M

M

SAL count
SAR count
SHL count
SHR count

-

M

M

-

M

M

SHLD
SHRD

-

M

M

-

M

M

BSF
BSR

-

-

M

-

-

-

BT
BTS
BTR

-

-

-

-

-

M

Znaczniki używane w instrukcjach arytmetycznych i warunkowych

Ważniejsze instrukcje modyfikujące znaczniki

background image

BTC

AND
OR
TEST
XOR

0

M

M

-

M

0

NOT

CLC

0

CMC

M

STC

1

T

instrukcja testuje znacznik

M

instrukcja modyfikuje znacznik

0

instrukcja zeruje znacznik

1

instrukcja ustawia znacznik na 1

-

po wykonaniu instrukcji wartość znacznika jest niezdefiniowana

instrukcja nie zmienia wartości znacznika

Instrukcja

Sprawdzany warunek

Skok gdy ...

JO

OF = 1

wystąpił nadmiar

JNO

OF = 0

nie wystąpił nadmiar

JB
JNAE
JC

CF = 1

mniejsze (liczby bez znaku)
nie mniejsze i nie równe (liczby bez znaku)
wystąpiło przeniesienie

JNB
JAE
JNC

CF = 0

nie mniejsze (liczby bez znaku)
większe lub równe (liczby bez znaku)
nie wystąpiło przeniesienie

JE
JZ

ZF = 1

równe
wynik równy zero

JNE
JNZ

ZF = 0

nie równe
wynik różny od zera

JBE
JNA

(CF or ZF) = 1

mniejsze lub równe (liczby bez znaku)
nie większe (liczby bez znaku)

JNBE
JA

(CF or ZF) = 0

nie mniejsze i nie równe (liczby bez znaku)
większe (liczby bez znaku)

JS

SF = 1

wynik ujemny (liczby ze znakiem)

JNS

SF = 0

wynik nieujemny (liczby ze znakiem)

JP
JPE

PF = 1

parzysta liczba jedynek w bajcie

JNP
JPO

PF = 0

nieparzysta liczba jedynek w bajcie

JL
JNGE

(SF xor OF) = 1

mniejsze (liczby ze znakiem)
nie większe i nie równe (liczby ze znakiem)

JNL
JGE

(SF xor OF) = 0

nie mniejsze (liczby ze znakiem)
większe lub równe (liczby ze znakiem)

JLE
JNG

((SF xor OF) or ZF) = 1

mniejsze lub równe (liczby ze znakiem)
nie większe (liczby ze znakiem)

JNLE
JG

((SF xor OF) or ZF) = 0

nie mniejsze i nie równe (liczby ze znakiem)
większe (liczby ze znakiem)

JECXZ

ECX = 0

rejestr ECX zawiera zero

LOOP

ECX <> 0

rejestr ECX nie zawiera zera

LOOPE
LOOPZ

ECX <> 0 and ZF = 1

rejestr ECX nie zawiera zera i znacznik zera ustawiony

LOOPNE
LOOPNZ

ECX <> 0 and ZF = 0

rejestr ECX nie zawiera zera i znacznik zera wyzerowany

Skoki warunkowe

background image

Instrukcja

Sprawdzany warunek

Nadaje bajtowi wartość 1 gdy ..., a 0 w przeciwnym przypadku.

SETO

OF = 1

wystąpił nadmiar

SETNO

OF = 0

nie wystąpił nadmiar

SETB
SETNAE
SETC

CF = 1

mniejsze (liczby bez znaku)
nie mniejsze i nie równe (liczby bez znaku)
wystąpiło przeniesienie

SETNB
SETAE
SETNC

CF = 0

nie mniejsze (liczby bez znaku)
większe lub równe (liczby bez znaku)
nie wystąpiło przeniesienie

SETE
SETZ

ZF = 1

równe
wynik równy zero

SETNE
SETNZ

ZF = 0

nie równe
wynik różny od zera

SETBE
SETNA

(CF or ZF) = 1

mniejsze lub równe (liczby bez znaku)
nie większe (liczby bez znaku)

SETNBE
SETA

(CF or ZF) = 0

nie mniejsze i nie równe (liczby bez znaku)
większe (liczby bez znaku)

SETS

SF = 1

wynik ujemny (liczby ze znakiem)

SETNS

SF = 0

wynik nieujemny (liczby ze znakiem)

SETP
SETPE

PF = 1

parzysta liczba jedynek w bajcie

SETNP
SETPO

PF = 0

nieparzysta liczba jedynek w bajcie

SETL
SETNGE

(SF xor OF) = 1

mniejsze (liczby ze znakiem)
nie większe i nie równe (liczby ze znakiem)

SETNL
SETGE

(SF xor OF) = 0

nie mniejsze (liczby ze znakiem)
większe lub równe (liczby ze znakiem)

SETLE
SETNG

((SF xor OF) or ZF) = 1

mniejsze lub równe (liczby ze znakiem)
nie większe (liczby ze znakiem)

SETNLE
SETG

((SF xor OF) or ZF) = 0

nie mniejsze i nie równe (liczby ze znakiem)
większe (liczby ze znakiem)

Przypisania warunkowe


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron