К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 52
Текст из файла (страница 52)
3.63. В программе для процессора 1А-32 (рис. 3 44) чтение и вывод символов вы полняется без вызова подпрограмм. Перепишите зту программу таким образом, чтобы она состояла из главной программы, вызывающей подпрограмму СЕТСНАК для ввода одного символа и подпрограмму РПТСНАК для вывода одного символа. Адреса регистров 1МЯТАТПЗ и ОАТА1Х передаются подпрограмме ОЕТСНАК в регистрах ЕВХ и ЕПХ, а считанный с клавиатуры символ главная подпрограмма получает через регистр А1.. Адреса регистров ОПТЯТАТПЯ, РАТАОПТ и подлежащий выводу символ передаются подпрограмме РПТСНАК в регистрах ЕЯ1, ЕО1 и А1. соответственно.
Любые другие используемые в подпрограммах регистры должны сохраняться и восстанавливаться с применением стека процессора, указатель на который находится в регистре ЕБР. Запись символов в память и проверка на наличие символа конца строки СК должна выполняться главной программой. 3.64. Повторите упражнение 3.63 при условии, что параметры будут передавать- ся через стек процессора. 3.65. Напишите программу для процессора 1А-32, выполняющую ввод с клавиа туры трех цифр. Каждая цифра представлена АЗСП-кодом.
Вместе эти цифры составляют десятичное целое число из диапазона от 0 до 999. Первой вводится старшая цифра. Преобразуйте это число в двоичное представление. Чтобы упростить процесс преобразования, в память помещены две таблицы слов, содержащие по десять элементов. Первая из них начинается по адресу ТЕМЯ. В ней содержатся двоичные представления десятичных значений О, 10, 20, ..., 90. Вторая таблица начинается по адресу Н1Л~ПЖЕОБ и содержит двоичные представления десятичных значений О, 100, 200, ., 900. 3.66. Написанная для упражнения 3.65 программа, выполняющая преобразова ние из десятичного формата в двоичный, должна содержать две вложенные подпрограммы.
Главная подпрограмма вызывает первую подпрограмму и передает ей два параметра через стек процессора. Первым параметром является адрес 3-байтового буфера памяти для хранения введенных десятичных цифр. Второй параметр — это адрес, по которому должно быть записано результирующее двоичное значение. Первая подпрограмма считывает с клавиатуры три символа и вызывает вторую подпрограмму для выполнения преобразования. В этом случае параметры передаются через регистры процессора. Обе подпрограммы должны сохранять содержимое используемых ими регистров в стеке процессора.
а) Напишите эти подпрограммы на языке ассемблера процессора 1А-З2. б) Каковым будет содержимое стека сразу после выполнения команды вызова второй подпрограммы. г26 Глава 3. Системы команд процессоров АНМ, Мо1ого1а и 1п1е! 3.67. 3.68. 3.69. 3.70. 3.7!. 3.72. Рассмотрим массив 16-разрядных чисел АЩ), где индекс строки ! принимает значения из диапазона от О до и — 1, а индекс столбца! — из диапазона от 0 до гл — 1.
Этот массив хранится в памяти компьютера с процессором 1А-32 построчно, а элементы каждой строки занимают эг последовательных двойных слов. Напишите подпрограмму для поэлементного сложения столбцов х и у с записью сумм в столбец у. Индексы х и у передаются подпрограмме в регистрах Р! и Р2, параметры п и и — в регистрах Е51 и ЕР1, а адрес элемента А(0,0) — в регистре Е?)Х. Допускается использование любых режимов адресации из перечисленных в табл. 3.3. Приведите результаты трассировки представленной на рис. 3.50, б программы сортировки байтов в формате, описанном в упражнении 3.53.
Покажите содержимое регистров Е?П, ЕСХ и Р1. и последовательности из пяти байтов, расположенных по адресам 1.15Т, ?,15Т + 1, ..., 1.15Т + 4, после каждого выполнения последней команды программы. Предполагается, что ?.!ЯТ - 1000, начальными значениями байтов являются !20, 13, !06, 45 и 67, а [?,15Т] - 120.
Перепишите приведенную на рис. 3.50, 6 программу сортировки байтов в виде подпрограммы, сортирующей список последовательно расположенных в памяти 32-разрядных положительных целых чисел. Вызывающая программа должны передавать подпрограмме адрес этого списка. Первое 32-разрядное число по указанному адресу определяет количество элементов списка, а за ним следуют сортируемые значения. Рассмотрим программу сортировки байтов, приведенную на рис. 3.50, б.
На каждом проходе по подсписку от ?.15Т(г) до 1.1БТ(0) все элементы списка, для которых ?ЛВТ(л) > ?,15Т(г), меняются местами. В качестве альтернативы можно отслеживать адрес наибольшего значения в подсписке н в конце просмотра подсписка выполнять не более одного обмена. Перепишите программу с использованием предлагаемого подхода. Каковы его преимущества? Предположим, что список полученных студентами оценок, представленный на рис. 2.14, хранится в памяти в виде связного списка, как показано на рис.
2.36. Напишите программу для процессора 1А-32, выполняющую ту же задачу, что и программа на рис. 2.!5. Первая запись списка хранится в памяти по адресу 1000. Подпрограмма вставки записи в связный список, приведенная на рис. 3.51, не проверяет код вставляемой записи на предмет совпадения с кодами имеющихся в списке записей. Что произойдет в случае такого совпадения? Модифицируйте подпрограмму так, чтобы она возвращала в регистре ЕРХ адрес записи, код которой совпадает с кодом вставляемой записи, или О, если вставка выполнена успешно. Подпрограмма удаления записи из связного списка (рис. 3.52), не проверяет наличия в списке записи с указанным в регистре ИРХПМ кодом. Модифицируйте ее таким образом, чтобы в случае успешного удаления она возвращала в регистре В?РНПМ значение 0 и оставляла содержимое данного регистра неизменным, если запись в списке не найдена.
Глава 4 Ввод-вывод + Выполнение программного ввода-вывода с использованием пулинга + Прерывания и необходимое для их поддержки аппаратное и программное обеспечение + Прямой доступ к памяти и механизмы ввода-вывода для высокоскоростных устройств + Пересылка данных через синхронные и асинхронные шины + Разработка схем интерфейса ввода-вывода + Коммерческие стандарты шинной архитектуры, в частности РС!, ВС8! и 08В Одной из важнейших функций компьютера является поддержка устройств ввода-вывода. Благодаря этому оператор, к примеру, может использовать клавиатуру и дисплей для работы с текстом и графикой.
Компьютеры применяются для юаимодействия с другими компьютерами через Интернет, а следовательно, предоставляют доступ к информации, находящейся в различных частях земного шара. Раль компьютеров в решении других задач может быть менее заметной, но не менее важной. Компьютеры используются дома, в учебных аудиториях, на производстве, в различных транспортных, банковских и коммерческих системах — разнообразие сфер их применения просто впечатляет.
Данные могут поступать в компьютер от самых разных приборов: сенсорных устройств, видеокамер, в том числе цифровых, микрофонов или даже с пультов пожарной сигнализации. Выходными же данными могут служить направляемый в колонки звуковой сигнал яли, скажем, закодированная цифровая команда, изменяющая скорость мотора, открывающая вентиль илн заставляющая робота выполнить определенное движение.
Короче говоря, компьютер должен обладать способностью обмениваться информацией с широким диапазоном устройств в различных окружениях. В настоящей главе мы подробно рассмотрим разнообразные способы выполнения операций ввода-вывода. Прежде всего данный вопрос будет проанализирован с точки зрения программиста. Затем речь пойдет о некоторых аппаратных деталях, связанных с шинами и интерфейсами ввода-вывода. Напоследок вы познакомитесь с несколькими наиболее распространенными стандартами шинной архитектуры.
228 Глава 4. Ввод-вывод 4.1. Доступ к устройствам ввода-вывода Простейшая схема подключения устройств ввода-вывода к компьютеру заключается в использовании общей шины (рис. 4.1). Все устройства, подключенные к шине, могут обмениваться между собой информацией. Обычно шина состоит из трех наборов линий, предназначенных для передачи адресов, данных и управляющих сигналов. Каждому устройству ввода-вывода присваивается уникальный набор адресов.
Когда процессор помещает на адресные линии конкретный адрес, распознавшее этот адрес устройство отвечает на команду, помещенную на управляющие линии. Процессор запрашивает либо операцию чтения, либо операцию записи, и запрошенные данные пересылаются по линиям данных. Как упоминалось в разделе 2.7, органиэация системы ввода-вывода, при которой устройства ввода-вывода и память разделяют одно адресное пространство, называется вводом-выводом с отображением в намять. Ш Рис. 4Д. Архитектура системы с общей шиной При использовании ввода-вывода с отображением в память любые машинные команды, выполнякнцие обращение к памяти, могут быть задействованы и для обмена данными с устройствами ввода-вывода. Предположим, ?)АТА?Л? — зто адрес входного буфера, связанного с клавиатурой.
Тогда следующая команда считывает данные из ?)АТА?Л' и помещает их в регистр процессора КО: Моче ?)АТА?Л?,КО Аналогичным образом команда Моче КО„??АТАО??Т пересылает содержимое регистра КО по адресу ?)АТАО??Т, который может соответствовать выходному буферу дисплея или принтера. Технология ввода-вывода с отображением в память применяется в большинстве компьютерных систем. Некоторые процессоры для выполнения операций ввода-вывода поддерживают специальные команды 1п и Ооц Например, процессоры семейства ?псе?, описанного в главе 3, имеют специальные команды ввода-вывода дл. Доступ к устройствам ввода-вывода 229 О~ ( Линии адреса Линии данных Управляюнще линии Интерфейс ввода-вывода Рис.
4.2. Интерфейс ввода-вывода для устройства ввода Скорость работы устройств ввода-вывода значительно отличается от скорости работы процессора. Когда оператор вводит с клавиатуры символы, между последовательными нажатиями клавиш процессор может выполнять миллионы команд. и отдельное 16-разрядное адресное пространство для устройств ввода-вывода. Создавая компьютерную систему на основе такого процессора, конструктор может либо соединить все устройства ввода-вывода так, чтобы они использовали специальное адресное пространство ввода-вывода, либо подключить их как часть адресного пространства памяти.
Второй подход позволяет упростить программное обеспечение, поэтому используется он значительно чаще. Одним из преимуществ наличия отдельного адресного пространства ввода-вывода является то, что соответствующие устройства могут использовать меньшее количество адресных линий. Но имейте в виду, что наличие отдельного адресного пространства ввода-вывода еще не означает, что адресные линии ввода-вывода физически отделены от адресных линий памяти. На тот факт, что запрошенная операция чтения или записи относится к системе ввода-вывода, может указывать передаваемый по шине глециальный сигнал.
Получив такой сигнал, память игнорирует запрошенную операцию, а устройства ввода-вывода анализируют младшие разряды переданного по шине адреса, чтобы узнать, кому из них направлен запрос. Аппаратные элементы, необходимые для присоединения устройств ввода-вывода к шине, представлены на рис. 4.2. Когда адрес устройства появляется на адресных линиях, устройство распознает его с помощью дешифратора (декодера) адреса. Данные, которыми устройство обменивается с процессором, хранятся в регистрах данных. Регистр состояния содержит информацию, относящуюся к функционированию устройства ввода-вывода.