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

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

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

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

Эти две подпрограммы можно использовать для чтения с клавиатуры строки символов, сохранейия ее в памяти и вывода на экран, как зто делалось в программе, представленной на рйс. 3.9. Данная программа написана на основе программы, приведенной на рис. 2.20. Предполагается, что в регистре КО содержится адрес первого байта области памяти, в которой будет храниться строка. Регистры с К1 по К4 используются так же, как в описанных выше циклах КЕА?) т!?ГА?Т и ??гК?ТЕ1!?гА?Т. Первая команда сохранения (БТКВ) помещает считанный с клавиатуры символ в память. В ней используется постиндексный режим адресации, с помощью которого выполняется проход по области памяти, — так же, как при помощи автоинкрементного режима адресации, задействованного в упоминаемой программе из главы 2.

Команда ТЕ Я (Тезт 1? ЕЧпа! — проверка, если равно) проверяет, равны ли два операнда, и соответствующим образом устанавливает флаг кода условия Х. 3.6. Подпрограммы 147 3.6. Подпрограммы Для вызова подпрограммы предназначена команда ВЕ (ВгапсЬ апг[ Еш)с — переход с возвратом). Она действует так же, как любая другая команда перехода, и имеет один дополнительный шаг.

Адрес возврата, который является адресом следующей за ВЕ команды, загружается в регистр К14, выполняющий функции регистра связи. Поскольку подпрограммы могут быть вложенными, содержимое регистра связи может быть сохранено подпрограммой в стеке. В качестве указателя на стек обычно используется регистр К13. Обратимся к рис. 3.10. Здесь приведена та же программа, что и на рис. 3.7, но оформленная в виде подпрограммы. Параметры ей передаются через регистры. Вызывающая программа передает подпрограмме размер списка чисел и адрес его первого элемента в регистрах К1 и К2, а подпрограмма возвращает ей сумму в регистре КО. Кроме того, подпрограмма использует регистр КЗ.

Поэтому его содержимое вместе с содержимым регистра связи К14 сохраняется в стеке командой ЗТМРР. Суффикс РР в этой команде указывает на то, что стек увеличивается в направлении уменьшения адресов и что указатель стека К13 перед проталкиванием очередного элемента должен уменьшаться. Команда ЕРМРР восстанавливает содержимое регистра КЗ, а затем проталкивает сохраненный адрес возврата в регистр РС (К15), автоматически выполняя операцию возврата. Вызывающая программа 1.РК 1.РК ВЕ 5ТК К1,Х К2,РО1ХТЕК 1.15ТАРР КО,51) М Подпрограмма 1.СТАРР ЗТМРР К13)ЗКЗ,К14) Сохранение КЗ и адреса возврата из К14 в стеке с использованием К13 как указателя стека МОЪ' 1.РК АРР 51)В5 ВОТ ЮМРР КО,ФО КЗ,[К2),ГГ4 КО,КО,КЗ К1,К1,7Г1 1.ООР К13ЦКЗ,К15) Восстановление КЗ н загрузка адреса возврата в РС (К15) Рис.

3.10. Программа с рис. 3.7, реализозаннав в виде подпрограммы, в которой параметры передаютси через регистры На рис. 3.11, а показана та же программа, что и на рис. 3.7, оформленная, опять-таки, в виде подпрограммы, правда, в данном случае параметры передаются через стек. Первые четыре команды вызывающей программы проталкивают в стек параметры ХБМ1 и ж Мы предполагаем, что значение Х15М1 содержится в памяти по адресу РОВчТЕК. Регистры КΠ— КЗ используются так же, как в подпрограмме с рис. 3.7. Их содержимое сохраняется в стеке первой командой подпрограммы вместе с адресом возврата, хранящимся в регистре К14.

