- •Содержание
- •5. Элементы языка программирования 66
- •6. Библиотека стандартных функциональных блоков 77
- •Введение
- •Общие сведения
- •Программистская модель плк с300
- •Внешний вид контроллера
- •Модули ввода/вывода
- •Распределение памяти контроллера
- •Программистская модель контроллера.
- •Регистры и флаги
- •Области операндов контроллера
- •Отображение входов и выходов
- •Область данных
- •Область меток
- •Область таймеров
- •Область счётчиков
- •Область периферии
- •Область расширенной периферии
- •Структура и обработка технологических программ
- •Система команд лмк
- •Логические команды
- •Команды присвоения битных операндов
- •Команды опроса битных переменных
- •Команды переходов
- •Команды пересылки
- •Арифметические команды
- •Команды сравнения
- •Логические байтовые и словные команды
- •Байтовые и словные команды сдвига
- •Индексная адресация.
- •Счетчики
- •Команды обработки счётчиков
- •Последовательность программирования счётчика
- •Примеры программирования счётчика
- •U е 5.0 ;Если сработал фотоэлемент на входе e5.0
- •Формат слова уставки счётчика
- •Таймеры
- •Команды обработки таймеров
- •Последовательность программирования таймера
- •Примеры программирования таймера
- •Формат слова уставки таймера
- •Организационные команды
- •Команды вызова, активизации и завершения блоков
- •Команды блокировки, деблокировки, задания допустимой длительности скана
- •Команды структурирования текста
- •Команды обработки канала связи
- •Элементы языка программирования
- •Организационные блоки
- •Особенности прерывания циклической обработки блоками ob2...Ob18
- •Программные блоки
- •Функциональные блоки
- •Формат функциональных блоков
- •Особенности использования формальных параметров
- •Блоки данных
- •Формат и использование блока назначений nb0
- •Комментарии к программе
- •Комментарий к строке
- •Комментарий к операнду
- •Комментарий к элементу цепи ркс и к цепи ркс
- •Библиотека стандартных функциональных блоков
- •Блоки организации связи по каналу “эвм”
- •Блоки обработки системы реального времени
- •Арифметические блоки
- •Блоки обработки модулей расширенной периферии
- •Системные блоки
- •Блоки регулирования
Команды сравнения
Команды сравнения словных аккумуляторов сравнивают аккумулятор RW2 с аккумулятором RW1 и устанавливают логический аккумулятор LA и флаги F в соответствии с результатами сравнения. Команды имеют модификации для сравнения беззнаковых и знаковых чисел. Эти команды могут стоять в начале логического уравнения. После них могут находиться логические команды опроса битных операндов, продолжающие уравнение.
Команды сравнения вещественных и байтных аккумуляторов устанавливают флаги в соответствии с результатом сравнения, но не затрагивают LA и поэтому не могут включаться в логическое уравнение.
Во всех командах сравнения RW2 с RW1 флаги устанавливаются по результату вычитания RW1 из RW2, т.е. следующим образом:
если RW2 = RW1, то ZF=1, иначе ZF=0;
если беззнаковый RW2 < беззнакового RW1, то CF=1, иначе CF=0;
если результат RW2-RW1 < О, то SF=1, иначе SF=0;
если при вычитании знакового RW1 из знакового RW2 происходит переполнение, то OF=1, иначе OF=0;
если результат RW2-RW1 содержит четное количество бит, равных 1, то PF=1, иначе PF=0.
В команде сравнения RB2 с RB1 флаги устанавливаются по результату вычитания RB1 из RB2 по тем же правилам, с заменой RW1 на RB1 и RW2 на RB2. В команде сравнения аккумуляторов RG2 и RG1 флаги устанавливаются по результату вычитания RG1 из RG2, т.е. следующим образом:
если RG2 = RG1, то ZF=1, иначе ZF=0;
если RG2 < RG1, то CF=1 и SF >< OF, иначе CF=0 и SF=OF.
1) !=W - сравнение аккумуляторов RW2 с RW1 на равенство.
Формат команды: !=W.
Эта команда сравнивает аккумулятор RW2 с RW1 и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA и флаг ZF устанавливаются в 1, если содержимое RW1 равно содержимому RW2, иначе LA и флаг ZF сбрасываются в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
2)><W - сравнение аккумуляторов RW1 и RW2 на неравенство.
Формат команды: ><W.
Эта команда сравнивает аккумулятор RW2 с аккумулятором RW1 устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 не равно содержимому RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW1, иначе LA сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
3) >W -беззнаковое сравнение аккумуляторов RW1 и RW2 на “больше”.
Формат команды: >W.
Этa команда сравнивает аккумулятор RW2 с RW1 и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 больше содержимого RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
4) >ZW - знаковое сравнение аккумуляторов RW1 и RW2 на “больше”.
Формат команды: >ZW.
Этa команда сравнивает аккумулятор RW1 с RW2 как знаковые числа и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 больше содержимого RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
5) >=W - беззнаковое сравнение аккумуляторов RW1 и RW2 на “больше или равно”.
Формат команды: >=W.
Эта команда сравнивает аккумуляторы RW1 и RW2 и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 больше или равно содержимому RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
6) >=ZW - знаковое сравнение аккумуляторов RW1 и RW2 на “больше или равно”.
Формат команды: >=ZW.
Эта команда сравнивает аккумуляторы RW1 и RW2 как знаковые числа и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 больше или равно содержимому RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
7) <W -беззнаковое сравнение аккумуляторов RW1 и RW2 на “меньше”.
Формат команды: <W.
Эта команда сравнивает аккумулятор RW1 с RW2 и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 меньше содержимого RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
8) <ZW - знаковое сравнение аккумуляторов RW1 и RW2 на “меньше”.
Формат команды: <ZW.
Эта команда сравнивает аккумулятор RW1 с RW2 как знаковые числа и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 больше содержимого RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
9) <=W - беззнаковое сравнение аккумуляторов RW1 и RW2 на “меньше или равно”.
Формат команды: <=W.
Эта команда сравнивает аккумулятор RW1 с RW2 и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 меньше или равно содержимому RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
10) <=ZW - знаковое сравнение аккумуляторов RW1 и RW2 на “меньше или равно”.
Формат команды: <=ZW.
Эта команда сравнивает аккумулятор RW1 с RW2 и устанавливает по результату сравнения логический аккумулятор LA и флаги ZF, CF, SF, PF, OF. LA устанавливается в 1, если содержимое RW2 меньше или равно содержимому RW1, иначе LA сбрасывается в 0. Флаг ZF устанавливается в 1, если содержимое RW2 равно содержимому RW2, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если беззнаковый RW2 меньше беззнакового RW1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RW2-RW1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RW1 из знакового RW2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если RW2-RW1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RB1 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
11) CMPG - сравнение аккумулятора RG2 с RG1.
Формат команды: CMPG.
Эта команда сравнивает аккумулятор RG1 с RG2. Флаг ZF устанавливается в 1, если содержимое RG1 равно содержимому RG2, иначе сбрасывается в 0. Флаги CF и SF устанавливаются в 1, если содержимое RG2 меньше содержимого RG1, иначе сбрасывается в 0. Команда изменяет аккумуляторы LA, RW1, RW2, RG1, RB1, RB2 и флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.
12) !=B - сравнение аккумуляторов RB1 и RB2.
Формат команды: !=B.
Эта команда сравнивает аккумулятор RB1 с RB2 и устанавливает по результату сравнения флаги CF, ZF, CF, SF, PF, OF. Флаг ZF устанавливается в 1, если содержимое RB2 равно содержимому RB1, иначе сбрасывается в 0. Флаг CF устанавливается в 1, если содержимое RB2 меньше содержимого RB1, иначе сбрасывается в 0. Флаг SF устанавливается в 1, если RB2-RB1 меньше 0, иначе сбрасывается в 0. Флаг OF устанавливается в 1, если при вычитании знакового RB1 из знакового RB2 происходит переполнение, иначе сбрасывается в 0. Флаг PF устанавливается в 1, если результат RB2-RB1 содержит четное количество бит, равных 1, иначе сбрасывается в 0. Команда изменяет флаги ZF, CF, SF, PF, OF. Команда “заканчивает опрос”.