Команду процессора CMP можно исключить, но её можно заменить другими командами (вычитанием). Совсем исключить сравнение конечно нельзя. Без сравнения не может быть цикла и рекурсии.
В программе можно. Например, с помощью вычитания. Получился ноль - равны. Не ноль - не равны. Но это, я бы сказал, обфускация кода. В отношении процессора - это логическое устройство. Вычисления в нем реализуются с помощью операций алгебры логики. И запрещать в нем некоторые базовые логические операции - создавать себе сложности. А все - вообще не сможет работать.
в процессоре обычно нет как таковой обособленной уникальной операции сравнения в x86: есть cmp - это обрезанная операция вычитания. она делает все то же, кроме сохранения результата есть test - это обрезанная операция побитового and - то же самое. исключить в таком случае можно, но на производительности это скажется отрицательно - понадобятся лишние операции чтения данных из памяти либо лишние свободные регистры.
Если числа равны, то при вычислении их разности процессор установит флаг Z (ZF). И в ассемблерном коде программы поставим условный переход - по факту установки этого флага. Получаем проверку равенства. Если нужна проверка меньше/больше, то после вычитания производим условный переход по флагу C (CF).