M E N U
Strona główna Assembler -kurs
Assembler -teksty
AntiCracking
API
Opisy narzędzi
Zabezpieczenia CD/DVD
Budowa plików
Sources
Linki
Kontakt

STATYSTYKI

stat4u
PRV.PL - Twoje miejsce w sieci.
Od 06.09.2000
Optymalizacja:
1024x768, IE5
  • Assembler - kurs

  • Instrukcje porównania

  • CMP
    Instrukcja cmp (compare) porównuje dwa argumety. Rozkaz odejmuje zawartość pierwszego argumentu od drugiego(Y - X), jednak nie zapisuje nigdzie wyniku, a tylko ustawia odpowiednie znaczniki. Postać instrukcji jest następująca:
    cmp X, Y
    W zależności od relacji między X i Y mogą następować określone skoki warunkowe. Innych instrukcji skoków używa się dla liczb ze znakiem (ustawiane są wówczas flagi: zerowa ZF, przeniesienia CF, nadmiaru OF i znaku SF), a innych dla liczb bez znaku(ustawiane są wówczas flagi: zerowa ZF i przeniesienia CF). Poniższa tabelka przedstawia przy jakiej relacji X i Y zachodzą skoki:
    Relacjadla liczb ze znakiemdla liczb bez znaku
    X = Yjeje
    X > Yjgja
    X < Yjljb
    X >= Yjgejae
    X <= Yjlejbe
    X <> Yjnejne


    TEST
    Rozkaz oblicza iloczyn logiczny - AND dla wszystkich odpowiadających sobie par bitów. Wynik nie jest nigdzie zapisywany, tylko na jego podstawie ustawiane są znaczniki. Znaczniki są tak zmieniane jak w przypadku instrukcji AND:

    ZnacznikWartość
    OF(z.przepełnienia)Zawsze równy 0 po operacji TEST.
    CF(z.przeniesienia)Zawsze równy 0 po operacji TEST.
    ZF(z.zera)1- jeżeli wynik operacji TEST jest 0
    0- jeżeli wynik operacji TEST jest różny od 0
    PF(z.parzystości)1- jeżeli wynik operacji TEST ma parzystą liczbę bitów równych 1
    0- jeżeli wynik operacji TEST ma nieparzystą liczbę bitów równych 1
    SF(z.znaku)1- jeżeli wynik jest ujemny (najstarszy bit jest równy 1)
    0- jeżeli wynik jest nieujemny (najstarszy bit jest równy 0)

    Instrukcja TEST jest wygodna do "niedestruktywnego" sprawdzania bitów. Np. mamy przejść do etykieta_1, gdy 3 bit rejestru al jest równy 1. Użyjemy wówczas w operacji TEST maski z ustawionym (równym 1) bitem 3 i pozostałymi bitami równymi 0:

    test al,00001000b ;sprawdz bit
    jz etykieta_2 ;jeśli ZF=0(3 bit z al jest 0) to skacz do etykieta_2
    etykieta_1:
    ;.....
    etykieta_2:
    ;.....


    Operatory relacji: EQ,NE,LT,GT,LE,GE
    Są opisane tutaj.

    Operatory porównujące łańcuchy: CMPSx
    Są opisane tutaj.

    <<

    ©Copyright by zoomek 2001
    Wszelkie prawa zastrzeżone!