Asembler x86/Instrukcje/Transferowe
Asembler X86 Instrukcje | ||||
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