1 / 25

Asembler - podstawowe instrukcje, deklarowanie zmiennych.

Asembler - podstawowe instrukcje, deklarowanie zmiennych. Ariel Grzechowski. Rejestr flag.

gayora
Download Presentation

Asembler - podstawowe instrukcje, deklarowanie zmiennych.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Asembler - podstawowe instrukcje, deklarowanie zmiennych. Ariel Grzechowski

  2. Rejestr flag Zapisane są w nim takie ustawienia, jak np. możliwość korzystania z instrukcji wejścia-wyjścia przez nasz program. Ponadto, w rejestrze tym zapisywanych jest wiele informacji na temat ostatnio przeprowadzanej operacji arytmetycznej. Rejestr EFLAGS wygląda tak (rozkład bitów):

  3. Rejestr flag znaczniki, których wartość zależna jest jedynie od ostatniego działania arytmetycznego

  4. Rejestr flag znaczniki, które mają wpływ na sposób działania procesora

  5. Asembler - podstawowe instrukcje • Instrukcje dzielimy na: • Arytmetyczne • Logiczne • Skokowe • Transferowe

  6. Asembler – instrukcje arytmetyczne add działanie: sumuje A i B; wynik przechowuje w A.A: rejestr lub adres pamięci.B: konkretna wartość, rejestr lub adres pamięci (jeśli A nie jest adresem).modyfikowane flagi: OF, CF, SF, ZF, AF i PF. Przykład: addeax, 09h

  7. Asembler – instrukcje arytmetyczne sub działanie: odejmuje B od A; wynik przechowuje w A.A: rejestr lub adres pamięci.B: konkretna wartość, rejestr lub adres pamięci (ale tylko jeśli A również nie jest adresem pamięci).modyfikowane flagi: OF, CF, SF, ZF, AF i PF. Przykład: subedx,09h

  8. Asembler – instrukcje arytmetyczne mul działanie: mnoży A przez odpowiedni rejestr i zapisuje wynik w odpowiednim rejestrze (zależne od rozmiaru A; patrz tabela); wszystkie działania są wykonywane na liczbach bez znaku; dla liczb ze znakiem skorzystaj z imul.A: rejestr ogólnego przeznaczenia lub adres pamięci.modyfikowane flagi: OF, SF, ZF, AF, PF i CF.modyfikowane rejestry: zależnie od rozmiaru A Przykład: muleax

  9. Asembler – instrukcje arytmetyczne div działanie: dzieli odpowiedni rejestr przez A i przechowuje wynik w tym rejestrze (patrz niżej). Zarówno rejestr jak i A są traktowane jako liczby bez znaku. Dla liczb ze znakiem skorzystaj z idiv.A: rejestr lub adres pamięci.modyfikowane flagi: OF, CF, SF, ZF, AF i PF.modyfikowane rejestry: zależnie od rozmiaru A. Przykład: div eax

  10. Asembler – instrukcje arytmetyczne POZOSTAŁE

  11. Asembler – instrukcje logiczne and działanie: wykonuje operację AND (koniunkcja) na odpowiadających sobie bitach operandów A i B; wynik jest przechowywany w A (poprzednia wartość zostaje zamazana).A: rejestr lub adres pamięci.B: konkretna wartość, rejestr lub adres pamięci (jeśli A nie jest adresem).modyfikowane flagi: OF i CF są zerowane; SF, ZF i PF nabywają wartość zależną od wyniku. Przykład: andedx,ebx

  12. Asembler – instrukcje logiczne not działanie: neguje (odwraca) wartości wszystkich bitów w A (1->0; 0->1).W literaturze instrukcja ta zwana jest także uzupełnieniem jedynkowymA: rejestr lub adres pamięci. Przykład: notedx

  13. Asembler – instrukcje logiczne shl działanie: przesuwa wszystkie bity A w lewo o ilość bitów zdefiniowaną przez BA: rejestr lub adres pamięci.B: konkretna wartość lub rejestr CL (8-bitowa część rejestru ECX).modyfikowane flagi: CF (przyjmuje wartość ostatniego bitu "wyrzuconego" poza obręb); SF, ZF i PF (zależnie od wyniku), OF (tylko, gdy B=1; przyjmuje wartość 0, gdy dwa ostatnie bity przed przesunięciem były równe; przyjmuje 1 w przeciwnym przypadku). Przykład: shledx 02h

  14. Asembler – instrukcje logiczne POZOSTAŁE

  15. Asembler – instrukcje skokowe jmp działanie: polecenie wykonuje bezwarunkowy skok do etykiety. Instrukcja ta przyjmuje tylko jeden operand.A: etykieta do której ma być wykonany skok. Przykład: jmpetykieta

  16. Asembler – instrukcje skokowe call działanie: wykonuje wywołanie procedury (funkcji). A: etykieta lub adres procedury zawarty w rejestrze lub komórce pamięci. Przykład: Call moja_procedura

  17. Asembler – instrukcje skokowe POZOSTAŁE

  18. Asembler – instrukcje skokowe POZOSTAŁE

  19. Asembler – instrukcje transferowe mov działanie: kopiuje B do A. Oba parametry muszą być tego samego rozmiaru. Operand docelowy i źródłowy nie mogą być jednocześnie adresami w pamięci.A: rejestr ogólnego przeznaczenia, rejestr segmentowy (poza CS) lub adres w pamięci.B: konkretna wartość, rejestr ogólnego przeznaczenia, rejestr segmentowy lub adres w pamięci. Przykład: mov edx,09055509h

  20. Asembler – instrukcje transferowe push działanie: umieszcza A na szczycie stosu.A:word lub double word.modyfikowane rejestry: ESP (zwiększany o rozmiar A) Przykład: pushedx

  21. Asembler – instrukcje transferowe xchg działanie: wymienia zawartość operandów między sobą. Przykład: xchgAL, CL

  22. Asembler – instrukcje transferowe POZOSTAŁE

  23. Asembler – instrukcje transferowe POZOSTAŁE

  24. Asembler – deklarowanie zmiennych NASM Aby utworzyć nową zmienną należy użyć schematu: nazwa typwartość W polu nazwa wpisujemy nazwę dla naszej zmiennej (pole to jest opcjonalne); w polu typ wpisujemy typ zmiennej (patrz: tabela), zaś w polu wartość wpisujemy startową wartość dla naszej zmiennej. PRZYKŁAD: liczba db10

  25. Asembler – deklarowanie zmiennych GNU As Aby utworzyć nową zmienną należy użyć schematu: nazwa: .typwartość PRZYKŁAD: liczba .string"\10\18\3"

More Related