Witam!
Jak dokładnie działa funkcja TEST w asemblerze 8086?
Mam taki króciutki fragment kodu:
test ax,000Ch
jnz ram_64
test ax,0008h
jnz ram_32
w ax siedzi obecnie 16 bitowa wartosc, informujaca o obecnosci badz braku komponentów komputera (np. koprocesora, liczby pamieci ram itd.)
Na bitach 1010001011011100 mieści się informacja dot. pamięci RAM.
00 - blad odczytu
01 - 16 kb RAM
10 - 32 kb RAM
11 - 64+kb RAM
i tak pogrubione bity tworzą razem wartość 12, z ktorą jest w pierwszej lini zamieszczonego kodu porównywany akumulator.
funkcja test sprawdza, czy ta para bitów tworzy razem tą dwunastke, ale dzieje się to dla mnie na niezrozumiałej zasadzie - bowiem moim zdaniem porównując 12 z obecnoscia obu tych bitów powinna sie zapalić flaga zera (no bo porownanie dziala na zasadzie odejmowania arytmetycznego), a dzieje sie zupelnie na odwrót.. Dlaczego?