Безусловные и условные пыжки.
-
Иногда код ассемблера необходимо с делать с условием пример фильтр свой чужой. Реализовать это можно сравнением двух адресов и задать условие. Сравнение задаётся командой cmp, после которой идёт условие прыжка , после которого выполняется ваш код. пример мы нашли смещение от адреса число которое равно 1 от начала структуры адреса игрока и нам надо если оно равно чтоб здоровье было больше. и так пишем наш код.
cmp [eax+1234],1 // сравнили наш адрес фильтра с единицей
jne code // если не равно прыжок на метку code
mov [eax+40],#99999 // а если равно
кроме метки code могут быть безымянные метки
@F прыжок в перёд
@B прыжок назад
пример
cmp [eax+1234],1 // сравнили наш адрес фильтра с еденицей
jne @F // если не равно прыжок в перёд
mov [eax+40],#99999 // а если равно
также есть чистая безымянная метка которая позволит сделать два условия
@@: безымянная метка
пример с этим же кодом
cmp [eax+1234],1 // сравнили наш адрес фильтра с единицей
jne @F // если не равно прыжок в перёд
mov [eax+40],#99999 // а если равно
@@: // прыжок на безымянную метку
mov [eax+40],0 // если [eax+1234],1 не равен это наш враг и с метки @@: не наш игрок умирает
Теперь таблица условных прыжков и переходов:
JA прыжок, если выше
JAE прыжок, если выше или равно
JB прыжок, если ниже
JBE прыжок, если меньше или равно
JC Прыгает, если перенос
JCXZ прыжок, если равно нулю
JE прыжок, если равно
JG прыжок, если больше
JGE прыжок, если больше или равно
JL прыжок, если меньше
JLE прыжок, если меньше или равно
Прыжок JNA, если не выше
JNAE прыжок, если не выше или не равно
Прыжок JNB, если не ниже
JNBE прыжок, если не ниже или не равно
Переход JNC, если не выполняется перенос
JNE прыжок, если не равно
Переход JNG, если не больше
JNL прыжок, если не меньше
JNO переходит, если не переполнено
JZ прыжок если равно нулю.