Программирование на JAVA

CMP dst,src

выполняет операцию

[dst] - [src]

и на основе полученного результата устанавливает флаги кодов условий. При этом ни один из операндов не изменяется и первый операнд всегда сравнивается со вторым. Например, переход по условию «больше» выполняется в том случае, если операнд назначения dst больше исходного операнда src.

Безусловный переход

Команда безусловного перехода JMP всегда вызывает переход к команде по целе­вому адресу. В ней может быть задано короткое (1 байт) или длинное (4 байта) от­носительное смещение со знаком. Кроме того, как и в командах условного перехо­да, могут использоваться другие режимы адресации. Такая гибкость определения целевого адреса перехода может быть очень полезной. В каждой точке программы выполняется только одно из альтернативных вычислений. Предположим, что в спе­циальной таблице в памяти начиная с адреса JUMPTABLE хранятся 4-байтовые адреса первой команды каждой из подпрограмм, представляющих возможные ветви программы. Если последовательно пронумеровать эти ветви как 0, 1, 2... и загрузить индекс выполняемой подпрограммы в регистр ESI, то переход к вы­бранной ветви может быть выполнен посредством такой команды с использова­нием индексной адресации со смещением:


<< назад вперед >>