TEST (x86 instruktion)

0 I assemblerspråket x86 utförs TEST - instruktionen bitvis AND på två operander . Flaggorna SF , ZF , PF modifieras medan resultatet av OCH förkastas . OF- och CF- flaggorna är inställda på medan AF- flaggan är odefinierad . Det finns 9 olika op-koder för TEST-instruktionen beroende på typen och storleken på operanderna . Den kan jämföra 8-bitars, 16-bitars, 32-bitars eller 64-bitars värden. Den kan också jämföra register , omedelbara värden och registrera indirekta värden.

TEST opcode variationer

00 0 TEST-operationen rensar flaggorna CF och OF till noll. SF är satt till den mest signifikanta biten av resultatet av AND . Om resultatet är ställs ZF på 1 , annars inställt på . Paritetsflaggan sätts till bitvis XNOR för den minst signifikanta byten av resultatet, 1 om antalet ettor i den byten är jämnt, annars. Värdet på AF är odefinierat.

Exempel


    
   


     
   


    
  


  0      
    ; Villkorligt   hopptest  cl  ,  cl  ; ställ ZF till 1 om cl == 0   jz  0x804f430  ; hoppa om ZF == 1   ; Villkorligt hopp med INTE   test  cl  ,  cl  ; ställ ZF till 1 om cl == 0   jnz  0x804f430  ; hoppa om ZF == 0   ; eller   testa  eax  ,  eax  ; ställ in SF till 1 om eax < 0 (negativt)   js  error  ; hoppa om SF == 1   ;vanligt  applikationstest  al  ,  $  F  ; ställ in ZF om "al AND $0f = 0" (här: adressjusteringstest för 16b)   jnz  @  destination  ; hoppa om eax INTE ÄR "MODULO 16=0"