Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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 ресурса), иначе в адресуемый бит запишется нуль.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - * -
Воздействует на - - - - - Х -

Пример:

A  I 0. 1

A  I 124. 0

=   M 2. 7 // Выполняем присвоение

16. Сбросить_RLO

Формат: CLR

Описание. Команда CLR сбрасывает бит RLO в '0'.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - - -

17. Установить_RLO

Формат: SET

Описание. Команда SET устанавливает бит RLO в '1'.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - - -

18. Инвертировать_RLO

Формат: NOT

Описание. Команда NOT инвертирует значение бита RLO.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - * - * -
Воздействует на - - - - - - Х -

19. Сохранить_RLO_в_BR

Формат: SAVE

Описание. Команда SAVE сохраняет значение бита RLO в бите BR

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - * -
Воздействует на Х - - - - - - - -

Содержание


Команды_битовой_логики

Содержание

20. Установить_адресуемый_бит

Формат: S < бит>

Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда S зависит от MCR ресурса. Когда ресурс не используется, адресуемый бит будет установлен, если бит RLO = 1.

Пусть ресурс MCR включен. Тогда, если бит MA = 1 (вершина стека ресурса MCR) и бит RLO = 1, то адресуемый бит будет установлен. Иначе значение адресуемого бита не меняется.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - * -
Воздействует на - - - - - Х -

21. Сбросить_адресуемый_бит

Формат: R < бит>

Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда R зависит от MCR ресурса. Когда MCR ресурс не используется, адресуемый бит будет сброшен, если бит RLO = 1.

Пусть ресурс MCR включен. Тогда, если бит MA = 1 (вершина стека ресурса MCR) и бит RLO = 1, то адресуемый бит будет сброшен. Иначе значение адресуемого бита не меняется.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - * -
Воздействует на - - - - - Х -

22. Зафиксировать_положительный_фронт

Формат: FP < бит>

Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда FP позволяет обнаружить положительный фронт.                                                         

.........

A  " Counter"

FP " Buffer"

=  " Positive_Front"

.........

Отслеживание положительного фронта выполняется по отношению к Counter. Для обнаружения фронта команде FP требуется вспомогательный бит Buffer. Когда переменная Counter изменит свое логическое состояние с 0 на 1, команда FP зафиксирует положительный фронт и установит бит RLO.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - * -
Воздействует на - - - - - Х Х

Содержание


Команды_битовой_логики

Содержание

23. Зафиксировать_отрицательный_фронт

Формат: FN < бит>

Описание. Адресуемый бит может находиться в областях: I, Q, L, M или в блоке данных. Команда FN используется для обнаружения отрицательного фронта.                                                         

.........

A  " Counter"

FN " Buffer"

= " Negative_Front"

.........

Отслеживание отрицательного фронта выполняется по отношению к Counter. Для обнаружения фронта команде FN требуется вспомогательный бит Buffer. Когда переменная Counter изменит свое логическое состояние с 1 на 0, команда FN зафиксирует отрицательный фронт и установит бит RLO.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - * -
Воздействует на - - - - - Х Х

Относительно команд 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 показывают отношение 'меньше', 'равно' или 'больше' (См. Команды_переходов).

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - Х Х - Х Х

Следующая таблица показывает, какое значение будет записано в бите RLO при различных исходных (1) и (2) условиях:

(2) А выполнялась одна из инструкций:

(1) Пусть, имело место какое-то отношение

между ACCU2 и ACCU1:

ACCU2 > ACCU1 ACCU2=ACCU1 ACCU2 < ACCU1
'==D'   
'¹ D'
'> D'
'< D'
'> =D'
'< =D'   

Пример:

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). Команды работают так же, как в предыдущих подгруппах.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - Х Х Х Х Х Х

Содержание


Содержание                               Команды_преобразования

В данную группу входят 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 формате:

30.. 28 27.... 0
знак не используются 7 цифр BCD формата от -9. 999. 999 до +9. 999. 999

Замечание. Если хотя бы одна цифра исходного числа (BCD формат) оказалась принадлежащей недействительному диапазону (от 10 до 15), то контроллер распознает синхронную ошибку. По умолчанию контроллер прекращает выполнение программы пользователя и переходит в состояние STOP. Однако, если Вы запрограммируете OB121, то при возникновении такой ошибки управление будет передано в OB121.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - - - - - - -

 

2.  from_BCD_to_Integer

       Формат: BTI

Описание. Содержимое ACCU1_L рассматривается, как число в BCD формате, оно преобразуется в Integer и результат сохраняется в ACCU1_L. Значения ACCU1_H и ACCU2 не изменяются.

Значение в ACCU1_L рассматривается как число в BCD формате:

31.... 16 14.. 12 11... 0
не используются знак не используются 3 цифры BCD формата от -999 до +999

Замечание. Если хотя бы одна цифра исходного числа (BCD формат) оказалась принадлежащей недействительному диапазону (от 10 до 15), то контроллер распознает синхронную ошибку. По умолчанию контроллер прекращает выполнение пользовательской программы и переходит в состояние STOP. Однако, если Вы запрограммируете OB121, то при возникновении такой ошибки управление будет передано в OB121.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - - - - - - -

Содержание


К оманды_преобразования

Оглавление

3.  from_Long_integer_to_BCD

Формат: DTB

Описание. Содержимое ACCU1 рассматривается как 32-ух битное целое число со знаком Long integer. Оно преобразуется в BCD формат (обратное действие к команде BTD), результат сохраняется в ACCU1. Причем, в битах 0... 27 прописываются BCD цифры, а в битах 28.. 31 прописывается знак '+' ® 0000 или '-' ® 1111. ACCU2 не изменяется.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - Х Х - - - -

Замечание. Так как 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 не изменяются.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - Х Х - - - -

Замечание. Так как BCD формат ограничен отрезком [-999.. +999], то если преобразуемое Integer изначально не находилось в этом отрезке, то будут установлены биты OV и OS в слове состояния.

5. from_Long_integer_to_Real

       Формат: DTR

Описание. Содержимое ACCU1 рассматривается как 32-ух битное целое число со знаком Long integer. Оно преобразуется в 32-ух битное вещественное число Real (число с плавающей точкой). Результат сохраняется в ACCU1. ACCU2 не изменяется.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - - - - - - -

На следующей странице приводится пример с подробными пояснениями.

Содержание


Команды_преобразования

Содержание

Пример:

       L  MD 10 // Пусть, например, в MD10 было +500

       DTR             // Преобразование  

       T  MD 20 // Результат запишем в MD20

MD10 = 500
 

0000 0000 0000 0000 0000 0001 1111 0100

MD20 = 500. 0 30… 23

22…          …                  …0

 

111 1010 0000 0000 0000 0000

  знак порядок

23-ех битная мантисса

           

Число с плавающей точкой записывается в формате 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 без изменений.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - - - - - - -

7.  Инвертирование_битов_слова

       Формат: INVI

Описание. Содержимое ACCU1_L рассматривается как слово Word. Каждый бит этого слова инвертируется. Результат сохраняется в ACCU1_L.

ACCU2 и ACCU1_H без изменений.

  BR CC1 CC0 OV OS OR STA RLO /FC
Зависит от - - - - - - - - -
Воздействует на - - - - - - - - -
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...