Главная » Просмотр файлов » К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003)

К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 23

Файл №1114649 К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003)) 23 страницаК. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649) страница 232019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 23)

Для выполнения каядой из этих операций указанной выше команды недостаточно — ее нужно заменить последовательностью команд, приведенной на рис. 2.23. Команда сравнения Сошраге згс,е)зг выполняет операцию (згс) — (сЬГ) и устанавливает флаги условий в соответствии с полученным результатом, Она не изменяет значения ни одного из операндов.

Еще одна полезная структура данных, очень похожая на стек, называется очередью. Данные помещаются в очередь и извлекаются из нее в порядке «первым вошел — первым вышель (Р1гзт 1п Г1гзт Оцц Р1ГО). Как правило, очередь растет в направлении увеличения адресов. В этом случае новые данные добавляются в ее конец, имеющий наибольший адрес, а извлекаются таковые из начала очереди, имеющего наименьший адрес. 96 Глава 2.

Машинные команды и программы Проверка того,не содержит лн указатель стека значение больше 2000, Если это так, значит, стек пуст, н осуществляется переход к подпрограмме ЕМРТУЕККОК, выполняющей соответствующее действие 5АРЕРОР Сошраге №2000,5Р ВгапсЬ>0 ЕМРТт'ЕККОК В противном случае элемент, расположенный на вершине стека, выталкивается, а затем помещается в память по адресу 1ТЕМ Моче (5Р)+,1ТЕМ 5АРЕР()5Н Сошраге ВгапсЬк0 №1500,5Р Р()(.(.ЕККОК Проверка того, не содержит ли указатель стека значение меньше нлн равное 1500.

Если содержит, значит, стек полон. В таком случае выполняется переход к подпрограмме Р()Ы ЕККОК, осуществляющей соответствующее действие ХЕ'йг1ТЕМ,— (5Р) В противном случае в стек помещается элемент, хранящийся в памяти по адресу ХЕч(Г1ТЕМ Моче Рис. 2.23. Контроль пустого и полного стеков при выполнении операций проталкивания и выталкивания элемента: выталкивание элемента иэ стека (в); помещение элемента в стек (б) Между способами реализации стека и очереди имеются два важных различия.

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

Один нз способов удержания ее в фиксированной области заключается в использовании так называемого циклического буфера. Предположим, очереди выделена область памяти от адреса ВЕС1ХХ1ХС до адреса ЕХР. Первый элемент помещается в очередь по адресу ВЕС1ХХ1ХС, а последующим поочередно добавляющимся элементам присваиваются возрастающие адреса. Когда 2.9. Подпрограммы 97 конец очереди достигнет адреса ЕЛЧ), в начале выделенной для нее области памяти может уже образоваться свободное пространство, поскольку время от времени какие-то элементы удаляются из очереди. В таком случае указателю конца очереди снова будет присвоен адрес ВЕС?МХ?Л?С, и процесс повторится. Как и в случае стека, при выполнении операций с очередью необходимо отслеживать моменты заполнения выделенной для нее области памяти и полной очистки очереди (см.

упражнения 2.18 и 2.19). 2.9. Подпрограммы Очень часто программа должна по многу раз выполнять определенную подзадачу, но с разными значениями данных. Такая подзадача обычно называется подпрограммой. Подпрограмма может, скажем, вычислять функцию зш или сортировать список в порядке возрастания или убывания значений. Составляющий такую подпрограмму блок команд можно включать во все те места программы, где он должен выполняться. Однако на практике так никогда не поступают.

Для экономии места в память помещают только одну копию блока команд, и любая программа, которой потребуется выполнить эту подпрограмму, просто переходит к ее начальному адресу. Такой переход называется вызовом подпрограммы и выполняется в помощью команды Са11. После реализации подпрограммы работа вызывающей ее программы должна быть продолжена. В таком случае говорят, что выполняется возврагл из подпрограммы в вызывающую программу. Делается зто с помощью команды Кегпгп. Поскольку подпрограмма может вызываться из нескольких разных мест основной программы, при ее вызове где-то должен сохраняться адрес возврата. Иными словами, для обеспечения правильного возврата из подпрограммы команда Сай должна сохранить содержимое регистра РС.

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

Особой разновидностью команды перехода является команда Са!1, выполняющая такие операции, как сохранение содержимого регистра РС в регистре связи и переход по указанному в команде целевому адресу. Команда Кегпгп также является разновидностью команды перехода, но она выполняет переход по адресу, заданному в регистре связи. Этот процесс проиллюстрирован на рис. 2.24. 98 Глава 2. Машинные команды и программы Вызывающая подпрограмма Подпрограмма БПВ Адрес в памяти Адрес в памяти 200 Са11 Я??В оооо Первая команда 204 Следующая команда я — 1 Кето гп 1000 Регистр связи Кегпгп Рис.

