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

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

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

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

Первым делом каждая подпрограмма устанавливает указатель фрейма (предварительно записав в стек его исходное содержимое) и сохраняет значения 104 Глава 2. Машинные команды и программы тех регистров, которыми она собирается оперировать. Например, Б(1В1 исполь- зует четыре регистра, от КО до КЗ, а Б(1В2 — два регистра, КО и К1. Все указанные регистры, а также указатель стека восстанавливаются перед выходом из подпро- граммы. Адрес в памяти Команды Комментарии Главная программа (Мщп) Помещение парзметров в стек Сохранение результата Восстановление указателя стека Первая подпрограмма (Б1)В() 2100 Я)В1 Моче РР,-(БР) 2104 Моче БР,РР 2108 МочеМп!11р1е КО-КЗ,-(БР) 2112 Моче 8(ЕР),КО Моче 12(ЕР),К1 Моче РАКАМЗ,— (БР) 2160 Са(1 Я)В2 2164 Моче (БР)<-,К2 Помещение параметра в стек Выталкивание результата работы подпрограммы Я)В2 в К2 Моче К3,8(РР) МочеМпРЗр1е (БР)ь,КΠ— ЙЗ Моче (БР)+,ЕР Кетпгп Вторая подпрограмма (Бь)В2) 3000 БПВ2 Моче РР,-(БР) Моче БР,ЕР МочеМп111р1е КО-К1,— (БР) Моче 8(РР),КО Моче К1,8(РР) МочеМпрпр1е (БР)+,КΠ— К1 Моче (БР)ч.,ЕР Кето гп Рис.

2.28. Вложенные подпрограммы 2000 2004 гОО8 2012 2016 2020 Моче Моче Са1! Моче А<И Следующая команда РАКАМ2,-(БР) РАКАМ1,-(БР) Я)В1 (БР),КЕЯЛ Т Ф8,БР Сохранение указателя фрейма Загрузка указателя фрейма Сохранение регистров Считывание первого параметра Считывание второго параметра Помещение ответа в стек Восстановление регистров Восстановление указателя фрейма Возвращение управления главной программе Сохранение указателя фрейма Загрузка указателя фрейма Сохранение регистров КО и К1 Считывание параметра Помещение в стек результата работы подпрограммы Я.гВ2 Восстановление регистров КО и К1 Восстановление указателя фрейма Возвращение управления подпрограмме Я) В1 2.10. Дополнительные команды 105 Стеков ый фрейм второй подпрограммы ГР— я~ Стековый фрейм первой подпрограммы -- Старая вершина стека Рис. 2.29.

Стековые фреймы программы, приведенной на рис. 2.28 2.10. Дополнительные команды Итак, в этой главе вы познакомились с командами Моче, 1лаг1, Вгоге, С1еаг, Аоо, ЯиЬ1тасс, 1псгешепд Весгешепс, ВгапсЬ, ТеэГЬ1Ц Сонате, Са11 и Кетпгп. Эти 13 команд в сочетании с приведенными в табл.

2.1 адресными режимами позволили нам написать ряд подпрограмм, демонстрирующих последовательность выполнения машинных команд, а также таких структур, как, например, ветвления. Кроме того, мы проиллюстрировали выполнение базовых операций ввода-вывода. Но даже в таком маленьком наборе команд наблюдается избыточность. Так, команды Есаул и Роге можно было бы заменить командой Моче, а команды 1псгетепг н Ресгешепт — соответственно командами Аос1 и ЯиЪггасп Команду С!еаг также можно было бы заменить командой Моче с непосредственно задаваемым операндом О. Таким образом, нам вполне достаточно было бы восьми команд. Но Для загрузки параметров из стека и помещения результатов обратно в таковой используется индексный режим адресации с использованием указателя фрейма РР.

В этих операциях, как и в случае стека, показанного на рис. 2.27, задается байтовое смещение 6, 12 и т. д. Обратите внимание на тот факт, что за удаление параметров из стека всегда отвечает вызывающая программа. Эту операцию выполняет команда АИ в главной программе и команда Моче, расположенная по адресу 2164 в подпрограмме ЯЗВ1.

106 Глава 2. Машинные команды и программы в системах реальных компьютеров избыточность встречается довольно часто. Многие из простых операций можно выполнить несколькими способами, правда, с разной эффективностью. В этом разделе вы познакомитесь еще с рядом важных команд, поддерживаемых большинством компьютеров, 2.10.1. Логические команды Базовые строительные блоки логических схем (см.

приложение А) реализуют такие выполняемые над отдельными битами логические операции, как И, ИЛИ и НЕ. Наряду с этим полезно иметь воэможность производить указанные операции и программным путем, для чего используются команды, способные выполнять их над всеми битами слова или байта по отдельности и параллельно. Так, команда Ной озй дополняет все биты операнда, заменяя нули единицами, а единицы нулями. В разделе 2.1.1 было показано, что в результате добавления 1 к дополнению положительного числа со знаком до единицы получается отрицательная версия дополнения этого же числа до двух. Например, число +3 (0011) путем прибавления 1 к его дополнению до единицы преобразуется (рис. 2.1) в -3 (1101).

