logo
Полный текст учебника

Команды условной передачи управления

Есть 31 команда условной передачи управления (УПУ), но некоторые попарно совпадают, например: «если >» и «если не < и не =». Разных команд всего 17. Условная передача управления может быть только ближней (near) и короткой (short), то есть метка перехода должна быть в том же сегменте и не далее ±128 байтов от УПУ.

Общий формат команды:

J* метка где *— условие передачи управления.

Команда передает управление по прямому адресу — метке, если условие, указанное в команде, соблюдается; в противном случае выполняется следующая по порядку команда. Выполнение условия определяется состояниями флагов регистра F, которые установлены по результатам предыдущих формирующих условие перехода операций: арифметических, логических, сравнения и т.д.

Команды условной передачи управления могут быть знаковыми (условие проверяется с учетом знака операндов) и беззнаковыми (условие проверяется по абсолютным значениям операндов). Каким типом УПУ пользоваться, определяется по содержанию решаемой задачи и, соответственно, типами данных (знаковых или беззнаковых), над которыми выполнялись операции, формирующие условие перехода.

Надо четко различать J* без знака и со знаком. Например, пусть регистр AX содержит 11000110, а регистр BX — 00010110, и команда CMP AX, BX сравнивает содержимое этих регистров. Если данные беззнаковые, то число в AX больше, а если знаковые — то меньше (поскольку в последнем случае единица в крайнем левом разряде определяет знак числа — в AX число отрицательное).