Инструкция JB


Ассемблер для Windows Ассемблер для Windows

Рассмотрены необходимые сведения для программирования Windows-приложений на ассемблерах MASM и TASM: разработка оконных и консольных приложений; создание динамических библиотек; многозадачное программирование; программирование в локальной сети, в том числе и с использованием сокетов; создание драйверов, работающих в режиме ядра; простые методы исследования программ и др. Подробнее...

Инструкция JB выполняет короткий переход, если первый операнд МЕНЬШЕ второго операнда при выполнении операции сравнения с помощью команды CMP.

Синтаксис команды JB:

JB МЕТКА

О метках я рассказывал в статье о команде JMP. Повторяться не буду.

Инструкция JB проверяет флаг CF. Если этот флаг равен 1, то выполняется переход к МЕТКЕ.

Сама же инструкция JB при работе никакие флаги не изменяет.

Условный переход в Ассемблере

В упомянутой выше статье о команде JMP рассказано о безусловном переходе. Условный переход в Ассемблере можно выполнить с помощью нескольких инструкций, в том числе с помощью команды JB.

Но прежде чем перейти к примерам, для новичков расскажу о том, что такое условный переход.

Итак, условный переход в Ассемблере выполняется примерно по такому алгоритму:

  • Если УСЛОВИЕ ВЫПОЛНЯЕТСЯ, то перейти к МЕТКЕ
  • Если УСЛОВИЕ НЕ ВЫПОЛНЯЕТСЯ, то выполнить следующую инструкцию

Если говорить непосредственно об инструкции JB, то условием перехода к метке является CF=1 (то есть когда первый операнд меньше второго), а алгоритм её использования может быть таким:

  • Сравнить ЧИСЛО1 с ЧИСЛОМ2 с помощью команды CMP
  • УСЛОВИЕ: ЧИСЛО1 < ЧИСЛА2
  • Выполнить инструкцию JB

Пример использования команды JB приведён ниже:

	.model	tiny
	.code
	ORG 	100h
	
start:	

	MOV AL, 5      ; AL = 5
	MOV AH, 5      ; AH = 5
	CMP AL, AH     ; AL = AH, ZF = 1
	JB  lblLess
	;Так как AL = AH, то УСЛОВИЕ ПЕРЕХОДА НЕ ВЫПОЛНЯЕТСЯ
	;Поэтому будут выполнены следующие инструкции
	MOV AL, 5      ; AL = 5
	MOV AH, 6      ; AH = 6
	CMP AL, AH     ; AL < AH
	JB  lblLess
	;Так как AL < AH, то УСЛОВИЕ ПЕРЕХОДА ВЫПОЛНЯЕТСЯ
	;Поэтому следующие инструкции НЕ будут выполнены,
	;а будет переход сразу к метке lblLess
	MOV AL, 5      ; AL = 5
	MOV AH, 6      ; AH = 6
	
lblLess:	
	MOV AH, 9      ; AH = 9

	END	start

В комментариях всё подробно расписано, поэтому что-то ещё добавлять нет смысла.

В конце попробую предположить, почему эта команда ассемблера называется JB. Честно говоря, точно не знаю. Первая буква - это первая буква английского слова JUMP, которое переводится как “прыжок, переход”. А вот что означает вторая буква - это вопрос. Можно только предположить, что это тоже первая буква какого-то английского слова, например, BOTTOM (низкий). То есть название этой команды можно вольно перевести как “переход, если ниже (меньше)”.



Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика