do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
do koszyka |
ASEMBLER 80x86
Informacje ogólne
Operacje arytmetyczne: add, sub, inc, dec, mul/imul, div/idiv,Operacje logiczne: and, bt, btr, bts, not, or, rol, ror, shl, shr,Operacje sterujące: cmp, loop, skoki (rozgałęzienia), call, ret,Operacje przesyłania danych: lea, mov,Operacje na stosie: push, pop, pusha, popa,Pojęcia: EtykietyProcedury (podprogramy) Rejestry procesora Stos Zmienne - deklaracja zmiennych (db,dw,dd,rb) ostatnia aktualizacja: 15.04.2005 SKOKI WARUNKOWE I BEZWARUNKOWE (ROZGAŁĘZIENIA)
Instrukcje skoków (zwane także instrukcjami rozgałęzień) są bardzo istotną częścią każdego programu.
W momencie wykonania instrukcji skoku program kontynuuje swoje
działanie od miejsca wskazywanego przez etykietę podaną jako parametr instrukcji skoku, rozróżniamy dwa główne rodzaje instrukcji
skoków:
- skoki bezwarunkowe (wykonywane zawsze) - skoki warunkowe (wykonywane gdy spełniony jest określony warunek) Przykładem instrukcji skoku bezwarunkowego (skoku wykonywanego zawsze) jest instrukcja jmp. W momencie jej wykonania program kontynuuje swoje działanie od miejsca wskazywanego przez etykietę podaną jako parametr instrukcji skoku. Dopuszczalna postać instrukcji: Przykład zastosowania: Po napotkaniu instrukcji jmp pp program kontynuuje swoje działanie od miejsca oznaczonego etykietą pp. Instrukcje skoków warunkowych wykonywane są tylko wtedy gdy spełniony jest określony warunek. Procesor w czasie wykonywania programu po napotkaniu instrukcji skoku warunkowego najpierw sprawdza czy określony warunek jest spełniony a następnie podejmuje decyzję czy ma wykonać daną instrukcję skoku warunkowego czy też ma ją zignorować. Instrukcje skoków warunkowych często łączone są w funkcjonalne pary z instrukcją cmp. Dopuszczalna postać instrukcji: Gdzie 'xx' oznacza określony warunek skoku. Najczęściej wykorzystywane instrukcje skoków warunkowych: - jc - skok gdy wystąpiło przeniesienie (flaga C rejestru statusowego jest ustawiona (1)) - jnc - skok gdy nie wystąpiło przeniesienie (flaga C rejestru statusowego jest wyzerowana (0)) - jg - skok gdy większe - jge - skok gdy większe lub równe (nie mniejsze) - jl - skok gdy mniejsze - jle - skok gdy mniejsze lub równe (nie większe) - je / (jz) - skok gdy równe / (gdy wynikiem ostatniej operacji było 0) - jne / (jnz) - skok gdy różne / (gdy wynikiem ostatniej operacji była liczba różna od 0) Przykład zastosowania: Najpierw przy pomocy instrukcji cmp porównywane są zawartości rejestrów al oraz cl - ustawiane są odpowiednie flagi w rejestrze statusowym, następnie po napotkaniu instrukcji jz pp procesor podejmuje decyzję czy ma wykonać skok do etykiety pp czy też skok ma zostać zignorowany. W przypadku zignorowania skoku program wykonuje się dalej normalnie. Jeśli warunek jest spełniony i skok zostanie wykonany program kontynuuje swoje działanie od etykiety pp. |
|