Главная » Bascom-8051, Basic, Железо » Применение логических функций BASCOM-8051

0

Сущность  логических  функций,  очевидно,  не  требует  пояснений,  поэтому   остановимся   только  на особенностях  их  применения.  Логические  операции  производятся   только  над  битовыми,  одно-,  двух-  и четырехбайтовыми  переменными  и  правильно  выполняются  только  при  одинаковой  размерности  исходных переменных.   Использование   разных   типов   переменных   недопустимо,   т.к.   получаются   непредсказуемые результаты, и происходит модификация регистров, не участвующих в назначенной операции. В качестве операнда логических  операций  могут  применяться  и  константы.  Форма  записи  констант  должна   быть   “понятной” компилятору, т.к. неоднозначная запись также может дать неверный результат. Логические операции с числами с плавающей  точкой  не  выполняются  и  даже  не  компилируются  (пропускаются).  К  сожалению,  компилятор совершенно   не   определяет   ошибки   назначения   неверных   операндов   логических   операций.   Эта   задача предоставлена   программисту.  Ниже  приведена  демонстрационная  программа  логических  операций.  В  ней показана возможность (или невозможность) их применения и время исполнения.

‘—————————————————- ‘           Тестирование логических операций

‘—————————————————-

$large

Dim Cnt As Const 5               ‘число 5

Dim Bt As Bit Dim , Byt1 As Byte ‘определим по паре переменных всех типов

Dim Byt As Byte , Byt1 As Byte Dim Wrd As Word , Wrd1 As Word

Dim Intg As Integer , Intg1 As Integer

Dim Lng As Long , Lng1 As Long

Dim Sng As Single , Sng1 As Single

‘—————————————————- Set Bt : Reset Bt1              ‘установить биты

Bt = Bt And Bt1 : Bt = Not Bt   ‘операция над битами

Print Bt                        ‘вывод значения бита

‘—————————————————-

Byt = Byt Or Bt                 ‘это совершенно недопустимо

Byt1 = Byt1 Or &HAA             ‘правильно Byt1 = Byt And Byt1             ‘правильно Wrd1 = &H1234 : Byt = &H77 : Intg = 0

Intg1 = Byt Or Wrd1             ‘неверно. операция произойдет ‘только с младшими разрядами Intg = 1277H смотри следующую строку Intg = &H1234 : Wrd1 = &H77

Intg1 = Byt : Intg1 = Wrd1 Or Intg1       ‘нужно делать так

‘результат: Intg = 0077H

Wrd = 1234 Or 5678              ‘операнды десятичные константы Wrd1 = Wrd Xor 131112           ‘результат будет неправильным Lng = Lng Xor &H10000000        ‘правильно

‘—————————————————-

Sng = -1 : Sng1 = 1000          ‘над числами с плав. точкой лог. оп.

Sng1 = Not Sng1                 ‘не выполняются!

‘—————————————————- ‘производительность логических операций

Byt = Byt And Byt1              ’11 тактов

Byt = Byt Or Byt1               ’11 тактов Byt = Byt Xor Byt1              ’11 тактов Wrd = Wrd And Wrd1              ’20 тактов Intg = Intg And Intg1           ’20 тактов Lng = Lng And Lng               ’93 такта End

‘—————————————————-

Источник: М.Л.Кулиш, СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ BASCOM-8051, Краснодар 2001

По теме:

  • Комментарии