Команды предназначены для операций над строками (строкой называется последовательность байтов или слов с любым содержимым). Они сравнивают по одному элементу каждой строки, осуществляя вычитание второго операндаизпервого и устанавливая в соответствии с результатом вычитания флаги CF, PF, AF, ZF, SF и OF. Первый операнд адресуется через DS:SI, второй - через ES:DI. Операцию сравнения можно условно изобразить следующим образом:
(DS:SI) - (ES:DI) -> флаги процессора
После каждой операции сравнения регистры S1 и DI получают положительное (если флаг DF=0) или отрицательное (если флаг DF=1) приращение. Величина приращения составляет 1 или 2 в зависимости от размера сравниваемых элементов.
Вариант команды CMPS имеет формат
cmps строка_1, строка_2
(что не избавляет от необходимости инициализировать регистры DS:SI и ES:DI адресами строк строка_1 и строка_2 соответственно). В этом формате возможна замена сегмента первой строки:
cmps Е5:строка_1, строка_2
Рассматриваемые команды могут предваряться префиксами повторения REPE/REPZ (повторять, пока элементы равны, т.е. до первого неравенства) и REPNE/REPNZ (повторять, пока элементы не равны, т.е. до первого равенства). В любом случае выполняется не более СХ операций над последовательными элементами.
После выполнения рассматриваемых команд регистры SI и DI указывают на ячейки памяти, находящиеся за теми (если DF=0) или перед теми (если DF=1) элементами строк, на которых закончились операции сравнения.