Obsah    Kapitoly: 12345678,  |  X.1X.2X.3X.4,  |  Y1 Y2 

X.3) Logické instrukce

Logických instrukcí, které budete využívat je asi pět. Všechny se týkají bitů v bajtu a jsou nepostradatelnou součástí každého programování v nižším programovacím jazyce, jakým Assembler bezesporu je. A jakéže instrukce to vlastně jsou? Nelekněte se těchto strašlivých názvů a slov, kterým nerozumíte. Brzy pochopíte, že se nejedná o nic složitého. No a začneme hezky od shora:

X.3.1) AND - Logický součin

Logický součin provede to, že vezme dva bajty, podívá se na jejich jednotlivé bity a s příslušným bitem každého čísla provede následující kouzla:
  • Pokud je první bit 0 a druhý 0, výsledek je 0.
  • Pokud je první bit 1 a druhý 0, výsledek je 0.
  • Pokud je první bit 0 a druhý 1, výsledek je 0.
  • Pokud je první bit 1 a druhý 1, výsledek je 1.

    No asi promluví tabulka a ukáže vše názorněji:
    1. bit
    2. bit
    Výsledek
    0
    0
    0
    0
    1
    0
    1
    0
    0
    1
    1
    1

    No a co s tím? Například tohle. Dostanete příklad. Kolik je 243 AND 205?

    Máme dvě čísla a neboť víme, že instrukce AND pracuje s bity provedeme opět rozkouskování na bity.

    Číslo 241 vypadá takto (128+64+32+16+1):
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   1   1   0   0   0   1 


    A číslo 205 zase takto (128+65+8+4+1):
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   0   0   1   1   0   1 


    A hurá ke kouzlení. Začneme čísla porovnávat dle pravidel logického součinu, neboli AND.

    Číslo 241:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   1   1   0   0   0   1 
    Číslo 205:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   0   0   1   1   0   1 
    Výsledek:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   0   0   0   0   0   1 
    Takže jsme právě zjistili, že 241 AND 205 je úplně "logických" 193.

    X.3.2) OR - Logický součet

    Stejně jako AND logický součin provede to, že vezme dva bajty, podívá se na jejich jednotlivé bity, ale s příslušným bitem každého čísla provede trochu jiná kouzla kouzla:
  • Pokud je první bit 0 a druhý 0, výsledek je 0.
  • Pokud je první bit 1 a druhý 0, výsledek je 1.
  • Pokud je první bit 0 a druhý 1, výsledek je 1.
  • Pokud je první bit 1 a druhý 1, výsledek je 1.

    Opět tabulka:
    1. bit
    2. bit
    Výsledek
    0
    0
    0
    0
    1
    1
    1
    0
    1
    1
    1
    1
    Příklad: 241 OR 205.
    Číslo 241:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   1   1   0   0   0   1 
    Číslo 205:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   0   0   1   1   0   1 
    Výsledek:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   1   1   1   1   0   1 
    241 OR 205 je 253.

    X.3.3) NOT - Logická negace

    Logická negace provede negaci svých operandů:
  • Pokud je bit 0, výsledek je 1.
  • Pokud je bit 1, výsledek je 0.

    Tabulka:
    1. bit
    Výsledek
    0
    1
    1
    0
    Příklad: NOT 241.
    Číslo 241:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   1   1   0   0   0   1 
    Výsledek:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     0   0   0   0   1   1   1   0 
    NOT 241 je 14.

    X.3.4) XOR - Logická nonekvivalence

    Příkaz provádí nonekvivalenci dvou čísel podle následujících podmínek:
  • Pokud je první bit 0 a druhý 0, výsledek je 0.
  • Pokud je první bit 1 a druhý 0, výsledek je 1.
  • Pokud je první bit 0 a druhý 1, výsledek je 1.
  • Pokud je první bit 1 a druhý 1, výsledek je 0. Tabulka:
    1. bit
    2. bit
    Výsledek
    0
    0
    0
    0
    1
    1
    1
    0
    1
    1
    1
    0
    Příklad: 241 XOR 205.
    Číslo 241:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   1   1   0   0   0   1 
    Číslo 205:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     1   1   0   0   1   1   0   1 
    Výsledek:
    Bit
     7   6   5   4   3   2   1   0 
    Stav
     0   0   1   1   1   1   0   0 
    241 XOR 205 je 253.

    Tak to by prozatím asi stačilo. Pokud předešlé řádky vidíte poprvé a o příkazech AND, NOT, OR a XOR jste ještě neslyšeli, tak tyto informace budete zpracovávat ještě notnou chvíli. Určitě se tyto věci neučte nazpaměť a ani se je nesnažte pamatovat. Měli byste prostě vědět, že jsou a až je budete potřebovat, tak se na ně podíváte.

    Zde je pro přehlednost ještě jednou tabulka:
    Argumenty
    AND
    OR
    XOR
    1. bit
    2. bit
    Výsledek
    Výsledek
    Výsledek
    0
    0
    0
    0
    0
    0
    1
    0
    1
    1
    1
    0
    0
    1
    1
    1
    1
    1
    1
    0


    Cvičení:
    Abyste si mohli ověřit, jak dobře vše chápete pár příkladů na závěr:

    1) 12 AND 15 a 135 AND 142
    2) 24 OR 68 a 148 OR 200
    3) NOT 14 a NOT 165
    4) 98 XOR 1 a 212 XOR 39


    Výsledky: 1)12,134 2) 92,220 3)5A,F1 4) 99, 243


    Předchozí kapitola Nahoru Následující kapitola