К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 51
Текст из файла (страница 51)
Индексы х и у передаются подпрограмме в регистрах Г11 и П2, параметры и и т — в регистрах ПЗ и П4, а адрес элемента А(0,0) — в регистре АО. Допускается использование любого режима адресации из числа указанных в табл. 3.2. 3.43. Напишите программу АКМ для изменения порядка битов в регистре 02 на обратный.
Например, если первоначально в регистре Г)2 содержится значение 1110 ... 0100, то после выполнения вашей программы в нем должно содержаться значение 0010 ... 0111. (Подсказка: используйте операции сдвига и циклического сдвига.) 3.44. Сколько байтов памяти необходимо для хранения программы, приведенной на рис. 3.32? Сколько обращений к памяти она выполняет? Процессоры 1пхе1 1А-32 3.51. 3.45.
ЗА6. 3.47. 3.48. 3.49. 3.50. Глава 3. Системы команд процессоров АЯМ, Мо1ого!а и!пге) Приведите результаты трассировки программы сортировки байтов, показанной на рис. 3.34, б, в формате, описанном в упражнении 3.27. Каким будет содержимое регистров Р1, Р2 и РЗ и последовательности из 5 байт, расположенных по адресам ?.?БТ, ?.?БТ + 1, ..., 1.15Т + 4, после каждого выполнения последней команды программы.
Предполагается, что Е1БТ 1000, начальными значениями байтов являются 120, 13, 106, 45 и 67, а [?.?ЯТ] - 120, Перепишите приведенную на рис. 3.34, б программу сортировки байтов в виде подпрограммы, сортирующей список последовательно расположенных в памяти 32-разрядных положительных целых чисел. Вызывающая программа должны передавать подпрограмме адрес этого списка. Первое 32-разрядное число по указанному адресу определяет количество элементов списка, а за ним следуют сортируемые значения. Рассмотрим программу сортировки байтов, приведенную на рис. 3.34, б. На каждом проходе по подсписку от ?.?ЯТ(1) до ?.?ЯТ(0) все элементы списка, длл которых ? ?ЯТ(Й) > 1.?ЯТ(?), меняются местами. В качестве альтернативы можно отследить адрес наибольшего значения в подсписке и в конце просмотра такового выполнить не более одного обмена.
Перепишите программу с использованием этого подхода. Каковы его преимущества? Предположим, что список полученных студентами оценок, показанный на рис. 2.14, хранится в памяти в виде связного списка, как на рис. 2.36. Напишите программу для процессора 68000, выполняющую ту же задачу, что и программа на рис. 2.15, Первая запись списка хранится в памяти по адресу 1000. Все элементы списка являются длинными словами.
Подпрограмма вставки записи в связный список, приведенная на рис. 3.35, не проверяет код вставляемой записи на предмет совпадения с кодами имеющихся в списке записей. А что произойдет в случае подобного совпадения? Модифицируйте подпрограмму таким образом, чтобы в указанном случае она возвращала в регистре Аб адрес записи, код которой совпадает с кодом данной записи, или О, если вставка выполнена успешно. Подпрограмма удаления записи из связного списка (рис.
3.36) не проверяет наличия в списке записи с указанным в регистре К?РХ??М кодом. Модифицируйте ее таким образом, чтобы в случае успешного удаления она возвращала в регистре В?РМ??М значение О, и оставляла содержимое данного регистра неизменным, если запись в списке не будет найдена. В регистры и память компьютера АВМ включена следующая информация. Регистр ЕВХ содержит значение 1000. Регистр ЕЯ? содержит значение 2. Числа 1, 2, 3, 4, 5 и 6 хранятся в последовательных словах памяти начиная с адреса 1000.
Метка ?.ОС представляет адрес 1008. Упражнения 223 Каким будет результат выполнения каждой из трех следующих команд при указанных начальных значениях7 ЕАХ,10 ЕАХ,[ЕВХ + ЕБ1'4 + 8] 20 30 ЕАХ ЕВХ ЕАХ,ЕВХ ЕАХ,1.0С ЕВХ,[ЕАХ] а) МОЪ' А111) б) РПКСН РПКСН РОР РОР 3 11 В в) 1.ЕА МО1г 3.52. Выполнение каких из перечисленных ниже команд 1А-32 приведет к выводу ассемблером сообщения о синтаксической ошибке: Почему? а) А1)П ЕАХ„ЕАХ б) АП1) [ЕАХ],[ЕВХ + 4] в) Я)В ЕАХ,[ЕВХ + ЕЯ'4+ 20] г) Я1В ЕАХ,[ЕВХ + ЕЯ'10] д) А1)1) ЕАХ,— 31728542 е) МОЧ 20,ЕАХ ж) МОУ ЕАХ,[ЕВР + ЕЗР'4] 3.53. В результате трассировки программы может быть получен листинг содержимого определенных регистров и адресов памяти в заданные моменты ее выполнения.
Каким будет содержимое регистров ЕАХ, ЕВХ и ЕСХ каждый раз после трехкратного выполнения команды 1.ООР в программе, показанной на рис. ЗАО, б. Представьте результаты в виде таблицы с именами трех регистров в заголовках столбцов. Содержимое регистров после каждого выполнения команды 1.ООР укажите в трех строках таблицы. Данные для программы приведены на рис. 3.42. 3,54. Напишите программу для процессора АКМ, сравнивающую значения соответствующих байтов из двух списков байтов и помещающую большее из значений в третий список. Два исходных списка начинаются по адресам Х и г', а результирующий список — по адресу 1.АКСЕК. Длина списка хранится в памяти по адресу гч. 3.55.
Напишите программу для процессора 1А-З2, которая выполняла бы ряд задач, связанных с обработкой символов. Строка из и символов хранится в памяти в виде последовательности байтов начиная с адреса ЗТК1НС. Еше одна, более короткая строка из и символов хранится в памяти по адресу Я)ВБТК1ХС. Программа должна просмотреть строку, начинающуюся по адресу БТК1НС, чтобы определить, содержится ли в ней непрерывная подстрока, идентичная строке по адресу Я)ВЗТК[ХС. Параметры в и гл (и > т) йй4 3.56. Напишите программу для процессора 1А-32, генерирующую первые п чи 3.57.
3.58. 3.59. 3.60. 3.61. Глава 3. системы команд процессоров дйм, мо1ого!а и !пге! хранятся в памяти по адресам Х и М соответственно. Если подстрока найдена, в регистр ЕАХ должен быть записан ее адрес. В противном случае регистр ЕАХ должен быть очищен (установлен в 0). Многократные вхождения строки программа выявлять не должна — нужен только адрес первого вхождения подстроки в строку. сел последовательности Фибоначчи. В этой последовательности первыми двумя числами являются 0 и 1, а каждое следующее число генерируется путем сложения двух предшествующих чисел. Например, для и - 8 последовательность Фибоначчи такова: О, 1, 1, 3, 3, 5, 8, 13 Ваша программа должна записать эти числа в последовательные слова памяти начиная с адреса МЕМ(.ОС.
Значение и хранится по адресу Х. Напишите программу для процессора 1А-32, выполняющую преобразование слова текста, набранного в нижнем регистре, в слово в верхнем регистре. Слово состоит из символов АЯСП, хранящихся в памяти в последовательных байтах начиная с адреса %гОИЭ, и заканчивается символом пробела. (Сведения об АЗСП-кодах представлены в пгиложении Д.) Список полученных студентами оценок (рис. 2.14) изменился, и теперь для каждого студента в нем содержится7' оценок. Каждый элемент в списке является 16-разрядным словом, так что значение счетчика каждый раз должно увеличиваться на 2. Количество студентов равно п. Напишите программу для процессора 1А-32, вычисляющую сумму оценок по каждому из тестов и записывающую эти суммы в двойные слова памяти по адресам 8ПМ, Я(1М + 4, 8(1М + 8, ....
Количество тестов 7' больше количества регистров процессора, так что для суммирования оценок нельзя применить программу, аналогичную приведенной на рис. 2.15. Воспользуйтесь вложенным циклом, как предлагалось в разделе 2.5.3. Во внутреннем цикле должна накапливаться сумма по одному тесту, а во внешнем — выполняться проход по всем тестам. Количество тестов у хранится в памяти по адресу ), который меньше адреса Х. Напишите программу для процессора 1А-32, которая изменяла бы порядок битов в регистре ЕАХ на обратный. Например, если первоначально в регистре ЕАХ хранится значение 1110...0100, после выполнения вашей программы в нем должно содержаться значение 0010...0111. (Подсказка: используйте операции сдвига и циклического сдвига.) Воспользовавшись очередью, описанной в упражнении 2.18, создайте подпрограммы АРРЕХ1) и КЕМОУЕ для процессора 1А-32, которые выполняли бы пересылку данных между регистрами процессора и очередью.
Будьте внимательны прн анализе и обновлении состояния очереди и указателей. Напишите подпрограмму для процессора 1А-32, которая считывала бы с клавиатуры и символов, помещала их по мере ввода в пользовательский стек и отображала на дисплее. В качестве указателя стека используйте регистр ЕВХ. Информация о количестве символов содержится в памяти по адресу Х. Упражнения 225 3.62. Предположим, что среднее время выборки и выполнения команды про граммы, приведенной на рис. 3.44, составляет 10 нс. Если символы вводятся с клавиатуры со скоростью 10 символов в секунду, сколько раз для каждого из них будет выполнена команда )ХС КЕАЭ? Время, уходящее на вывод символа на экран, много меньше времени, проходящего между вводом последовательных символов с клавиатуры.