Команда JBE


Как выучить английский Как выучить английский

В наше время любой человек должен знать английский язык. А тем более программист. Потому что довольно большая часть документации существует только на английском. А профессионал не может ждать, пока кто-то переведёт ему документацию. Он должен уметь быстро получать нужную инфорамцию и использовать её, независимо от того, на каком она языке - на английском или на русском... Ссылки на курсы по английскому...

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

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

JBE МЕТКА

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

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

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

Как видите, от инструкции JB эта команда отличается только тем, что проверяет не один, а два флага - CF и ZF. То есть если инструкция JB выполняет переход, если меньше, то инструкция JBE выполняет переход в любом из двух случаев:

  1. Если первый операнд меньше второго
  2. ИЛИ первый операнд равен второму

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

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

	.model	tiny
	.code
	ORG 	100h
	
start:	

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

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

В конце попробую предположить, почему эта команда ассемблера называется JBE. Возникновение сокращения JB я попытался разъяснить здесь. А буква Е - это первая буква слова EQUAL (одинаковый, равный). Таким образом набор слов, от которых взяты первые буквы имени команды JBE, можно перевести как “переход, если меньше или равно”.



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

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