Помощь в написании студенческих работ
Антистрессовый сервис

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

РефератПомощь в написанииУзнать стоимостьмоей работы

Во втором способе адрес новой исполняемой команды непосредственно загружается в программный счетчик. При этом он может быть взят из команды в виде двухбайтного числа, или из ячейки памяти, адрес которой указан в команде всеми возможными режимами адресации. Второй способ обеспечивает переход не только внутри текущего сегмента программы, но и в любой другой. Для этого новый адрес загружается… Читать ещё >

Команды условных и безусловных переходов (реферат, курсовая, диплом, контрольная)

Нарушение естественного порядка следования команд, когда адрес следующей выполняемой команды автоматически вычисляется программным счетчиком, осуществляется путем загрузки в программный счетчик и, при необходимости, в сегментный регистр CS новых адресов. Эти действия выполняются при помощи команд условных и безусловных переходов. Мнемоника этих команд начинается с символа J (jump).

Команды безусловного перехода имеют одну и ту же мнемонику JMP и дополнительную уточняющую информацию, определяющую дальность перехода. В командах безусловного перехода адрес новой команды может формироваться двумя способами. В нервом способе в самой команде указывается смещение относительно текущей команды, которое может быть как положительным, так и отрицательным. Адрес, загружаемый в программный счетчик, образуется путем сложения с его текущим содержимым этого смещения, или его вычитания. Смещение может быть задано как однобайтным числом, так и двухбайтным. В первом случае переход называется коротким (SHORT), отстоящим от текущего адреса не более, чем на 127, во втором случае — близким (NEAR), т. е. находящимся в одном сегменте с текущим адресом, напомним, что объем одного сегмента — 216 = 64 Кбайт.

Во втором способе адрес новой исполняемой команды непосредственно загружается в программный счетчик. При этом он может быть взят из команды в виде двухбайтного числа, или из ячейки памяти, адрес которой указан в команде всеми возможными режимами адресации. Второй способ обеспечивает переход не только внутри текущего сегмента программы, но и в любой другой. Для этого новый адрес загружается не только в программный счетчик, но и в сегментный регистр CS. Он может быть задан либо вторым двухбайтным словом, содержащимся в команде, либо содержимым двух ячеек ОЗУ, находящихся следом за ячейками с внутрисегментным адресом для программного счетчика. Такой переход называют далеким (FAR).

При транслировании команд с языка Ассемблер в машинные коды дальность перехода и тип определяются либо дополнительной информацией — SHORT NEAR или FAR, либо размером адреса (одно-, двух-, четырехбайтный). Очень часто в качестве адреса в команде дается ссылка на метку, которой помечена команда, к которой осуществляется переход:

JMP SHORT NEXT.

По этой команде адрес следующей исполняемой команды определится как сумма текущего с однобайтным смещением. Расчет смещения выполняет ассемблирующая программа по отстоянию текущей команды от команды, помеченной меткой NEXT

JMP FAR [D/]+100.

Эта команда определяет межсегментный переход. Адреса, загружаемые в программный счетчик и регистр CS, содержатся в четырех соседних ячейках ОЗУ. Адрес первой из них определяется как содержимое регистра DI плюс смещение 100.

Команды условных переходов имеют только один способ определения адреса перехода — как смещение, не более чем ±127 относительно текущего адреса. В этих командах осуществляется проверка различных условий выполнения перехода. Порядок действия МП при выполнении команды условного перехода следующий: если условие, заданное в команде, выполняется, то следующий адрес вычисляется путем сложения (вычитания) текущего содержимого программного счетчика со смещением; если же условие не выполняется, то автоматически сформированный адрес и есть адрес следующей команды. Таким образом, сохраняется естественный порядок следования команд и следующая команда стоит непосредственно за командой условного перехода.

Мнемоника команд условного перехода начинается с символа J. Затем идут символы, определяющие проверяемое условие. Проверка условий осуществляется путем анализа различных флажков — битов регистра слова состояния процессора, хранящих признаки результата предыдущей операции. Таким образом, непосредственно перед командой условного перехода обязательно должна стоять команда, с помощью которой формируются признаки результата. У одной части команд осуществляется анализ только одного признака результата — одного бита регистра флажков, у другой двух или трех битов.

Приведем мнемоники некоторых команд с их наименованиями и необходимыми пояснениями.

JZ — «Перейти, если ноль» — переход осуществляется, если результат предыдущей операции равен нулю.

JNZ — «Перейти, если не ноль» — команда противоположна команде/?.

JS — «Перейти, если знаковый бит равен 1» — переход выполняется, если результат вычитания двух операндов отрицателен.

JNS — «Перейти, если знаковый бит равен 0» — переход выполняется, если результат вычитания положителен.

В следующих четырех командах осуществляется проверка условий, соответствующих математическим операторам отношений, >, <. Эти команды предназначены для использования после команды сравнения СМР, в которой второй операнд вычитается из первого, а результат операции не сохраняется.

JL — «Перейти, если меньше».

JNL — «Перейти, если больше».

JLE — «Перейти, если меньше или равно».

JNLE — «Перейти, если больше или равно».

Команды условного перехода обычно имеют следующий обобщенный вид:

Мнемоника Метка, например JLE NEXT.

В данном примере NEXT — это метка команды, которую следует выполнить в случае выполнения условия. Она должна находиться не далее чем на ±127 относительно команды условного перехода. При трансляции ассемблирующая программа вычислит соответствующее смещение и поместит его в машинную команду. Если команда, которой следует передать управление, находится дальше или в другом сегменте, то используют конструкцию из двух команд: условного и безусловного перехода. Сначала проверяется условие с помощью команды условного перехода, которая дает ссылку на команду безусловного перехода, находящуюся вблизи ее. Затем по команде безусловного перехода осуществляется переход к нужному участку программы в любую точку памяти.

Команда для организации циклических программ LOOP.

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

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

Мнемоника Метка, например LOOP NEXT.

Здесь NEXT — это метка команды, с которой начинается цикл и которая будет исполняться следующей за командой LOOP, пока содержимое регистра СХ не станет равным нулю.

Показать весь текст
Заполнить форму текущей работой