Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Logické inštrukcie

Logické inštrukcie majú dva operandy. Inštrukcie vykonávajú logické operácie nad zodpovedajúcimi bitmi operandov. Výsledok uložia do ľavého operandu.

and register/pamäť, register/pamäť/číslo (logical and)

OF SF ZF AF PF CF
0 * * ? * 0

Inštrukcia and vykonáva logický súčin. Používa sa najmä vtedy, keď potrebujeme nastaviť niektorý bit (bity) ľavého operandu na hodnotu 0. Do pravého operandu uložíme masku, ktorá bude mať v určených bitoch hodnotu 0, v ostatných bitoch hodnotu 1. Napr. chceme vynulovať 3. bit registra BL:

and bl,11110111b

Pomocou inštrukcie and môžeme z ASCII kódu číslice určiť jej číselnú hodnotu. Pri pohľade do tabuľky kódu ASCII zistíme, že horné 4 bity číslic majú hodnotu 0011b, v dolných 4 bitoch je hodnota číslice (‘0’ = 00110000b, ‘1’ = 00110001b, atď.). Pri konverzii číslice na číslo stačí vynulovať horné 4 bity, napr.:

mov al,’9’
and al,00001111b; ’9’
® 9

or register/pamäť, register/pamäť/číslo (logical inclusive or)

OF SF ZF AF PF CF
0 * * ? * 0

Inštrukcia or vykonáva logický súčet. Umožňuje nastaviť niektorý bit (bity) ľavého operandu na hodnotu 1. Do pravého operandu uložíme masku, ktorá bude mať v určených bitoch hodnotu 1, v ostatných bitoch hodnotu 0. Napr. chceme 3. bit registra BL nastaviť na 1:

or bl,00001000b

xor register/pamäť, register/pamäť/číslo (logical exclusive or)

OF SF ZF AF PF CF
0 * * ? * 0

Inštrukcia xor vykonáva operáciu, ktorá sa nazýva antivalencia. Výsledkom tejto operácie nad rovnakými bitmi je 0, nad rozdielnymi bitmi 1. Používa sa vtedy, keď potrebujeme invertovať hodnotu zvolených bitov ľavého operandu (zameniť nuly za jednotky a naopak). Nulové bity v maske nemenia pôvodné hodnoty odpovedajúcich bitov ľavého operandu, jednotkové bity invertujú pôvodné hodnoty bitov. Príklad:

mov al,01010101b
xor al,11110000b ; al := 10100101b

Antivalencia operandu so sebou samým nastaví všetky bity operandu na 0, preto sa xor používa na vynulovanie registra, napr.

xor ecx,ecx

vykoná to isté ako mov ecx,0, ale xor zaberá o 3 bajty menej pamäti.

test register/pamäť, register/pamäť/číslo (logical compare)

OF SF ZF AF PF CF
0 * * ? * 0

Inštrukcia test vykoná logický súčin operandov, podľa výsledku operácie nastaví príznakové bity, ale výsledok neuloží. Používa sa vtedy, keď chceme zistiť, akú hodnotu má zvolený bit ľavého operandu a podľa toho vetviť výpočet. Napr. otestujeme 3. bit registra AL:

test al,00001000b
jz Nula; v 3. bite bola 0
Jedna: ...

not register/pamäť (one's complement negation)

OF SF ZF AF PF CF
- - - - - -

Inštrukcia not invertuje hodnoty všetkých bitov operandu.

Hore

Načo je vám jazyk symbolických adries?

Architektúra moderných procesorov

Registre

Spôsoby adresovania

Premenné a návestia

Symbolické konštanty

Inštrukčný súbor

Segmentové direktívy

Moduly

Služby operačného systému MS-DOS

Služby operačného systému Windows 95/98/NT/XP

Systémová úroveň vstupu a výstupu

Prostriedky pre prípravu programu

Aritmetické inštrukcie | Inštrukcie pre posuv a rotáciu
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4.
Otázky a pripomienky môžete poslať autorke.
Naposledy upravené 28.9.2015.