Команда JLE


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

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

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

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

JLE МЕТКА

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

Инструкция JLE проверяет флаги SF, OF и ZF. Переход выполняется, если

  • SF не равен OF
  • или ZF = 1

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

Инструкция JLE входит в список команд условного перехода, но, в отличие от многих из этих команд, может работать и с отрицательными числами.

Если вы помните, то команда JBE делает то же самое, то есть выполняет переход, если первый операнд меньше или равен второму. Однако команда JBE может работать только с положительными числами, в то время как JLE - как с положительными, так и с отрицательными.

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

	.model	tiny
	.code
	ORG 	100h
	
start:	

	MOV AL, -5      ; AL = -5
	MOV AH, 0       ; AH = 0
	CMP AL, AH      ; AL < AH, ZF = 0, CF = 0
	JBE lblJBE
	;Так как AL < AH, то УСЛОВИЕ ПЕРЕХОДА ВЫПОЛНЯЕТСЯ
	;Но команда JBE не работает с отрицательными числами,
	;поэтому следующие инструкции БУДУТ выполнены,
	;а перехода к метке lblJBE НЕ будет
	MOV AH, 20
	
lblJBE:		
	MOV AL, -5      ; AL = -5
	MOV AH, 0     	; AH = 6
	CMP AL, AH     	; AL < AH, ZF = 0, CF = 1
	JLE lblJLE
	;Так как AL < AH, то УСЛОВИЕ ПЕРЕХОДА ВЫПОЛНЯЕТСЯ
	;Поэтому следующие инструкции НЕ будут выполнены,
	;а будет переход сразу к метке lblJLE
	MOV AH, 20
	
lblJLE:		
	MOV AH, 15
	
	END	start

Для сравнения здесь также показана инструкция JBE с теми же параметрами. Однако, в случае с JBE не будет перехода к метке, хотя AL < AH, потому что инструкция JBE не работает с отрицательными числами.

А вот команда JLE выполнит переход к метке, потому что она сможет понять, что в AL находится отрицательное значение, которое, разумеется, меньше нуля (меньше числа в регистре AH).

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

В конце, как всегда, расскажу, почему эта команда ассемблера называется JLE. Буква J - это первая буква слова слова JUMP (прыжок, переход), буква L - это первая буква слова LESS (меньше, менее, ниже). А буква Е - это первая буква слова EQUAL (одинаковый, равный). Таким образом набор слов, от которых взяты первые буквы имени команды JLE, можно перевести как “переход, если меньше или равно”.



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

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