1. Сравнение_длинных_целых_чисел_со_знаком
) A( O Q 124. 5 O M 12. 4 ) A I 124. 1 = M 1. 7 15. Запись_результата Формат: = < адресуемый бит> Описание. Адресуемый бит может находиться в одной из следующих областей: входы, выходы, локальный стек, меркеры, блок данных. Данная команда зависит от MCR ресурса. Видимо, более частым случаем является ситуация, когда MCR ресурсом не пользуются, тогда в адресуемый бит записывается значение RLO. (Именно в бите RLO содержится результат логической операции) Содержание Команды_битовой_логики Содержание Если же ресурс MCR в данный момент включен, то в адресуемый бит будет записано текущее значение RLO только в том случае, если бит MA = 1 (вершина стека MCR ресурса), иначе в адресуемый бит запишется нуль.
Пример: A I 0. 1 A I 124. 0 = M 2. 7 // Выполняем присвоение 16. Сбросить_RLO Формат: CLR Описание. Команда CLR сбрасывает бит RLO в '0'.
17. Установить_RLO Формат: SET Описание. Команда SET устанавливает бит RLO в '1'.
18. Инвертировать_RLO Формат: NOT Описание. Команда NOT инвертирует значение бита RLO.
19. Сохранить_RLO_в_BR Формат: SAVE Описание. Команда SAVE сохраняет значение бита RLO в бите BR
Содержание
Команды_битовой_логики Содержание 20. Установить_адресуемый_бит Формат: S < бит> Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда S зависит от MCR ресурса. Когда ресурс не используется, адресуемый бит будет установлен, если бит RLO = 1. Пусть ресурс MCR включен. Тогда, если бит MA = 1 (вершина стека ресурса MCR) и бит RLO = 1, то адресуемый бит будет установлен. Иначе значение адресуемого бита не меняется.
21. Сбросить_адресуемый_бит Формат: R < бит> Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда R зависит от MCR ресурса. Когда MCR ресурс не используется, адресуемый бит будет сброшен, если бит RLO = 1. Пусть ресурс MCR включен. Тогда, если бит MA = 1 (вершина стека ресурса MCR) и бит RLO = 1, то адресуемый бит будет сброшен. Иначе значение адресуемого бита не меняется.
22. Зафиксировать_положительный_фронт Формат: FP < бит> Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда FP позволяет обнаружить положительный фронт. ......... A " Counter" FP " Buffer" = " Positive_Front" ......... Отслеживание положительного фронта выполняется по отношению к Counter. Для обнаружения фронта команде FP требуется вспомогательный бит Buffer. Когда переменная Counter изменит свое логическое состояние с 0 на 1, команда FP зафиксирует положительный фронт и установит бит RLO.
Содержание
Команды_битовой_логики Содержание 23. Зафиксировать_отрицательный_фронт Формат: FN < бит> Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда FN используется для обнаружения отрицательного фронта. ......... A " Counter" FN " Buffer" = " Negative_Front" ......... Отслеживание отрицательного фронта выполняется по отношению к Counter. Для обнаружения фронта команде FN требуется вспомогательный бит Buffer. Когда переменная Counter изменит свое логическое состояние с 1 на 0, команда FN зафиксирует отрицательный фронт и установит бит RLO.
Относительно команд FP и FN следует сделать пояснение по вспомогательному биту. Обе команды рассматривают этот бит как буфер для хранения предыдущего логического состояния контролируемой переменной. Буфер достаточно проинициализировать один раз, например в ОВ100, далее команды выполняют обновление буфера автоматически. Содержание Команды_сравнения Содержание Команды сравнения представлены тремя подгруппами: 8 Сравнение_длинных_целых_чисел_со_знаком 8 Сравнение_целых_чисел_со_знаком 8 Сравнение_вещественных_чисел Содержание Команды_сравнения Содержание 1. Сравнение_длинных_целых_чисел_со_знаком В эту группу входит шесть команд: ==D, < =D, < D, < > D, > =D, > D. Формат: ==D , < =D , < D , < > D , > =D , > D Описание. Данные команды сравнивают содержимое ACCU2 с содержимым ACCU1. Содержимое ACCU2 и ACCU1 рассматривается, как long integer 32 бита. Результат сравнения отражается в бите RLO и битах CC1, CC0. У всех команд общий алгоритм работы. Пусть, например, выполняется команда '< =D'. Процессор подставит значение ACCU2 с левой стороны от знака сравнения, а значение ACCU1 подставит вместо 'D', то есть с правой стороны. Бит RLO будет установлен, если результат сравнения истинен, иначе RLO = 0. Биты CC1 и CC0 показывают отношение 'меньше', 'равно' или 'больше' (См. Команды_переходов).
Следующая таблица показывает, какое значение будет записано в бите RLO при различных исходных (1) и (2) условиях:
Пример: L MD 10 L ID 24 > D // Если ACCU2 ( MD 10 ) больше чем ACCU1 (ID 24 ), // то бит RLO будет установлен = M 2. 0 // M 2. 0: =1, если MD 10 > ID 24 2. Сравнение_целых_чисел_со_знаком (integer 16 бит) В эту группу входит шесть команд: ==I, < =I, < I, < > I, > =I, > I. Формат: ==I , < =I , < I , < > I , > =I , > I Описание. См. описание предыдущей группы команд. Все то же самое, за исключением того, что берутся ACCU1_L и ACCU2_L. Содержание Команды_сравнения Оглавление 3. Сравнение_вещественных_чисел В эту группу входит шесть команд: ==R, < =R, < R, < > R, > =R, > R. Формат: ==R , < =R , < R , < > R , > =R , > R Описание. Сравнивается содержимое ACCU1 и ACCU2. Значение в Аккумуляторах рассматривается как вещественные числа с плавающей точкой (32-bit IEEE floating point). Команды работают так же, как в предыдущих подгруппах.
Содержание Содержание Команды_преобразования В данную группу входят 17 команд: 8 from_BCD_to_Long_integer 8 from_BCD_to_Integer 8 from_Long_integer_to_BCD 8 from_Integer_to_BCD 8 from_Long_integer_to_Real 8 Инвертирование_битов_двойного_слова 8 Инвертирование_битов_слова 8 from_Integer_to_Long_integer 8 Смена_знака_для_Long_integer 8 Смена_знака_для_Integer 8 Смена_знака_для_Real 8 Округление_до_ближайшего_целого 8 Округление_до_большего_целого 8 Округление_до_меньшего_целого 8 Отбрасывание_дробной_части
8 Обмен_байтами_в_двойном_слове 8 Обмен_байтами_в_слове Содержание Команды_преобразования Содержание 1. from_BCD_to_Long_integer Формат: BTD Описание. Содержимое ACCU1 рассматривается, как число в BCD формате, оно преобразуется в Long integer и результат сохраняется в ACCU1. Значение в ACCU1 рассматривается как число в BCD формате:
Замечание. Если хотя бы одна цифра исходного числа (BCD формат) оказалась принадлежащей недействительному диапазону (от 10 до 15), то контроллер распознает синхронную ошибку. По умолчанию контроллер прекращает выполнение программы пользователя и переходит в состояние STOP. Однако, если Вы запрограммируете OB121, то при возникновении такой ошибки управление будет передано в OB121.
2. from_BCD_to_Integer Формат: BTI Описание. Содержимое ACCU1_L рассматривается, как число в BCD формате, оно преобразуется в Integer и результат сохраняется в ACCU1_L. Значения ACCU1_H и ACCU2 не изменяются. Значение в ACCU1_L рассматривается как число в BCD формате:
Замечание. Если хотя бы одна цифра исходного числа (BCD формат) оказалась принадлежащей недействительному диапазону (от 10 до 15), то контроллер распознает синхронную ошибку. По умолчанию контроллер прекращает выполнение пользовательской программы и переходит в состояние STOP. Однако, если Вы запрограммируете OB121, то при возникновении такой ошибки управление будет передано в OB121.
Содержание К оманды_преобразования Оглавление 3. from_Long_integer_to_BCD Формат: DTB Описание. Содержимое ACCU1 рассматривается как 32-ух битное целое число со знаком Long integer. Оно преобразуется в BCD формат (обратное действие к команде BTD), результат сохраняется в ACCU1. Причем, в битах 0... 27 прописываются BCD цифры, а в битах 28.. 31 прописывается знак '+' ® 0000 или '-' ® 1111. ACCU2 не изменяется.
Замечание. Так как BCD формат ограничен отрезком [-9. 999. 999.. +9. 999. 999], то если преобразуемое Long integer изначально не находилось в этом отрезке, то будут установлены биты OV и OS в слове состояния. 4. from_Integer_to_BCD Формат: ITB Описание. Содержимое ACCU1_L рассматривается как 16-ти битное целое число со знаком Integer. Оно преобразуется в BCD формат (обратное действие к команде BTI), результат сохраняется в ACCU1_L. Причем, в битах 0... 11 прописываются BCD цифры, а в битах 12.. 15 прописывается знак '+' ® 0000 или '-' ® 1111. ACCU1_H и ACCU2 не изменяются.
Замечание. Так как BCD формат ограничен отрезком [-999.. +999], то если преобразуемое Integer изначально не находилось в этом отрезке, то будут установлены биты OV и OS в слове состояния. 5. from_Long_integer_to_Real Формат: DTR Описание. Содержимое ACCU1 рассматривается как 32-ух битное целое число со знаком Long integer. Оно преобразуется в 32-ух битное вещественное число Real (число с плавающей точкой). Результат сохраняется в ACCU1. ACCU2 не изменяется.
На следующей странице приводится пример с подробными пояснениями. Содержание Команды_преобразования Содержание Пример: L MD 10 // Пусть, например, в MD10 было +500 DTR // Преобразование T MD 20 // Результат запишем в MD20
Число с плавающей точкой записывается в формате IEEE: 31 0 [................... ], где бит 31 - знак мантиссы. Биты 30... 23 - значение порядка, причем значимость битов следующая: · бит 30 º 128 · бит 29 º 64 ·..... · бит 24 º 2 · бит 23 º 1 Биты 22…0 - значение мантиссы, причем значимость битов следующая: · бит 22 º 2-1 (т. е. 0. 5) · бит 21 º 2-2 (т. е. 0. 25) · бит 20 º 2-3 (т. е. 0. 125) ·..... · бит 0 º 2-27 Общая формула такая: (знак) * (1. мантисса) * 2 порядок - 127 Итак, в данном примере мантисса получилась: 22 15 0 111 1010 0000 0000 0000 0000 Если Вы преобразуете ее, то получится 0. 953125. Далее, после преобразования порядка 10000111, получится 135. Теперь возвращаемся к формуле: (+1) * (1. 953125) * 2 (135-127) = 1. 953125 * 2 8 = 500 Именно то, что и требовалось доказать. Содержание Команды_преобразования Содержание 6. Инвертирование_битов_двойного_слова Формат: INVD Описание. Содержимое ACCU1 рассматривается как двойное слово Double word. Каждый бит этого Double word инвертируется. Результат сохраняется в ACCU1. ACCU2 без изменений.
7. Инвертирование_битов_слова Формат: INVI Описание. Содержимое ACCU1_L рассматривается как слово Word. Каждый бит этого слова инвертируется. Результат сохраняется в ACCU1_L. ACCU2 и ACCU1_H без изменений.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|