Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная по ЭВМ / 3-МУ_Асс-арифм.doc
Скачиваний:
15
Добавлен:
20.02.2016
Размер:
169.98 Кб
Скачать
    1. Безусловный переход

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

Безусловный переход (jump): JMP op

Операнд op указывает адрес перехода.

Команда перехода не меняет флаги.

Прямой безусловный переход: JMP <метка>

Операнд <метка> - метка команды, на которую надо передать управление:

ПРИМЕР

M: ADD AX, BX

JMP L ; переход «вперед»

...

L: MOV АХ, 0

JMP М ; переход «назад»

В машинной команде указывается не адрес перехода (метки), а разность адресов перехода и текущего (из регистра IP).

Если переход «назад», то величина разности при трансляции известна (подсчитывается), если «вперед» - формируется команда (3 байта) длинного перехода. Если заранее известно, что переход «вперед» будет коротким, и жалко терять байт на запись команды, используют оператор SHORT .

ПРИМЕР

JMP L ; длинный переход (3 байта)

JMP SHORT L ; короткий переход (2 байта)

...

L: ...

Если в программе указан оператор SHORT, а переход на самом деле оказался длинным, тогда Ассемблер зафиксирует ошибку.

    1. Команда сравнения

Сравнение (compare): CMP op1, op2

Операнды должны быть одного типа, их допустимые комбинации такие же, как у команд пересылки, сложения и вычитания (см. п 2.3).

Команда эквивалентна команде вычитания SUB op1, op2, но вычисленная разность op1 - op2 никуда не записывается. Разность, другими словами соотношение операндов, характеризуется величинами флагов CF, PF, AF, ZF, SF и OF.

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

2.11.1 Если переход осуществляется только при выполнении некоторого условия, он называется условным.

Команды условного перехода: Jxx <метка>

<Метка> указывает команду, на которую надо сделать переход в случае выполнения некоторого условия, обозначенного хх.

Команды условного перехода делят на три группы:

  • ставятся после команды сравнения;

  • реагируют на значение определенного флага;

  • зависят от значения регистра СХ.

2.11.2 При описании условия хх, при котором выполняется переход, используются следующие сокращения:

Е – equal (равно)

N - not (не - отрицание)

G

для чисел со знаком

– greater (больше)

L – less (меньше)

А

для чисел без знака

– above (выше, больше)

В below (ниже, меньше)

Команды, используемые после сравнения, приведены в таблице 2.5.

Таблица 2.5 – Команды условного перехода первой группы

Мнемокод

Содержательное условие для перехода после СМР ор1, ор2

для любых чисел

JE

op1 = op2

JNE

op1 ≠ op2

для чисел со знаком

JL / JNGE

op1 < op2

JLE / JNG

op1 ≤ op2

JG / JNLE

op1 > op2

JGE / JNL

op1 ≥ op2

для чисел без знака

JB / JNAE

op1 < op2

JBE / JNA

op1 ≤ op2

JA / JNBE

op1 > op2

JAE / JNB

op1 ≥ op2

2.11.3 Команды, выполнение которых зависят от значений флагов, перечислены в таблице 2.6

Таблица 2.6 – Команды условного перехода второй группы

Мнемокод

Условие перехода

Мнемокод

Условие перехода

JZ

ZF=1

JNZ

ZF=0

JS

SF=1

JNS

SF=0

JC

CF=1

JNC

CF=0

JO

OF=1

JNO

OF=0

JP

PF=1

JNP

PF=0

Замечание: следующие пары мнемокодов эквивалентны: JE и JZ, JNE и JNZ.

2.11.4 Одна команда, выполнение которой зависит от значения регистра СХ:

JCXZ <метка> (jump if CX is zero)

Переход выполняется, если регистр СХ равен нулю.

С помощью команд условного перехода можно передать управление не далее, чем на 127-128 байтов вперед или назад. Это примерно 30-40 команд (в среднем одна команда занимает 3-4 байта). Для осуществления «дальних» условных переходов надо привлекать команду безусловного перехода.

Соседние файлы в папке Контрольная по ЭВМ