Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Другой способ безусловного перехода (программирование перехода на динамический адрес)

Введение

Безусловный переход

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

Примером команды безусловного перехода является команда JMP #Adr

 

Где: #Adr – адрес перехода задаваемый непосредственным способом адресации [3.4.6]

 

3.7.2 Алгоритм JMP #Adr

Алгоритм на языке ЯОМО на этот раз - запишем в упрощённой форме, не используя блок схему:

  RC <– [PC]
  Дешифрация
  PC ß #Adr
  Проверка INT

Алгоритм очень прост:

Микрооперации 1, 2: стандартные. Описаны [3.6.2]

Микрооперация 3: единственная уникальная микрооперация команды. Адрес перехода из единственного поля атрибута команды копируется в программный счётчик PC. Этим – и обеспечивается "переход" – выполнение в следующем командном цикле команды размещённой по адресу #Adr.

Микрооперация 4: стандартная. Смотрите - [3.6.2]. Заметим что другая стандартная микрооперация завершения – увеличение PC на величину Lk - не выполняется. Оно и понятно: ведь следующая исполняемая команда после JMP #Adr не следующая по порядку размещения в программе, а команда по адресу Lk, её адрес – уже в программном счётчике.

 

Замечу: Вам нужно научится не "запоминать" - а понимать - почему те или иные микрооперации присутствуют в командах, тогда и алгоритмы команд – покажутся вам очень "лёгкими", и вы без труда сможете воспроизводить алгоритм выполнения любой команды.

 

 

3.7.3 Недостаток команды JMP #Adr

1) Заметим – адрес перехода в команде JMP #Adr задан непосредственным методом адресации. Непосредственный метод адресации – пригоден только для констант. Это означает: изменить по ходу программы адрес перехода – невозможно. Адрес на который будет осуществлять переход команда JMP #Adr определяется не по ходу выполнения, а на этапе трансляции программы, про это говорят "определяется статически". Про такой переход говорят "статический переход".

 

2) Иногда в программах требуется другой тип перехода - так называемый "переход на динамический адрес" или ещё говорят "динамический переход". Переход на динамический адрес – это переход на адрес который вычисляется уже по ходу выполнения программы (говорят –"на этапе выполнения") Если для программирования таких переходов непригодна команда JMP #Adr – приходится использовать другой способ.

 

1) Заметим – переход в подпрограмме вызовет не только команда JMP, но и любая другая команда – что изменит значение программного счётчика РС. Например - команда пересылки MOV PC mem. Команда занесёт в программный счётчик слово считанное из ячейки памяти mem и вызовет тем самым переход. Воспользуемся этой командой для программирования динамического перехода.

В нашей программе:

А) Сначала вычислим адрес перехода, и поместим его в ячейки памяти по адресу mem. (mem – любой адрес памяти не занятый другими данными)

В) Командой MOV PC mem выполним переход на адрес прописанный в ячейке mem.

 

2) Следует только учесть, что команда MOV – не является "специальной" командой перехода, и как большинство команд, в ходе выполнения предпоследней из микроопераций - увеличит PC на величину длинны команды MOV. Смотрите [3.6.2] Поэтому переход получится "немного не туда" - вместо перехода на адрес хранящийся в ячейке mem, произойдёт переход на адрес, на L k - больший. Чтобы этого не произошло – поступаем просто: вычисляя адрес перехода, уменьшим его на величину L k команды MOV (так называемая "коррекция адреса"), вот переход как раз и получится – на нужный адрес перехода.

 

 

<== предыдущая лекция | следующая лекция ==>
Алгоритм (последовательность) выполнения большинства команд | Флаги побочных результатов
Поделиться с друзьями:


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


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



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




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