Команды условных переходов способны передавать
Команды условных переходов способны передавать управление на метку, расположенную в пределах ближайших плюс-минус 128 байт от самой команды. Если нужно передать управление на метку, расположенную дальше в том же сегменте, или на метку в другом сегменте, сразу за командой условной передачи располагают безусловную команду JMP или CAL, например:
стр ах,0 {Проверяем АХ}
jne@NotZero {AX=0 ?}
jmp IsZero {Да - переходим на дальнюю метку}
....... {Нет - продолжаем работу}
.......
В таблице термин «выше/ниже» используется применительно к сравнению беззнаковых операндов, а «больше/меньше» - знаковых.
Поскольку условные переходы реализуют ветвление программы на основе проверки флагов, обычно непосредственно перед ними располагаются команды, изменяющие эти флаги, чаще всего - команда сравнения СМР. Ниже показаны комбинации СМР - условный_переход для различных соотношений приемника и источника (первого и второго операнда) команды СМР:
Например:
сmр ах,5 {АХ>5 ?}
ja @AboveS {Да, больше - переходим}
стр bх,- 3 {ВХ<=-3 ?}
jle @LessM3 {Да, меньше или равен}
Команды LOOP/LOOPE/LOOPNE служат для организации циклов. Все они используют содержимое регистра СХ как счетчик числа повторений. Команда LOOP уменьшает СХ на единицу и передает управление на метку начала цикла, если содержимое этого регистра отлично от нуля. Команды LOOPE/LOOPNE также уменьшают счетчик СХ, но передают управление в начало цикла при совместном условии установки (или сброса) флага ZF и неравенства нулю счетчика СХ.
Вот как, например, можно отыскать нулевой байт в массиве АОВ:
var
АОВ: array [1..1000] of Byte;
.......
asm
mov ex, It)00 {Инициируем счетчик СХ}
lea bx,AOB {Помещаем адрес АОВ в ВХ}
dec bx {Готовим цикл}
{Здесь начало цикла проверки}
@@Test: inc bx {Адрес очередного байта}
cmp BYTE PTR [bx],0 {Проверяем байт}
loopne ©Test {Замыкаем цикл}
jnz ©NotZero {Если не найден нулевой байт}
....... {Нашли нулевой байт}
end;
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий