Przejdź do zawartości

Asembler x86/Instrukcje/Transferowe

Z Wikibooks, biblioteki wolnych podręczników.

Asembler X86 Instrukcje

transferowe
arytmetyczne
logiczne
różne
skokowe

clc

[edytuj]

działanie: Ustawia flagę CF na 0

przykład:

clc


cld

[edytuj]

działanie: Ustawia flagę DF na 0

przykład:

cld


cli

[edytuj]

działanie: Ustawia flagę IF na 0

przykład:

cli


cmc

[edytuj]

działanie: Neguje zawartość flagi CF

przykład:

cmc


mov

[edytuj]

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


movzx

[edytuj]

działanie: kopiuje B do A wraz z rozszerzeniem o zera, co oznacza powiększenie wielkości kopiowanej wartości do rozmiaru A i wypełnienie powstałego w ten sposób nadmiarowego miejsca zerami. Dzięki temu można kopiować wartość z rejestru mniejszego do większego.
A: 16- lub 32-bitowy rejestr ogólnego przeznaczenia
B: 8- lub 16- bitowy rejestr ogólnego przeznaczenia albo adres w pamięci

przykład:

 movzx eax, [edx]

out

[edytuj]

działanie: wysyła dane A do portu B, numer portu wpisuje się bezpośrednio(liczba 8-bitowa) B można zastępić rejestrem DX

przykład:

out A,B

pop

[edytuj]

działanie: zdejmuje ze szczytu stosu wartość i kopiuje ją do A.
A: rejestr ogólnego przeznaczenia, rejestr segmentowy (poza CS) lub adres w pamięci.
modyfikowane rejestry: ESP (zmniejszany o rozmiar A)

przykład:

 pop edx


popa, popad

[edytuj]

działanie: zdejmuje ze szczytu stosu wszystkie wartości i kopiuje je do ośmiu rejestrów ogólnego przeznaczenia. POPA kopiuje zdjęte wartości do 16-bitowych rejestrów w kolejności: DI, SI, BP, SP, BX, DX, CX, AX. Natomiast POPAD (procesor 80386) kopiuje do 32-bitowych rejestrów w kolejności: EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX. Ta instrukcja nie przyjmuje żadnych operandów.

przykład:

 popad


push

[edytuj]

działanie: umieszcza A na szczycie stosu.
A: word lub double word.
modyfikowane rejestry: ESP (zmniejszany o rozmiar A)

przykład:

 push edx


pusha, pushad

[edytuj]

działanie: odkłada wszystkie rejestry na stos. PUSHA (procesor 80186) odkłada 16-bitowe rejestry w następującej kolejności: AX, CX, DX, BX, SP, BP, SI, DI. Rozkaz PUSHAD (procesor 80386) umieszcza na stosie rejestry 32-bitowe w tej kolejności: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI.Te polecenia nie przyjmują żadnych operandów.

przykład:

 pusha


stc

[edytuj]

działanie: Ustawia flagę CF na 1

przykład:

stc


std

[edytuj]

działanie: Ustawia flagę DF na 1

przykład:

std


sti

[edytuj]

działanie: Ustawia flagę IF na 1

przykład:

sti


xchg

[edytuj]

działanie: wymienia zawartości operandów między sobą
przykład:

mov eax, 9999
mov ecx, 3333
xchg AL, CL

EAX 00009933
ECX 00003399