TEST (instrukcja x86)

0 W asemblerze x86 instrukcja TEST wykonuje bitową operację AND na dwóch operandach . Flagi SF , ZF , PF są modyfikowane , podczas gdy wynik AND jest odrzucany. Flagi OF i CF są ustawione na , podczas gdy flaga AF jest niezdefiniowana. Istnieje 9 różnych opkodów dla instrukcji TEST w zależności od typu i rozmiaru operandów . Może porównywać wartości 8-bitowe, 16-bitowe, 32-bitowe lub 64-bitowe. Może również porównywać rejestry , wartości bezpośrednie i pośrednie wartości rejestrów .

TESTUJ warianty kodu operacji

00 0 Operacja TEST czyści flagi CF i OF do zera. SF jest ustawiany na najbardziej znaczący bit wyniku AND . Jeśli wynikiem jest , ZF jest ustawione na 1 , w przeciwnym razie na . Flaga parzystości jest ustawiona na bitowy XNOR najmniej znaczącego bajtu wyniku, 1 , jeśli liczba jedynek w tym bajcie jest parzysta, w przeciwnym razie. Wartość AF jest niezdefiniowana.

Przykłady


    
   


     
   


    
  


  0 ; Warunkowy   test skoku   cl  ,  cl  ; ustaw ZF na 1 jeśli cl == 0   jz  0x804f430  ; skok jeśli ZF == 1   ; Skok warunkowy z   testem NOT   cl  ,  cl  ; ustaw ZF na 1 jeśli cl == 0   jnz  0x804f430  ; skok jeśli ZF == 0   ; lub   przetestuj  eax  ,  eax  ; ustaw SF na 1 jeśli eax < 0 (ujemny)   błąd  js  ; skok, jeśli SF == 1   ;zwykły  test aplikacji   al  ,  $  F       
    ; ustaw ZF, jeśli "al AND $0f = 0" (tutaj: test wyrównania adresu dla 16b)   jnz  @  miejsce docelowe  ; skacz, jeśli eax NIE JEST „MODULO 16=0”