Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программирование переходов




Примеры команд условного перехода

Введение

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

Флаги побочных результатов

1) Эти флаги напротив - редко меняются программистом, но зато: значения этих флагов самостоятельно меняет ЦП в ходе выполнения многих команд. Значения этих флагов изменяются после выполнения любой арифметической, логической команды и их новые значения – отражают некие признаки – с каким результатом завершилось выполнение команды

 

2) Пример флагов побочных результатов:

 

а) SF (Sign Flag, флаг знака)

SF=0, если в результате операции - получено положительное число.

SF=1, если -число отрицательное.

 

б) ZF (Zero Flag, флаг нуля)

ZF=0, если в результате операции – получено число не равное нулю.

ZF=1, если - равно нулю.

 

в) PF (Parity Flag, флаг чётности)

PF=0, если число с чётным весом.

PF=1, если – с нечетным.

 

г) OF (Overload Flag, флаг переполнения)

OF=0, если команда выполнилась успешно и результат - записан в нужную ячейку памяти.

OF=1, если произошло аварийное завершение команды, полученное число или слишком велико, или слишком мало – и не может быть записано в память (эту ситуацию называют "переполнение")

 

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

 

4) Очень важное значение, имеют флаги побочных результатов - при программировании условных переходов в программе. Играют особую роль – в алгоритмах выполнения команд условного перехода.

 

1) Команда условного перехода – это команда, которая в ходе своего выполнения либо выполняет переход на указанный адрес, либо не выполняет, в зависимости от выполнения или невыполнения некоторого "условия перехода".

 

2) Условием для команд условного перехода - являются определённые значения флагов регистра RF.

 

3) Процессор поддерживает множество команд условного перехода. Команды условного перехода отличаются тем значение какого именно из флагов регистра RF анализируется в ходе выполнения данной команды, и какое именно значение флага, 0 или 1 – считаются выполнением условия перехода.

 

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

JMP XX #Adr, где ХХ – код условия перехода, некоторое число, показывающее какой именно значение и какого из флагов флаг считается выполнением условия перехода. #Adr – как и в команде безусловного перехода: адрес перехода заданный непосредственным методом адресации.

 

JMP Z #Adr – команда называется "перейти если ноль". В ходе выполнения команды будет анализироваться флаг ZF. Выполнением условия перехода при выполнении этой команды считается: флаг нуля ZF=1.

 

JMP NZ #Adr – команда называется "перейти если не ноль". В ходе выполнения команды будет анализироваться флаг ZF. Выполнением условия перехода при выполнении этой команды считается: флаг нуля ZF=0.

 

Подобные же команды – и для остальных флагов побочных результатов. По аналогии с предыдущими двумя командами ещё несколько примеров. Опишем короче, указав только название команды да условие перехода.

 

 

JMP S #Adr – "перейти если знак" (SF=1)

JMP NS #Adr – "перейти если нет знака" (SF=0).

JMP P #Adr – "перейти если чётный" (PF=1)

JMP NP #Adr – "перейти если нечётный" (PF=0)

JMP O #Adr – "перейти если переполнение" (OF=1)

JMP NO #Adr – "перейти если нет переполнения" (OF=0)

 

 

3.9.3 Алгоритм команды JMP XX #Adr

Поскольку эта команда предполагает ветвление в ходе выполнения алгоритма выполнения команды – снова используем блок-схему:

 

 

Микрооперации 1,2: стандартные микроопереции начала выполнения команды. Смотрите [3.6.2]

 

Микрооперация 3: проверка значения одного из флагов флага регистра RF, того самого определённое значение которого и является условием перехода для данной разновидности команды JMP XX #Adr.

 

Микрооперация 4а: если условие выполнилось - осуществляет переход, адрес перехода переписывается в регистр РС, как это имело место и при выполнении команды JMP #Adr.

 

Микрооперация 4б: если условие не выполнилось – переход не осуществляется. Выполняется обычная "стандартная" предпоследняя микрооперация завершения команды. В программный счетчик заносится адрес следующей по порядку размещения в ОЗУ команды, точно так, как это было описано в [3.6.2], и как и происходит при выполнении большинства команд ЭВМ – любых команд не связанных с изменением последовательности выполнения команд. С

 

Микрооперация 5: стандартная последняя микрооперация завершения команды. [3.6.2]

 

 

1) Переход программируется последовательностью из двух команд:

 

Первая в последовательности – возможно, какая из логических или арифметических команд. Необходима, чтобы "сформировать условие перехода", в ходе ее выполнения - получают значения флаги побочных результатов

 

Вторая в последовательности – одна из команд семейства JMP XX #Adr - осуществляет (или не осуществляет) сам переход.

 

 

2) Рассмотрим на примере. Пусть имеется строка на языке высокого уровня:

IF A>B THEN метка

 

Тогда на машинном языке это выражение будет представлено последовательностью из двух команд:

SUB memB, memA (1)

JMP S Adr (2)

 

 

Комментарии к командам:

 

(1) SUB memA, memB – В вычитаем из A. memA, memB - адреса памяти, где записаны соответственно A и B. Основной результат выполнения нас не важен, важно то, что флаг SF установиться в 1 только если условие перехода A>B выполняется.

(2) Переход на адрес Adr – переход состоится, только если в ходе выполнения первой команды последовательности - флаг SF был установлен в 1.

 




Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 1892; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.