![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
JMP имя
где операнд имя подчиняется тем же правилам, что и операнд команды CALL. Иначе говоря, он может иметь атрибут NEAR или FAR, быть прямым или косвенным. При прямом переходе команда JMP занимает три байта, если метка имя имеет атрибут NEAR, и пять байтов, если она имеет атрибут FAR. Например, команда JMP М3 занимает три байта, если метка М3 находится в том же сегменте, или пять байтов, если она находится в другом сегменте. (В последнем случае, перед сегментом команды JMP должен быть указан псевдооператор EXTRN М3: FAR, a перед сегментом, содержащим метку, - псевдооператор PUBLIC М3.) Если адрес метки находится не далее -128 или +128 байтов от адреса команды JMP, то можно сделать команду JMP двухбайтовой, указав, что ее операнд имеет тип SHORT (short — короткий). Например, команда JMP SHORT М4 займет два байта. Обычно команда JMP используется для обхода группы команд, которым передается управление из другой части программы.
Jxx - команды условной передачи управления
У микропроцессора есть 17 различных команд, которые позволяют ему передавать управление той или иной команде, в зависимости от определенных условий, например нулевого значения регистра или единичного значения флага переноса CF. Если такое условие выполнено, то микропроцессор выполнит переход; в противном случае он продолжит исполнение со следующей команды программы. То есть процессор выполняет или не выполняет переход в зависимости от состояния флагов управления. Команды условной передачи управления имеют следующий общий формат: Jx MP где х - модификатор, состоящий из одной, двух или трех букв, МР – метка точки перехода. Команды условной передачи управления занимают в памяти два байта: первый байт содержит код операции, а второй - относительный сдвиг (адрес метки перехода). Поэтому метка перехода MP должна находиться не далее -128 или +127 байтов от команды условной передачи управления. Приведем несколько примеров команд условной передачи управления: 1. ADD AL, BL JC TOOBIG осуществляется переход к метке TOOBIG, если при сложении возник перенос. 2. SUB AL, BL JZ ZERO осуществляется переход к метке ZERO, если при вычитании в регистре AL оказался нулевой результат. 3. СМР AL, BL JE ZERO осуществляет переход к метке ZERO, если значения регистров AL и BL одинаковы. (Здесь можно было бы использовать эквивалентный мнемокод - JZ, но мнемокод JE (jump if equal - перейти, если равно) в данном случае более содержателен.) 4. В зависимости от того, проверяется результат операции над числами без знака или над числами со знаком, применяются различные команды условного перехода. Предположим, что требуется перейти к метке BXMORE, если содержимое регистра ВХ имеет большее значение, чем содержимое регистра АХ. Тогда надо использовать последовательность команд СМР ВХ, АХ JA BXMORE если операнды не имеют знака, и последовательность команд СМР ВХ, АХ JG BXMORE если они имеют знак. Командам условной передачи управления могут предшествовать любые команды, изменяющие состояния флагов, но обычно они используются совместно с командой сравнения СМР.
|