Если число 3 содержится в регистре КО, данное преобразование выполняют команды Хог КО АгЫ №1,КО Во многих компьютерах эту же задачу выполняет одна команда Хейа1е КО Теперь рассмотрим, как применяется логическая команда Апг(, выполняющая побитовую операцию И над исходным и результирующим операндами. Предположим, что в 32-разрядном регистре КО содержатся четыре символа АЯСП.

Нам требуется определить, является ли первый слева символ буквой У.. Если да, будет выполнен условный переход по адресу УЕВ. В приложении Д указано, что АБСП-код буквы Х равен 01011010 или 5А в шестнадцатеричном формате. Нужное нам действие выполняют следующие три команды: Апй №ЗРРОООООО,КО Сошраге №$5АОООООО,КО Вгапсй-0 УЕЯ Команда Апб очищает все биты трех расположенных справа символов, оставляя крайний слева символ нетронутым. Это результат использования непосредственно заданного исходного операцда, состоящего из восьми единиц слева и 24 нулей справа.

Команда Сонате сравнивает оставшийся символ с левого края регистра КО с двоичным представлением символа Х. Если они совпадают, команда ВгапсЬ выполняет переход по адресу УЕ5. Следует отметить, что команда Апг) часто используется при необходимости очистить все разряды операнда, за исключением заданных разрядов.

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

В общем случае, используется логический сдвиг. Для чисел производится арифметический сдвиг, при котором сохраняется знак числа. Логический сдвиг Для поддержки операции логического сдвига необходимы две команды: одна для выполнения сдвига влево (МЫМИ).), а другая — вправо (ЫЬ!Йк). Эти команды сдвигают операнд на заданное количество разрядов, определяемое операндом соппп Общий синтаксис команды, выполняющей логический сдвиг влево, таков: 15Ь1й1.

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

2.30, а показан пример сдвига содержимого регистра КО влево на два разряда. Команда логического сдвига вправо работает точно так же (рис. 2.30, б). Пример упаковки цифр Давайте рассмотрим пример, иллюстрирующий использование обеих операций сдвига и логических операций, Предположим, что в памяти по байтовым адресам ЕОС и ЕОС+1 расположены две десятичные цифры, записанные с использованием кодов АБСП. Нам нужно представить каждую из них в 4-разрядном двоично-десятичном формате и сохранить обеих в одном байте по адресу РАСКЕП. Результат, который мы получим, называется упакованным двоично-десятичным форматом. Из табл.

Д.1 и Д.2 приложения Д видно, что четыре крайних справа бита АБСП-кода десятичной цифры соответствуют ее двоично-десятичному коду. Поэтому для выполнения нашей задачи достаточно извлечь четыре младших разряда из байтов, расположенных по адресам 1.ОС и 1ОС+1, и объединить их в один байт по адресу РАСКЕП, Эту задачу выполняет представленная на рис. 2.31 последовательность команд, в которой для ссылки на АБСП-символы в памяти используется регистр ЕО, а для формирования двоично-десятичных кодов — регистры К1 и К2.

Мы предполагаем, что байт, пересланный командой МочеВуге из памяти в 32-разрядный регистр процессора, помещается у его правого края. Команда Апд используется для очистки всех разрядов регистра Е2, за исключением четырех крайних справа. Обратите внимание, что промежуточный исходный операнд команды Апд задан как ЗК Команда интерпретирует его как 32-разрядное двоичное число, содержащее 28 нулей в старших разрядах. 108 Глава 2. Машинные команды и программы КО Д: До После: Д1) КО ДО До: Д1 После: До До: После: Рис. 2.30.

Команды логического и арифметического сдвига: логический сдвиг влево, (Вл(й(. №2,НО (а); логический сдвиг вправо, (.8Л(йй №2,НО (б1; арифметический сдвиг вправо, АЗЫйн №2,ИО (в] Рис. 2.31. Подпрограмма, упаковывающая два двоично-десятичиых числа Моче Моче Вуте ПЗь1Й1. МочеВуте Апб Ог МочеВуте №1.ОС,КО (КО)ч-,К1 (КО),К2 №ЗЕ,К2 К1,К2 К2,РАСКНЭ КО указывает на данные Загрузка первого байта в К1 Сдвиг первого байта влево на 4 разряда Загрузка второго байта в К2 Очищение старших разрядов Объединение двоично-десятичных кодов цифр Сохранение резулътата 2.10, Дополнительные команды 109 Арифметический сдвиг Внимательно рассмотрев представление двоичного числа в форме дополнения до двух (рис. 2.1), вы поймете, что сдвиг числа на один разряд влево зквивалентен его умножению на 2, а сдвиг на один разряд вправо — его делению на 2.

Конечно, при сдвиге влево может произойти переполнение, а при сдвиге вправо может потеряться конец числа. Еще одно важное наблюдение заключается в том, что при сдвиге вправо в освободившемся разряде должен быть повторен знаковый бит. Этим арифметический сдвиг вправо отличается от логического, в котором освобождающиеся разряды всегда заполняются нулями. Пример арифметического сдвига вправо (АЯЬ|ЙК) приведен на рис. 2.30, в.

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

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

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

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