asembler7

asembler7



Poniżej przedstawię najczęściej używane instrukcje skoku:


( Mo przykład dla instrukcji M0VSB:


•    JA — skocz, jeżeli powyżej (flagi CF=0 i ZF=0);

•    JAE — skocz, jeżeli powyżej lub równe (flaga CF=0);


•    JB — skocz, jeżeli poniżej (flaga CF=1);

•    JBE — skocz, jeżeli poniżej lub równe (CF=1 lub ZF=1);

•    JE — skocz, jeżeli równe (ZF=1);


. 386

.model    fiat, stdcall

optlon    casemap: nonę


Include Windows.inc include kernel32.inc Include user32.inc


1ncludel i b user32.1ib includelib kerne!32.1ib


•    JG — skocz, jeżeli większe (ZF=0 i SF=OF);

•    JGE — skocz, jeżeli większe lub równe (SF=OF);

.data

/rodło db "Witaj", 0 : 6-bajtowy ciąg znaków cel    db 6 dup(O) ; pusty ciąg 6 bajtów


.codę

Itart:

mov esi, offset zrodlo mov edi, offset cel dd

mov ecx, 6 rep movsb


•    JL — skocz, jeżeli mniejsze (SF!=OF);

•    JLE — skocz, jeżeli mniejsze lub równe (ZF=1 lub SF!=OF);

•    JNE — skocz, jeżeli różne (flaga ZF=0);

•    JNZ — skocz, jeżeli nie zero (ZF!=0);

•    JZ — skocz, jeżeli zero (ZF=0).

Myślę, że na początek to wystarczy. Więcej informaqi na ten tem; można znaleźć w Intel 64 and IA-32 Architectures Software Developer Manuał: Volume 2A & 2B.

; do ESI adres źródła

; do EDI adres docelowy

; wyczyszczenie flagi kierunku (Direction Flag)

; do rejestru licznika dajemy 6 (liczba kopiowanych bajtów) ; powtarzaj instrukcję MOVSB ECX razy (6 razy)

invoke MessageBox, NULL, addr cel, 0, MB_0K ; wyświetl skopiowany ciąg znaków invoke ExitProcess, NULL end start

CMPS

2.5. Instrukcje do operacji na łańcuchach znaków

Instrukcje CMPS* porównują odpowiednią liczbę bajtów z rejestrów SI/ESI oraz DI/EDI.

C Mo przykład:


.386

.model fiat,

stdcal1

option casemap: nonę

Include

Windows.inc

Include

kernel32.inc

Include

user32.inc

Includelib

user32.1ib

includelib

kerne!32.1ib

.data

napisl db "asdfghjkl", 0 ; dwa napisy, które napis2 db "asdfghzkl", 0 ; będziemy porównywać Równe db "Ciągi znaków są równe.", 0 Nierówne db "Ciągi znaków są nierówne", 0


Opisane poniżej instrukcje operują na ciągach znaków spod rejestrt źródła SI/ESI oraz rejestru docelowego DI/EDI. Instrukcje te występuj; w czterech formatach: *B, *W, *D (32-bitowe) oraz łQ (64-bitowe) Modyfikacją rejestrów SI/ESI i DI/EDI steruje flaga kierunku (DF; ang Direction Flag). Jeśli flaga jest równa zero, oba rejestry są zwiększam o odpowiednią liczbę, a jeśli flaga jest równa jeden, oba rejestry s< zmniejszane o odpowiednią liczbę. Flagę można wyczyścić instruk cją CLD, a ustawić za pomocą STD.

MOVS

Instrukcje M0VS* służą do przeniesienia odpowiedniej liczby bajtów1 spod rejestru źródła (SI/ESI) do rejestru docelowego (DI/EDI).

.codę


Wyszukiwarka

Podobne podstrony:
Dyrektywy są najczęściej używanym instrumentem prawa UE w dziedzinie środowiska. Dyrektywy mają char
■ Poniżej przedstawiono najczęściej spotykane formy reklamy on-line. Zastosowanie znajdują
11 Egzamin maturalny z geografii _Arkusz 11_Zadanie 47. (2 pkt) Tabela przedstawia najczęściej używa
IMG&55 15. Poniżej przedstawiono kilka cech porostów. I.    Mogą rosnąć w nieprzyjazn
Tabela 1 Przykłady zapisu najczęściej używanych testów statystycznych Test Przykład
Strona091 Najczęściej używanymi utleniaczami są azotan barowy, a dla miWn o smudze czerwonej — azota
9 Najlepsze odpowiedzi na trudne pytania_ Poniżej przedstawiamy przykładowe odpowiedzi na najczęście
Poniżej przedstawiamy instrukcję, która może posłużyć instytucjom kształcącym nauczycieli oraz
Daty w postaci tekstowej « Najczęściej używany sposób zapisu daty to przedstawienie jej w postaci te
igraszki0006 Kiwa plastyczno-ruchowa do piosenki Weterynarz r.TwitnwrKot - origami Poniżej przedstaw
IMAG0182 4. Dla poniżej przedstawionych skierowanych oblicz i wykreśl sumę liczb A i B (3 pkt),

więcej podobnych podstron