Команды сравнения словных аккумуляторов сравнивают аккумулятор 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. Команда “заканчивает опрос”.