На рис. 3.11, б приведено 148 Глава 3. Системы команд процессоров АПМ, Мо1ого(а и!п1е! содержимое стека в разные моменты работы программы. После помещения параметров в стек и выполнения команды вызова подпрограммы В?. вершина стека располагается на уровне 2, а после сохранения всех регистров первой командой подпрограммы она оказывается на уровне 3.

Следующие две команды загружают параметры из стека в регистры К1 и К2. Смещение значений и и ?ч[??М1, равное 20 и 24 байтам, задается относительно текущей вершины стека (то есть относительно уровня 3). Вычисленная в регистре КО сумма значений сразу же помещается командой ЯТК в стек на место параметра ?ч[??М1.

(Вершина стека располагается на уровне Вызывающая программа 1ВК КО,РО??ьТЕК ЯТК КО,[К13.№ — 4)! 1ВК КО,?ч ЯТК КО,[К13,№-4)! В1. ?.?ЯТАВВ 1.ВК КО,[К13,№4) 1, как показано нюке.) Проталкивание ?ч??М1 в стек Проталкивание значения и в стек Сохранение суммы в памяти по адресу Б??М БТК КО,ЗПМ АВВ К13,К13г№8 Удаление параметров из стека Сохранение регистров Загрузка параметров из стека Помещение суммы в стек Восстановление регистров и возврат Уровень 3 — ь Уровень 2 — ы Уровень 1 — ь Рис. 3.11. Программа с рис. 3.7, реализованная в виде подпрограммы, в которой параметры передаются через стек: главная программа и подпрограмма (а); вершина стека в разные моменты времени (6) Подпрограмма ?.?ЯТАВВ ЯТМЕВ 1.ВК 1.ВК МОЪ' 1.ВК АВВ БЕВУ ВОТ БТК ?.ВМРВ К13),(КО-КЗ,К14) К1,[К13,№20) К2,[К13,№24) КО,№О Ю,[К2),№4 КО,КО,КЗ К1,К1,№1 1.00Р КО,[К13,№24) К13(,[КО-Ю,К15) 3.6.

Подпрограммы 149 Комментарии Адрес памяти Команды Вызывающая программа (Ма!и) Помещение параметров в стек Сохранение результата выполнения подпрограммы ЗПВ1 2024 2028 2032 ЗТК К1О,КЕБЫ Т АПР ЗР,ЗР,№8 Следующая команда Удаление параметров из стека Первая подпрограмма 2100 Я!В1 ЗТМР?) 2014 АПЕ! 2108 1ЛЖ 2112 ЕЕ!К Сохранение регистров Загрузка указателя фрейма Зырузка параметров Помещение параметров в стек 2160 2164 1Л)МРП БР[,[КО-КЗ,ГР,РС[ Вторая подпрограмма 3000 ЗПВ2 БТМНЭ АПП 1ЛЖ ЗР!,[КО,К1,РРД.К) ГР,ЗР,№8 КО,[РР,№8] Сохранение регистров Загрузка указателя фрейма Загрузка параметра БТК ЕРМРП К1,[РР,№8! ЗР[,[КО,К1,РР,РС[ Помещение результата в стек Сохранение регистров и возврат Рнс.

2.12. Вложенные подпрограммы процессора АЙМ на языке ассемблера Как видите, в приведенных подпрограммах используются вложенные вызовы. На рис. 3.12 представлена программа с рис. 2.28, переписанная для процессора АКМ. На рис. 3.13 показаны стековые фреймы, соответствующие первой и второй подпрограммам. Указателем на фрейм служит регистр К12. Некоторым регистрам в этой программе присваиваются символические имена, облегчающие чтение кода. 2000 2004 2008 2012 2016 2020 1Л)К ЗТК 1ПК БТК ВЕ ЕПК ЕПК БТК ВЕ ЕПК КО,РАКАМ2 К10,[ЗР,№-4!! К10,РАКАМ1 К10, [ЗР,№-4! ! БПВ1 К10,[ЗР! ЗР!,[КО-КЗ,РР,1К) РР,ЗР,№16 КО,[РР,№8! К1,[РР,№12! К2,РАКАМЗ К2,[ЗР,№ — 4!! Я5В 2 К2,[ЗР[,№4 Выталкивание результата выполнения подпрограммы Б!!В2 из стека в К2 Помещение результата в стек Восстановление регистров и возврат 150 Глава 3.

Системы команд процессорое АНМ, Мо1ого!а и!п1е! В частности, регистры В12 (указатель на фрейм), 213 (указатель на стек), К14 (регистр связи) и К15 (счетчик команд) обозначены как РР, ЯР, 1.К и РС соответственно. Для задания зтих имен можно воспользоваться ассемблерной директивой ВХ. Стековый фрейм для второй подпрограммы Стековый фрейм для первой подпрограммы Старая вершина стека Рис. 3.13.

Стековыв фрвймы программы, представленной на рис. 3.12 Структура вызывающей программы и подпрограмм осталась такой же, как на рис. 2.28. Для процессора АКМ в программу внесены следующие изменения. Адрес возврата и старое содержимое стекового фрейма сохраняются в стеке первой командой каждой подпрограммы. Вторая команда связывает указатель стека с его же сохраненным значением, как показано на рис.

3.13. Это соответствует значениям указателя фрейма на рис. 2.27 и 2.29. Параметры, как обычно, располагаются со смещением 8, 12 и т. д. Последняя команда каждой подпрограммы восстанавливает старое значение указателя фрейма и значения других применяемых в подпрограмме регистров, а затем выталкивает из стека адрес возврата в регистр РС. 3.7.

Примеры программ В данном разделе рассматриваются АКМ-версии программ для вычисления скалярного произведения, сортировки байтов и операций со связными списками, 3,7. Примеры программ 151 описанных в главе 2. Эти программы созданы на основе программ, приведенных на рис. 2.33, 2.34, 2.37 и 2.38. Мы рассмотрим только те фрагменты АКМ-кода, ко- торые отличаются от кода, анализируемого в главе 2. 3.7.1. Программа для вычисления скалярного произведения двух векторов Первые две команды на рис. 3.14 загружают в регистры К1 н К2 адреса векторов А и В.

Это псевдокоманды АРК, описанные в разделе 3.4.1. Если адреса АЧЕС и ВУЕС расположены достаточно близко к командам программы, для их генерирования может быть применена команда Айса с текущим значением регистра РС. Для доступа к содержимому Х и РОТРКОР используется относительный режим адресации, а для загрузки компонентов векторов в первых двух командах цикла — постиндексный режим адресации. Необходимые арифметические операции выполняет команда М?.А (Мц11(р)у-Ассппщ1ате). Она перемножает элементы векторов, находящиеся в регистрах К4 и К5, и прибавляет результат к содержимому регистра КО. Я'ВЯ КЗ,КЗ,№1 ВХЕ 1.00Р БТК КО,РОТРКОР Рис.

3.14. Программа для процессора АНМ, вычисляющая скалярное произведение двтх векторов 3.7.2. Программа сортировки байтов На рис. 3.15 показана программа сортировки байтов. Она имеет ту же структуру, что и программа на рис. 2.34, б. Адрес первого байта массива Е15Т загружается в регистр К4. Он используется в предпоследней команде сравнения, определяющей на основе индекса Й, когда должен завершиться внутренний цикл. Аналогичным образом, в регистре К5 содержится адрес Е1ЯТ + 1, который применяется в последней команде сравнения, определяющей на основе индекса ~) когда должен завершиться внешний цикл. Для уменьшения значения индекса)' во внешнем цикле предназначен базовый регистр К2, а для уменыпения значения индекса (г при проходе по каждому из подсписков во внутреннем цикле — базовый регистр КЗ.

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

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

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

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