2.24. Связывание подпрограммы через регистр связи 2.9.1. Вложенность подпрограмм и стек процессора В программировании очень распространена практика вызова одних подпрограмм из других. Такие подпрограммы, вызываемые друг из друга, называются вложенными. Если вложенные вызовы будут реализованы по описанной выше технологии, вторая команда Са11 сохранит адрес возврата в регистре связи, уничтожив его текущее содержимое, после чего возврат в исходную программу станет не возможным.

Поэтому перед вызовом очередной подпрограммы нужно где-то сохранять содержимое регистра связи. Теоретически подпрограммы могут вкладываться на любую глубину. Рано или поздно последняя вызванная подпрограмма завершит свою работу и вернет управление вызвавшей ее подпрограмме. Необходимый для этого адрес возврата — это последний адрес, сохраненный в данной цепочке вызовов подпрограмм. Иными словами, адреса возврата сохраняются и используются в порядке ?.?РО (?азг ?и Р?гзг Оцц что в переводе с английского значит япоследним вошел — первым вышелз).

Очевидно, что адреса возврата, связанные с вызовами подпрограмм, должны помещаться в стек. Многие процессоры делают это автоматически, как часть работы команды СаЦ. Для использования в качестве указателя стека (ЯР) вызовов подпрограмм выделяется отдельный регистр, именуемый стлеком процессора. Команда Са11 помещает в стек процессора содержимое регистра РС, а команда Кеьцгп вьпалкивает из этого стека адрес возврата и помещает его в РС. 2.9. Подпрограммы аа 2.9.2. Передача параметров Вызывающая программа Моче Моче СаП Моче Х,К1 К1 играет роль счетчика ЗХРМ1,К2 К2 указывает на последовательность Р1 СТАРР Вызов подпрограммы КО,Я1М Сохранение результата Подпрограмма 1.!СТАРР С1еаг 1.0 0Р АгЫ Ресгетцепг ВгапсЬ>О Кеьцтп Инициализация суммы значением О Добавление числа из последовательности КО (К2)ч-,КО К1 1.ООР Возврат в вызывающую программу Рис.

2.25. Программа, представленная на рис. 2пб, реализованная как подпрограмма; параметры передаются через регистры Если у подпрограммы много параметров, для их передачи может просто не хватить регистров общего назначения. С другой стороны, стек — структура гибкая, в него можно поместить много параметров. Следующий пример показывает, как выполняется передача параметров через стек. На рис.

2.26, а приведена та же програьтма, что и на рис. 2.16, но реализованная в виде подпрограммы Е15ТАРР. Любая другая программа может вызвать указанную подпрограмму для сложения Вызывая подпрограмму, программа должна передать ей параметры (операнды), которые будут использоваться в вычислениях, или же их адреса. Закончив свою работу, подпрограмма вернет другие параметры — результаты вычислений. Такой обмен информацией между вызывающей программой и подпрограммой называется передачей ларамалров. Передача параметров может выполняться несколькимн способами. Например, параметры можно помещать в регистры или в память, откуда подпрограмма сможет их считать.

В качестве альтернативы параметры можно поместить в стек процессора, используемый для хранения адресов возврата. Использование регистров процессора — способ простой и аффективный. На рис. 2.25 показано, как реализовать программу, представленную на рис. 2.16 (выполняет сложение последовательности чисел), в виде подпрограммы с передачей параметров через регистры. Длина последовательности п, информация о которой хранится в памяти по адресу Х, и адрес первого числа, ХПМ1, передаются подпрограмме через регистры К1 и К2.

Вычисленная подпрограммой сумма возвращается вызывающей программе через регистр КО. Соответствующую часть вызывающей программы составляют первые четыре команды из числа представленных на рис. 2.25. Первые две команды загружают в регистры К1 и К2 значения Х и ХПМ1.

Команда Са11 выполняет переход к подпрограмме, начинающейся по адресу Е1ЯТАЭР, Кроме того, зта команда помещает в стек процессора адрес возврата из подпрограммы. Подпрограмма вычисляет сумму и помещает ее в регистр КО. После возврата из подпрограммы вызывающая программа сохраняет зту сумму в памяти по адресу 50М.

Характеристики

Тип файла
PDF-файл
Размер
10,19 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее