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

  • Rejestry procesora 16,32-bitowe

  • Rejestry ogólnego przeznaczenia (uniwersalne) 16-bitowe
    RejestrPodział na rejestry 8-bitoweang. znaczenieZnaczeniePrzeznaczenie
    AXAH, ALAccumulatorAkumulatorWykorzystywany przy operacjach arytmetycznych i logicznych oraz w obsłudze portów
    BXBH, BLBase RegisterRejestr bazowyUżywany do adresowania pamięci
    CXCH, CLCounter RegisterLicznikWykorzystywany jako licznik w pętlach i operacjach na łańcuchach. Rejestr CL może być wykorzystywany w operacjach przesuwania bitów
    DXDH, DLData RegisterRejestr danychWykorzystywany przy operacjach na portach (wysyłanie, odbieranie danych z portów) oraz podczas mnożenia i dzielenia

    Rejestry z literkami L - light i H - hight zawierają odpowiednio młodsze i starsze bajty.

    Rejestry segmentowe 16-bitowe
    Rejestrang.znaczenieZnaczeniePrzeznaczenie
    CSCode SegmentRejestr segmentu koduZawiera segment aktualnie wykonywanego rozkazu
    SSStack SegmentRejestr segmentu stosuZawiera segment stosu
    DSData SegmentRejestr segmentu danychZawiera segment z danymi (nie zawsze), jest wykorzystywany także przy operacjach na łańcuchach
    ESExtra SegmentRejestr segmentu dodatkowegoZawiera segment np. przy operacjach przesyłania łańcuchów


    Rejestry indeksowe 16-bitowe
    Rejestrang. znaczenieZnaczenie/Przeznaczenie
    SISource IndexRejestr indeksujący pamięć oraz wskazujący obszar, z którego przesyła się dane
    DIDestination IndexRejestr indeksujący pamięć oraz wskazujący obszar, do którego przesyłamy dane


    Rejestry wskaźnikowe 16-bitowe
    Rejestrang.znaczenieZnaczenie/Przeznaczenie
    SPStack PointerWskaźnik stosu
    BPBase PointerRejestr używany do adresowania pamięci
    IPInstruction PointerWskaźnik instrukkcji,np. pod debugerem wskazuje na aktualny kod instrukcji


    Rejestr znaczników 16-bitowy
    Nr bitu w bajcieZnacznikang. znaczenieZnaczenieOpis
    0CFCarry FlagZnacznik przeniesieniaPrzyjmuje wartość 1, gdy przy odejmowaniu nastąpiła pożyczka, lub przy dodawaniu wystąpiło przeniesienie. Do rejestru CF przechodzi bit przesuniety poza rejestr lub komórki w wyniku operacji przesuniecia bitowego. Zawartość CF można zmienić instrukcjami:
    CLC- wpisuje 0 do CF
    STC - wpisuje 1 do CF
    CMC - neguje zawartość CF
    1------
    2PFParity FlagZnacznik parzystościPrzyjmuje wartość 1, gdy wynik operacji ma parzystą liczbę bitów o wartości 1, w przeciwnym wypadku przyjmuje wartośc 0
    3------
    4AFAuxiliary Carry FlagPomocniczy znacznik przeniesieniaDziała podobnie jak CF lecz "reaguje" na przeniesienie/pożyczkę z bitu 3 na 4; wykorzystywany przy operacjach na spakowanych liczbach dziesiętnych
    5------
    6ZFZero FlagZnacznik zeraPrzyjmuje wartość 1, gdy wynik operacji jest zerem, w przeciwnym wypadku przyjmuje wartość 0
    7SFSign FlagZnacznik znakuPrzyjmuje wartość 1, gdy wynik operacji jest liczbą ujemną, w przeciwnym wypadku przyjmuje wartość 0
    8TFTrap FlagZnacznik pracy krokowejWykorzystywany przez debugery; określa czy po każdej wykonanej instrukcji procesora wywoływane jest przerwanie pracy krokowej
    9IFInterrupt FlagZnacznik przerwańGdy IF=0 to procesor ignoruje przerwania; polecenie CLI - wpisuje 0 do IF; a polecenie STI - wpisuje 1 do IF.Zawartość IF można zmienić instrukcjami:
    CLI - wpisuje 0 do IF
    STI - wpisuje 1 do IF
    10DFDirection FlagZnacznik kierunkuSteruje zmianą rejestrów indexsowych przy operacjach powtarzających; jeśli DF=1 to zawartość rejestrów będzie zmniejszana, w przeciwnym wypadku będzie zwiększana.
    Zawartość DF można zmienić instrukcjami:
    CLD - wpisuje 0 do DF
    STD - wpisuje 1 do DF
    11OFOverflow FlagZnacznik nadmiaruPrzyjmuje wartość 1, gdy wynik operacji nie mieści się w rejestrze lub komórce pamięci oraz gdy zmieniony zostanie bit znaku argumentu po wykonaniu operacji przesunięcia bitów, w przeciwnym wypadku przyjmuje wartość 0
    12------
    13------
    14------
    15------


    Rejestry 32-bitowe
    Są to rejestry procesorów 386,486 i nowszych. Otrzymujemy je dodając literkę E przed nazwą rejestrów 16-bitowych. Mamy więc rejestry: EAX, EBX, ECX, EDX, EBP, ESI, EDI .I tak np. rejestr AX stanowi mniej znaczące 16 bitów rejestru EAX. Przy rejestrach 32-bitowych niemożliwa jest pośrednia (np. poprzez inny rejestr) zmiana bardziej znaczących 16 bitów rejestru.Można to jednak zrobić wstawiając do rejestru wartość bezpośrednią lub z komórki pamięci, albo przesuwając bity. Należy tutaj podkreślić, że np. zmiana AX pociąga za sobą zmianę rejestru EAX. Rejestry 32-bitowe są bardzo pojemne, możemy bowiem w nich przechowywać max. wartość FFFFFFFFh. Dane w tych rejestrach są zapisywane według notacji Intela od prawej do lewej.
    Przy procesorach 386,486 dochodzą nam także dwa nowe rejestry segmentowe: GS i FS.

    <<

    ©Copyright by zoomek 2001
    Wszelkie prawa zastrzeżone!