Operacje na łańcuchach/tablicach
Porównania CMPSx, SCASx

Instrukcje CMPSx służą do porównywania kolejnych komórek dwóch tablic jako liczb 1, 2 lub 4 bajtowych.

Instrukcja 
 
CMPSB
CMPSW
CMPSD
"Odpowiednik"  
 
cmp [DS:ESI], [ES:EDI]
add ESI, 1/2/4
add EDI, 1/2/4
Zakładamy że flaga DF jest wyzerowana.

Instrukcje SCASx przeszukują tablicę w poszukiwaniu konkretnej wartości umieszczonej w rejestrze EAX

Instrukcja 
 
SCASB
SCASW
SCASD
"Odpowiednik"  
 
cmp AL/AX/EAX, [ES:EDI]
add EDI, 1/2/4
Nawet jeżeli znajdziemy szukany element to EDI zostanie przesunięte.

Przykład: szukanie elementu w tablicy liczb typu int

   cld
   mov edi, tablica     ; adres poczatku tablicy 
   mov ecx, [rozmiar]   ; rozmiar tablicy
   mov eax, [liczba]    ; liczba ktorej szukamy
 
petla:
   scasd
   je znaleziono
   loop petla
 
; nie znaleziono
   jmp koniec
 
znaleziono:
   sub edi, 4      ; edi wskazuje teraz na miejsce 
                   ;gdzie znajduje się szukany element
koniec: 
...
segment .data
tablica dd 1, 2, 3, 4, 5, 6, 7
rozmiar dd 7
liczba  dd 4

Tomasz Kapela, Kraków 2011-2020