Команды сравнения

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: