Ľudmila Jánošíková | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Programovanie v jazyku symbolických adries | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pre 32-bitové procesory Intel | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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)
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’ or register/pamäť, register/pamäť/číslo (logical inclusive or)
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)
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 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)
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 not register/pamäť (one's complement negation)
Inštrukcia not invertuje hodnoty všetkých bitov operandu. |
Načo je vám jazyk symbolických adries?
Architektúra moderných procesorov Služby operačného systému MS-DOS Služby operačného systému Windows 95/98/NT/XP |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4. Otázky a pripomienky môžete poslať autorke. Naposledy upravené 28.9.2015. |