Программирование на Ассемблере

Команды безусловного перехода


Делятся на команды прямого перехода и команды косвенного перехода, на команды короткие и длинные. Команды прямого перехода требуют, чтобы в команде перехода стояла метка, определенная в данном модуле.

Команды косвенного перехода в качестве операнда принимают адрес с адресом перехода.

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

Общий вид команд безусловного перехода:

JMP     [SHORT] операнд

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

ideal

p586

model   flat

extrn ExitProcess:proc

dataseg

pm1     dd      m4, m5, m6

codeseg



begin:

; Короткий переход. Команда занимает 2 байта

jmp    short m1

m1:

; Обычный переход. Команда занимает 5 байтов

jmp    m2

m2:

m3:

; Использование косвенного перехода.

; Переход на метку m4, m5,  m6 или m7 в зависимости от содержимого

; регистра  EAX  

        mov     eax, 1; goto m4

        jmp     [pm1+eax*4]

m4:     mov     ebx, 4

        jmp     short m7

m5:     mov     ebx, 5

        jmp     short m7

m6:     mov     ebx, 6

        jmp     short m7

m7:

call    ExitProcess

end     begin

Заметим, что в случае ссылки назад, когда метка находится выше, чем команда перехода, слово short

можно не писать, тип перехода определит компилятор.



Содержание раздела