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
0
0
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"