Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Логические команды
Все логические команды рассматривают свои операнды как упорядоченные наборы битовых значений. В таком наборе может содержаться 8 бит или 16 бит, в зависимости от размера операнда.[38] Бит со значением 1 может трактоваться как логическое значение True, а нулевой бит – как логическое значение False. Сначала рассмотрим двухадресные логические команды, имеющие такой общий вид КОП op1,op2 Ниже приведены допустимые операнды таких команд:
Как видно, у этих команд допускаются такие же операнды, как и у команд сложения, вычитания и сравнения. Будем нумеровать биты в операндах логических команд так же, как и в регистрах, от нуля до некоторого числа N. Число N равно 7 для коротких (байтовых) операндов и равно 15 для длинных (размером в слово):
Таким образом, операнды логической команды можно рассматривать как массивы логических элементов, проиндексированных от 0 до N. На языке Паскаль такие массивы можно, например, описать в следующем виде Var op1,op2: array [0..N] of Boolean; Схему выполнения команды логического умножения and op1,op2 на языке Паскаль можно записать в виде for i:=0 to N do op1[i]:=op1[i] and op2[i] Схему выполнения команды логического сложения or op1,op2 на языке Паскаль можно записать в виде for i:=0 to N do op1[i]:=op1[i] or op2[i] Схему выполнения команды неэквивалентности (её часто называют также командой сложения по модулю 2) xor op1,op2 на языке Паскаль можно записать в виде for i:=0 to N do op1[i]:=op1[i] <> op2[i] Команда логического тестирования test op1,op2 выполняется точно так же, как и команда логического умножения, но без записи результата на место первого операнда, т.е. как и у команды сравнения с кодом cmp её единственным результатом является установка флагов. Все перечисленные выше логические команды устанавливают флаги так же, как команда вычитания, например, флаги CF и OF будут разны нулю (никакого переноса и переполнения, конечно, нет), во флаг знака SF переносится левый бит результата и т.д. Но, как мы вскоре увидим, интерес для программиста представляет здесь только флаг нулевого результата ZF, который, как обычно, равен единице (поднят) для полностью нулевого результата, и равен нулю (опущен), если в результате есть хотя бы один ненулевой бит. Следует заметить, что мы использовали цикл языка Паскаль только для более строгого описания работы логических команд. Не следует понимать это слишком буквально: на самом деле логические команды на современных ЭВМ выполняют операции над битами своих операндов одновременно (чаще всего за один такт работы центрального процессора), а не в последовательном цикле. [39] Date: 2015-10-18; view: 338; Нарушение авторских прав |