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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Подпрограмма представляет собой фрагмент программы, обращение к которому может иметь место в любой точке главной программы. Для перехода к подпрограмме в ЭВМ существуют команды безусловного и условного перехода к подпрограмме (ПП и ППУ). Их особенностью является то, что помимо перехода они должны обеспечить по окончании подпрограммы возврат к исходной программе, к той ее точке, откуда был совершен переход.

Ниже будут рассмотрены только команды безусловного перехода к подпрограмме (ПП), поскольку на практике они встречаются наиболее часто. Кроме того, отличие команд ПП и ППУ такое же, как и отличие команд БП и УП, т.е. перед выполнением команды ППУ происходит проверка какого-либо признака результата из РгС (регистр состояния).

Рассмотрим подробнее операции, необходимые для выполнения команды ПП в предположении, что длина команды L = 2 байта и используется прямая адресация. Эти операции поясняются схемой, приведенной на рис. 4.18.

Перед выполнением команды ПП формируется адрес возврата (Авозвр), т.е. (СчК) = (СчК) + L (в данном случае это адрес N+2). Затем Авозвр запоминается в ячейке памяти (регистре), адрес которой (которого) в явной или неявной форме указан в команде ПП. Затем в СчК заносится содержимое адресного поля команды ПП, т.е. адрес начала подпрограммы (А). В конце подпрограммы размещается команда возврата, которая фактически является командой БПК (безусловный косвенный переход), указывающая путем косвенной адресации (через ячейку ОП или регистр) адрес ячейки ОП, куда надо возвратиться для дальнейшего выполнения основной программы. В данном случае косвенная адресация осуществляется через регистр Рг.

 

 

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

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

Кроме того, с командами ПП связаны также некоторые проблемы в использовании внутренних регистров процессора. Необходимо обеспечить, чтобы подпрограмма ни в одном регистре не изменяла содержимого (особенно РгС), которое после возврата потребуется вызывающей программе. Для этого содержимое регистров, используемых подпрограммой, требуется временно запомнить, а по окончании подпрограммы – восстановить. Обычно для такого временного хранения удобно также использовать стек. Служебные действия по запоминанию и восстановлению содержимого регистров можно включить в вызывающую программу или в подпрограмму. Практика программирования показала, что их удобнее включать в подпрограмму, чтобы эти операции были записаны один раз в теле подпрограммы, а не каждый раз при ее вызове. Следует отметить, что в некоторых современных процессорах при выполнении команды ПП предусмотрено автоматическое сохранение в стеке содержимого не только СчК, но и определенных групп внутренних регистров, что упрощает процедуру разработки подпрограмм.

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

ИНДЕКСАЦИЯ

Характерным моментом в процессе переработки информации в ЭВМ является цикличность вычислительных процессов, при которых одни и те же операции могут выполняться над различными операндами, расположенными упорядоченно в памяти (т.е. над элементами некоторых информационных массивов). На рис. 4.19 в качестве простого примера показан одномерный массив данных, в котором подлежащие обработке операнды a0, a1 … ak-1 расположены последовательно, со сдвигом на q ячеек. Для обработки элементов такого массива необходимо, чтобы исполнительные адреса команд, вызывающих эти элементы, изменялись при каждой итерации цикла. Как уже отмечалось, для этой цели можно использовать механизм косвенной адресации, что, однако, требует относительно больших временных затрат.

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

 

 

 

 

Контроль окончания циклических вычислений производится двумя способами:

· По числу итераций цикла, т.е. по содержимому некоторого счетчика, изменяемому на 1 при каждой новой итерации цикла.

· Путем задания некоторого предела для изменения модифицируемого исполнительного адреса.

Автоматическая модификация команд и управление вычислительными циклами в современных ЭВМ обеспечиваются механизмом индексации. Это понятие включает в себя специальный способ кодирования команд, командные и аппаратные средства задания и выполнения модификации исполнительного адреса и управления вычислительными циклами. Перечисленные средства в целом называются также индексной арифметикой.

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

Для выполнения индексации в ЭВМ вводят индексные регистры, в качестве которых могут использоваться либо регистры внутренней памяти процессора, либо внешние по отношению к нему специальные быстродействующие регистры. В некоторых ЭВМ предусмотрена возможность при определенных условиях в качестве индексных регистров использовать ячейки ОП. В общем случае при использовании механизма индексации в АК команды выделяют три поля: B – номер базового регистра, D – смещение, X – номер индексного регистра. Исполнительный адрес при индексации формируется путем сложения смещения (D), содержимого индексного регистра (I), а при наличии базирования – и базового адреса (АБ). Именно этот характерный случай показан на рис. 4.20.

В ряде случаев базовые и индексные регистры назначаются программистом из некоторого общего массива регистровой памяти. Операция получения АИ выполняется либо в АЛУ процессора, либо в специальном сумматоре блока индексной арифметики, что повышает быстродействие ЭВМ, но и увеличивает объем оборудования.

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

Для управления индексацией используются команды, задающие операции над содержимым индексных регистров – команды индексной арифметики. Основные виды индексных операций следующие:

· засылка в соответствующий индексный регистр начального значения ин­декса;

· изменение индекса;

· проверка окончания циклических вычислений.

Очень коротко рассмотрим последние два типа команд.

Изменение индекса состоит в сложении (вычитании) значения индекса с фиксированным приращением, производимым каждый раз при повторении цикла. Команда изменения индекса указывает номер индексного регистра, а также значение и знак (либо адрес) приращения. Если приращение всегда фиксировано и равно, например, 1 или L (длина слова в байтах), то используются команды с подразумеваемым операндом.

Для проверки окончания цикла используют или обычную команду перехода по условию, налагаемому в этом случае на какую-либо переменную, изменяющуюся в процессе вычислений, или специальные команды "УП по счетчику" (УПС) и "УП по индексу" (УПИ).

 

"Условный переход по счетчику" (УПС)

Счетчиком служит обычно один из индексных регистров, в который перед началом цикла загружается число итераций цикла. Возможная структура команды показана на рис. 4.21, а.

 

 

В данном случае счетчик организован на индексном регистре R1. Пусть для адресации сегмента кодов команд используется базирование, тогда адрес АИ = (В) + D является адресом начала цикла. Команда УПС уменьшает содержимое регистра R1 на 1 при каждой итерации цикла. В случае неравенства содержимого счетчика нулю ((R1) ¹ 0) осуществляется переход на АИ, т.е. в начало цикла. Если (R1) = 0, то осуществляется переход к команде, следующей по порядку за командой УПС, т.е. выход из цикла.

 

"Условный переход по индексу" (УПИ)

Возможная структура команды показана на рис 4.21, б. Пусть R1 – номер индексного регистра, а R2 – номер регистра, хранящего приращение. Регистр, в котором хранится предельное значение индекса, имеет подразумеваемый адрес и, следовательно, должен быть фиксированным для данного процессора. Пусть это будет регистр, следующий по порядку за регистром, хранящим приращение, т.е. R3. Команда УПИ складывает содержимое регистров R1 и R2, помещает результат сложения в R1 и сравнивает его с содержимым R3. Если результат сложения меньше или равен содержимому R3, то управление передается по адресу АИ = (В) + D, т.е. происходит повторение цикла. В противном случае выполняется переход к команде, следующей по порядку за командой УПИ, т.е. выход из цикла.

Специальные команды индексной арифметики имеют, как правило, аппаратную реализацию, что позволяет свести к минимуму временные затраты на модификацию исполнительных адресов команд и операндов, связанных с управлением вычислительными циклами.

Рассмотренный выше механизм индексации можно назвать классическим. В современных ЭВМ используются различные его модификации, причем во многих случаях он не присутствует в чистом виде, а реализуется через другие механизмы организации вычислительного процесса. Кроме того, следует иметь в виду, что назначение полей адресного кода (B, D, X) зависит от архитектуры ЭВМ, разрядности машинного слова, системы команд, терминологии, используемой конкретным производителем ЭВМ в технической документации.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ

1. В чем отличие машинной команды от машинной операции? Перечислите основные группы машинных команд.

2. Опишите и изобразите структуру машинной команды.

3. Почему при проектировании ЭВМ важно выбрать оптимальную структуру и форматы команд?

