MOV oraz kilka innych:
XCHG , PUSH i POP.add do_czego,co - dodajsub od_czego,co - odejmijinc coś / dec coś - zwiększ/zmniejsz coś o 1cmp co, z_czym - porównaj. Wykonuje działanie odejmowania co minus z_czym, ale nie zachowuje wyniku, tylko ustawia flagi.
ponad(dla liczb traktowanych jako liczby bez znaku):
co > z_czym
cmp al,bl ja al_wieksze_od_bl ; ja - jump if above
poniżej(bez znaku): co < z_czym
więcej niż(ze znakiem): co > z_czym
mniej niż(ze znakiem): co < z_czym
add al,bl jc blad_przepelnienia ; jc - jump if carry
cmp ax,cx je ax_rowne_cx ... sub bx,dx jz bx_rowne_dx
nie ponad- mniejsze lub równe (ale dla liczb bez znaku)
nie poniżej- większe lub równe (dla liczb bez znaku)
nie więcej- mniejsze lub równe (ale dla liczb ze znakiem)
nie mniej- większe lub równe (dla liczb ze znakiem)
ponad lub równe), below or equal (
poniżej lub równe)
mul cl ; AX = AL*CL mul bx ; DX:AX = AX*BX mul esi ; EDX:EAX = EAX*ESI mul rdi ; RDX:RAX = RAX*RDI imul eax ; EDX:EAX = EAX*EAX imul ebx,ecx,2 ; EBX = ECX*2 imul ebx,ecx ; EBX = EBX*ECX imul si,5 ; SI = SI*5Zapis
rej1 : rej2oznacza, że starsza część wyniku znajdzie się w pierwszym rejestrze podanej pary (DX, EDX, RDX), a młodsza - w drugim (AX, EAX, RAX), gdyż wynik mnożenia dwóch liczb o długości n bitów każda wymaga 2n bitów.
div cl ; AL = (AX div CL), AH = (AX mod CL) div bx ; AX = (DX:AX div BX), ; DX = (DX:AX mod BX) div edi ; EAX = (EDX:EAX div EDI), ; EDX = (EDX:EAX mod EDI) div rsi ; RAX = (RDX:RAX div RSI), ; RDX = (RDX:RAX mod RSI)Zapis
rej1 : rej2oznacza, że starsza część dzielnej jest oczekiwana w pierwszym rejestrze podanej pary (DX, EDX, RDX), a młodsza - w drugim (AX, EAX, RAX). Jeśli liczba mieści się w rejestrze dla młodszej części, rejestr starszy należy wyzerować. Słowo "div" w powyższych zapisach oznacza iloraz, a mod - resztę z dzielenia (modulo).
0 AND 0 = 0 0 OR 0 = 0 0 XOR 0 = 0 0 AND 1 = 0 0 OR 1 = 1 0 XOR 1 = 1 1 AND 0 = 0 1 OR 0 = 1 1 XOR 0 = 1 1 AND 1 = 1 1 OR 1 = 1 1 XOR 1 = 0 NOT 0 = 1 NOT 1 = 0Przykłady zastosowania:
and ax,1 ; wyzeruje wszystkie bity z ; wyjątkiem bitu numer 0. or ebx,1111b ; ustawia (włącza) 4 dolne bity. ; Reszta bez zmian. xor cx,cx ; CX = 0 not dh ; DH ma 0 tam, gdzie miał 1 ; i na odwrót
LOOP gdzieś. Jeśli CX jest różny od 0, to skacz do
gdzieś.
lea rej, [pamięć]jest równoważne:
mov rej, offset pamięć ; TASM mov rej, pamięć ; NASM/FASMPo co więc osobna instrukcja? Otóż, LEA przydaje sie w wielu sytuacjach do obliczania złożonych adresów. Kilka przykładów:
lea eax, [ebp-12]
lea ecx, [ebx + 11*8 ] oraz lea edx,[ebx+edi*8]
lea esi, [eax + eax*8 ]
Byle głupiec potrafi napisać kod, który zrozumie komputer. Dobry programista pisze taki kod, który zrozumie człowiek.