Asembler podstawowe instrukcje deklarowanie zmiennych
This presentation is the property of its rightful owner.
Sponsored Links
1 / 25

Asembler - podstawowe instrukcje, deklarowanie zmiennych. PowerPoint PPT Presentation


  • 129 Views
  • Uploaded on
  • Presentation posted in: General

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Asembler podstawowe instrukcje deklarowanie zmiennych

Asembler - podstawowe instrukcje, deklarowanie zmiennych.

Ariel Grzechowski


Rejestr flag

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):


Rejestr flag1

Rejestr flag

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


Rejestr flag2

Rejestr flag

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


Asembler podstawowe instrukcje

Asembler - podstawowe instrukcje

  • Instrukcje dzielimy na:

  • Arytmetyczne

  • Logiczne

  • Skokowe

  • Transferowe


Asembler instrukcje arytmetyczne

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


Asembler instrukcje arytmetyczne1

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


Asembler instrukcje arytmetyczne2

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


Asembler instrukcje arytmetyczne3

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


Asembler instrukcje arytmetyczne4

Asembler – instrukcje arytmetyczne

POZOSTAŁE


Asembler instrukcje logiczne

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


Asembler instrukcje logiczne1

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


Asembler instrukcje logiczne2

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


Asembler instrukcje logiczne3

Asembler – instrukcje logiczne

POZOSTAŁE


Asembler instrukcje skokowe

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


Asembler instrukcje skokowe1

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


Asembler instrukcje skokowe2

Asembler – instrukcje skokowe

POZOSTAŁE


Asembler instrukcje skokowe3

Asembler – instrukcje skokowe

POZOSTAŁE


Asembler instrukcje transferowe

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


Asembler instrukcje transferowe1

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


Asembler instrukcje transferowe2

Asembler – instrukcje transferowe

xchg

działanie: wymienia zawartość operandów między sobą.

Przykład:

xchgAL, CL


Asembler instrukcje transferowe3

Asembler – instrukcje transferowe

POZOSTAŁE


Asembler instrukcje transferowe4

Asembler – instrukcje transferowe

POZOSTAŁE


Asembler deklarowanie zmiennych

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


Asembler deklarowanie zmiennych1

Asembler – deklarowanie zmiennych

GNU As

Aby utworzyć nową zmienną należy użyć schematu:

nazwa: .typwartość

PRZYKŁAD:

liczba .string"\10\18\3"


  • Login