Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
62
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

6.5. Команды передачи управления.

Позволяют изменять естественный порядок выполнения программы. С точки зрения работы процессора CS, IP регистры, хранящие адрес текущей программы передачи управления изменения содержимого IP и CS.

1) Команда безусловного перехода. Формат команды: JMP <метка>. Для перехода в другие сегменты нужно указать атрибут far. Формат команды: JMP far <метка>.

Пример:

MOV…

M1: ADD…

JMP M1

2) Команда условного перехода. Формат команды: JXX <метка> Если некоторое условие (зависящее от команды) выполняется, то происходит передача управления по метке.

Возможны командыс(см.табл.6.1):

Таблица 6.1.

Мнемоника

Формат

Комментарий

JA/JNBE

JA близ_метка

Перейти, если выше

JAE/JNB

JAE близ_метка

Перейти, если выше или равно

JB/JBAE/JC

JB близ_метка

Перейти, если ниже

JBE/JNA

JBE близ_метка

Перейти, если ниже или равно

JCXZ

JCXZ близ_метка

Перейти, если CX=0

JE/JZ

JE близ_метка

Перейти, если равно

JG/JNLE

JG близ_метка

Перейти, если больше

JGE/JNL

JGE близ_метка

Перейти, если больше или равно

JL/JNGE

JL близ_метка

Перейти, если меньше

JLE/JNG

JLE близ_метка

Перейти, если меньше или равно

JNC

JNC близ_метка

Перейти, если нет переноса

JNE/JNZ

JNE близ_метка

Перейти, если не равно

JNO

JNO близ_метка

Перейти, если нет переполнения

JNP/JPO

JNP близ_метка

Перейти, если нечетный

JO

JO близ_метка

Перейти, если перенос

JP/JPE

JP близ_метка

Перейти, если четный

JS

JS близ_метка

Перейти, если отрицательный

Здесь выше или ниже(A-above, B-below) относятся к беззнаковым операндам; больше или меньше (G-greater, L-lower) относятся к знаковым операндам.

Пример:

JE <метка>

СMP [BX], AL

JNE M1

MOV [SI], AL

M1: INC [SI]

INC [BX]

6.6. Команды организации цикла.

В качестве счётчика циклов используется регистр СХ. Исполнение: из содержимого СХ вычитается единица, после чего УУ процессора проверяет СХ на равенство нулю. Если СХ=0, то выполняется следующая (за LOOP) команда; возврат на метку.

Команда LOOP имеет следующие варианты:

Таблица 6.2.

Мнемоника

Формат

Комментарий

LOOP

LOOP близ_метка

Повторять цикл

LOOPE/LOOPZ

LOOPE близ_метка

Повторять, пока равны

LOOPNE/LOOPNZ

LOOPNE близ_метка

Повторять, пока не равны

Пример:

MOV CX, 40 ;дополним в массиве 40 байт.

……….

M1: ……….

CMP [BX], AL

LOOPNE M1

MOV [SI], AL

6.7. Команды вызова процедур и возврата из них.

Процедура –любой фрагмент программы, который имеет своё имя и завершается определённой командой.

RETкоманда возврата из процедуры.

CALL –команда вызова процедуры

Формат команды: CALL <имя процедуры>

Определение процедуры выполняется с помощью двух псевдооператоров

<имя процедуры> Proc

<имя процедуры> Endp

Процедуры бывают far-далёкие и near- близкие (near по умолчанию). Proc far – исполняется для придания ей возможности вызова из др. сегмента программы (др. программы) поэтому удобно содержимое сегмента любой программы оформлять как proc far. В пределах любой программы можно оформлять любое количество proc near.

CALL исполняется следующим образом: содержимое двух регистров CS, IP загружается в стек, а на их место в МП загружается адрес процедуры, указанный в команде CALL.

Командой RET из стека возвращаются CS и IP.

Pr1 segment

Assume CS: pr1

Mypr proc far proc ; –псевдооператор (для транслятора)

;команды (для МП)

Ret

Mypr endp

Pr1 ends

End mypr ; конец трансляции