Шаг 11 - JMP или прыжок

Использование этого оператора позволяет нам перемещаться по коду. То есть фактически команда JMP меняет регистр IP. Переход производится на метку. Итак, нам нужно указать команду перехода:

JMP метка

И саму метку

метка:

Давайте изменим пример шага "Шаг 3 - Программа HelloWord". Так, чтобы обойти вывод строки:

MODEL	TINY
STACK 256	
DATASEG
	Hellostr DB 'Hello First Step Site '
CODESEG		
start:	
	mov ax,@data
	mov ds,ax		
	jmp w1
	mov bx,1
	mov cx,21
	mov dx,offset Hellostr 
	mov ah,40h
	int 21h
w1:
	mov ah, 04Ch	
	mov al, 1h	
	int 21h
end start	

Мы просто переходим на метку. А теперь смотрим, как все это выглядит в отладчике:

11_1.gif (6024 b)

В результате у процессора есть точно такая же команда перехода. Нажимаем на F8 еще раз:

11_2.gif (3116 b)

Обратите внимание, что регистр IP стал 0015 в данном случае, то есть JMP указывает IP куда нужно переместить указатель команд. После выполнения указатель команд стоит по этому адресу, а ненужные команды мы проскочили.

Итак JMP позволяет нам произвольно перемещаться по коду.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.