4. Какими бывают структуры машинных команд?

5. В каком случае используется безадресная структура машинной команды?

6. Чем отличаются способы адресации "подразумеваемый операнд" и "подразумеваемый адрес"?

7. Опишите регистровую адресацию.

8. Какие существуют варианты формирования исполнительного адреса при базировании?

9. Как происходит адресация памяти в случае с косвенной адресацией?

10. Опишите автоинкрементную/автодекрементную адресацию.

11. Приведите способы реализации стека.

12. Как происходят операции чтения и записи числа в "перевернутый стек"?

13. Что происходит в результате выполнения команды БП?

14. Опишите структуру команды УП.

15. Как выполняется команда безусловного перехода к подпрограмме?

16. Зачем нужны индексные регистры?

17. Приведите пример использования механизма индексации.

18. Для чего используется механизм автоматического изменения исполнительных адресов команд?

19. Перечислите типы индексных операций.

20. Какие типы команд используются для проверки окончания цикла при индексации?

КОНТРОЛЬНЫЕ ЗАДАНИЯ

1. На листах ответа должны быть указаны номер группы, фамилия студента и номер его варианта.

2. Номера вопросов выбираются студентом в соответствии с его двумя последними цифрами в зачетной книжке. В табл.4.1 аn-1 – это предпоследняя цифра номера, аn – последняя цифра. В клетках таблицы стоят номера вопросов, на которые необходимо дать письменный ответ.

 

Номера вопросов Таблица 4.1

an an-1                    
  1,5,9, 13,16 2,6,10, 14,17 3,7,11, 15,18 4,8,12, 13,19 1,9,11, 14,20 2,10,12, 15,18 3,5,8, 13,17 4,6,7, 14,19 1,8,10, 13,17 2,5,7, 14,18
  3,6,8, 15,19 4,7,9, 13,16 1,5,12, 14,20 2,6,11, 15,16 3,7,10, 13,17 4,8,9, 14,18 1,7,12, 13,18 2,8,10, 14,19 3,5,11, 15,20 4,6,9, 13,17
  2,7,9, 13,20 1,8,11, 15,19 4,5,10, 15,17 3,6,12, 14,16 1,5,9, 13,16 2,6,10, 14,17 3,7,11, 15,18 4,8,12, 13,19 1,9,11, 14,20 2,10,12, 15,18
  3,5,8, 13,17 4,6,7, 14,19 1,8,10, 13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16 1,5,12, 14,20 2,6,11, 15,16 3,7,10, 13,17 4,8,9, 14,18
  1,7,12, 13,18 2,8,10, 14,19 3,5,11, 15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11, 15,19 4,5,10, 15,17 3,6,12, 14,16 1,5,9, 13,16 2,6,10, 14,17
  3,7,11, 15,18 4,8,12, 13,19 1,9,11, 14,20 2,10,12, 15,18 3,5,8, 13,17 4,6,7, 14,19 1,8,10, 13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16
  1,5,12, 14,20 2,6,11, 15,16 3,7,10, 13,17 4,8,9, 14,18 1,7,12, 13,18 2,8,10, 14,19 3,5,11, 15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11, 15,19
  4,5,10, 15,17 3,6,12, 14,16 1,5,9, 13,16 2,6,10, 14,17 3,7,11, 15,18 4,8,12, 13,19 1,9,11, 14,20 2,10,12, 15,18 3,5,8, 13,17 4,6,7, 14,19
  1,8,10, 13,17 2,5,7, 14,18 3,6,8, 15,19 4,7,9, 13,16 1,5,12, 14,20 2,6,11, 15,16 3,7,10, 13,17 4,8,9, 14,18 1,7,12, 13,18 2,8,10, 14,19
  3,5,11, 15,20 4,6,9, 13,17 2,7,9, 13,20 1,8,11, 15,19 4,5,10, 15,17 3,6,12, 14,16 1,5,9, 13,16 2,6,10, 14,17 3,7,11, 15,18 4,8,12, 13,19

 



Поделиться:


Последнее изменение этой страницы: 2016-12-09; просмотров: 748; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.160.61 (0.033 с.)