К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 36
Текст из файла (страница 36)
3.8. Регистры и адресация Длина слова процессора 68000 составляет 16 бит, поскольку для соединения с памятью микросхема этого процессора имеет 16 контактов. Однако внутри процессора для работы с данными используются 32-разрядные регистры. Более продвинутыми моделями в этом семействе являются процессоры 68020, 68030 и 68040, выпускаемые в виде микросхем большего размера с 32-разрядными внешними шинами данных. Эти процессоры являются полностью 32-разрядными.
3.8.1. Регистры процессора 88000 Как показано на рис. 3.18, процессор 68000 содержит 8 регистров данных и 8 регистров адреса длиной по 32 бита каждый. Регистры данных используются как регистры общего назначения и как счетчики. Комацды процессора 68000 поддерживают три разные длины операндов. Говорят, что 32-разрядный операнд занимает длинное сэово, 16-разрядный — слово, а 8-разрядный — байт.
Когда в команде используется операнд длиной в один байт или слово, в регистре процессора этот операнд располагается в младших разрядах. Как правило, такие команды не затрагивают оставшиеся старшие разряды регистра, но некоторые из них расширяют знак более короткого операнда на старшие разряды регистра. В адресных регистрах содержится информация, используемая для определения адресов операндов в памяти. Такого рода информация может быть задана в виде слова или длинного слова. Когда адрес заданного места памяти находится в адресном регистре, то регистр играет роль указателя на это место памяти.
И адресные регистры, и регистры данных могут использоваться в качестве индексных регистров. Один из адресных регистров, А7, имеет особое назначение, а именно выполняет функцию указателя стека. Об этом регистре рассказывается в разделе 3.13. При вычислении адресов используются 32-разрядные значения и 32-разрядные регистры.
Однако в процессоре 68000 для доступа к памяти могут быть задействованы только 24 младших бита адреса. Процессоры 68020, 68030 и 68040 имеют по 32 внешние адресные линии и по 32 линии данных. 156 Глава 3. Системы команд процессоров Айва, МО1ого1а и 1п1е! ~ длинное слово — ~н — Слово — 1 ~ ~Байт~1 1615 67 0 31 РО Р2 РЗ Регистры данных Р5 Рб Р7 АО А1 Адресные регистры АЗ А5 Аб указатели на стек Счетчик команд 15 13 10 8 4 0 р состояния Рио. 3.1В. Регистры процессора 68000 Последний из показанных на рис. 3.18 регистров, Ж, называется регистром состояния процессора (згагцз ге81згег).
В нем содержатся пять разрядов кодов условий, три разряда прерываний и два разряда выбора режима, описанных соответственно в разделах 3.11.1, 4.2 и 3.13. Т вЂ” выбор режима трассировки 5 — выбор режима супервизора 1 — маска прерывания С вЂ” перенос Ч вЂ” переполнение 2 — нуль К вЂ” отрицательный знак Х вЂ” расширение 3.8. Регистры и адресация 157 3.8.2. Адресация Память компьютера 68000 организована в виде набора 16-разрядных слов с по- байтовой адресацией. Два последовательных слова могут интерпретироваться как одно 32-разрядное длинное слово.
Адреса памяти назначаются таким же образом, как на рис. 3.19. Адреса слов должны быть четными. В словах применяется обратный порядок байтов. Это означает, что старший байт слова имеет тот же адрес, что и слово, а адрес его младшего байта на единицу больше. Адрес слова Содержимое Длинное слово 0 Длинное слово ~ 2"- 2 Рио. 3.19. Адресация памяти процессором 68000 Поскольку процессор 68000 генерирует 24-разрядные адреса, его адресное пространство имеет размер 2з4 (16777216 или 16 М) байт.
Его можно представя стоящим из 512 (2з) страниц по 32 К (2м) байт каждая. Таким образом, шее н щцатеричные адреса от 0 до 7ЕЕЕ составляют страницу О, адреса от 8000 до ЕЕЕГ— страницу 1 и т. д. Последняя страница содержит адреса от ЕЕ8000 до ЕГЕЕЕЕ, Процессор 68000 поддерживает несколько режимов адресации, включая режимы, описанные в разделе 2.5. Многие команды этого процессора помещаются в 16-разрядном слове, но некоторым для адресной информации требуются дополнительные слова.
Первое слово команды хранит код, определяющий выполняемую командой операцию и содержащий некоторую информацию об адресации. Оставшаяся часть адресной информации хранится в последующих словах. Ниже перечислены все возможные режимы адресации процессора 68000. 158 Глава 3. Системы команд процессоров АВМ, Мо1ого!а и !о1е! + Непосредственная адресация (1шшед1аге). Операнд содержится прямо в команде. Операнды длиной в байт, слово или длинное слово следуют за словом кода операции. Поддерживается еще один, четвертый, размер операнда, который представляет собой очень маленькое число, включаемое непосредственно в слово кода операции.
+ Абсолютная адресация (аЪзо!пге). Абсолютный адрес операнда задается в команде после кода операции. Существует два варианта етого режима— длинный и короткий. В длинном режиме 24-разрядный адрес задается явно, а в коротком режиме заданное в команде 16-разрядное значение используется как 16 младших разрядов адреса. Знаковый бит етого значения распространяется на старшие 8 разрядов адреса. Так как знаковый бит равен О или 1, в коротком режиме доступны только две страницы адресного пространства.
Это страницы О и ЕР8, каждая размером по 32 Кбайт. + Рви~стравил адресация (ге81згег). Операнд находится в регистре процессора, заданном в команде. + Косвенная рвгисгпровая адресация (ге81згег 1пг(1гесг). Исполнительный адрес операнда содержится в адресном регистре, заданном в команде. + Автоинкрвмвкткая адресация (апго1псгешепг). Исполнительный адрес операнда содержится в заданном в команде адресном регистре, Ап. После доступа к операнду содержимое регистра Ап увеличивается на 1, 2 или 4, в зависимости от того, какую длину — байт, слово или длинное слово— имеет операнд + Автодвкрвмвптная адресация (апгодесгешепг).
Содержимое определенного в команде адресного регистра Ап уменьшается на 1, 2 или 4, в зависимости от того, какую длину — байт, слово или длинное слово — имеет операнд. Исполнительным адресом операнда является результирующее значение регистра Ап. + Базовая индексная адресация (Ьаз1с 1пдех). В команде задается 16-разрядное смещение со знаком и адресный регистр Ап.
Исполнительным адресом операнда является сумма значений смещения и регистра Ап. + Полная индексная адресация ((п11 нп1ех). В команде задается 8-разрядное смещение со знаком, адресный регистр Ап и индексный регистр Вл (которым может быть либо адресный регистр, либо регистр данных). Исполнительным адресом операнда является сумма значений смещения и регистров Ап и Вя. При вычислении адреса используются либо все 32 разряда регистра Вя, либо 16 младших разрядов с расширенным знаком. + Базовая относительная адресация (Ьаз1с ге1ат1че). То же самое, что и базовая индексная адресация, с той лишь разницей, что вместо адресного регистра Ап применяется счетчик команд. + Полная относительная адресация ((п11 ге1ат1че).
То же самое, что полная индексная адресация, с той лишь разницей, что вместо адресного регистра Ап применяется счетчик команд. 3.6. Регистры и адресация 159 Все указанные режимы адресации и их синтаксис на языке ассемблера представлены в табл. 3.2. Синтаксис языка ассемблера Формирование адреса Адресация Непосредственная Абсолютная короткая ФЗначение Значение Абсолютная длинная Регистровая Значение Кп Косвенная регистровая Автоникрементная (Ап) (Ап) ч- Автодекрементная -(Ап) Базовая индексная Полная индексная Базовая относительная СЗначение(Ап) БЗначенне(Ап,К?г.3) СЗначенне(РС) илн Метка Б Значение(Р С, К]г. 3) нли Метка(К?с) Полная относительная ЕА - БЗначенне + [РС] а [Ка] ЕА — исполнительный адрес (ейссс!чс аббгезз).
Значение — число, либо заданное явно, либо представленное меткой. БЗиачеиие — 8-разрялиос значение (байт). СЗиачеиие — 16-разрядное зиачеиис (слово). А„— адресный регистр. Кг — адресный регистр или регистр данных. 6 — ииликатор размера: Ж гьчя 16-разрялиого слова с расширсииым завком или 1.
для 32-разрядиого длинного слова, Обратите внимание на наличие двух версий индексного режима. Базовая индексная адресация соответствует режиму, показанному на рис. 2.13. При полной индексной адресации используется содержимое двух регистров и непосредственно заданное в команде значение смещения. Значение смещения имеет размер 16 бит в базовом режиме и 8 бит в полном. При полной индексной адресации второй регистр, Кй, может использоваться двумя способами, с применением либо всех 32 его разрядов, либо только 16 младших.
Для выбора одного из них к имени регистра прибавляется суффикс ?, (длинное слово) или гчг (слово), например: ?)1.?.,?)1ЛЪ'. Если индикатор размера отсутствует, по умолчанию используется слово. В том случае, если для вычисления 32-разрядного адреса применяется 16-разрядное слово, его знак, как вы понимаете, расширяется до 32 разрядов. В любом из двух индексных режимов вместо адресного регистра может использоваться счетчик команд. Результирующие режимы адресации называются Таблица 8.2. Режимы адресации процессора 68000 Операнд - Значение ЕА - СЗначенне с расширенным знаком ЕА - Значение ЕА К, то есть Операнд - [К„] ЕА - [А„] ЕА [А„]; Увеличение значения А„ Уменьшение значения К1; ЕА - [А„] ЕА - СЗначение ч [А ] ЕА = БЗначенне е [А ] + [Кд] ЕА - СЗначение ь [РС] 160 Глава 3.
Системы команд процессоров АНМ, М01ого!а и!01е! относительными, поскольку исполнительный адрес задается как расстояние меж- ду операндом и ссылающейся на него командой. Рассмотрим команду А1з1) 100(РС,А1)00 В машинном коде она состоит из двух слов. В слове кода операции указано, что это команда А<Ы, что регистром назначения является регистр данных 00 и что для доступа к исходному операнду применяется относительная адресация.
Во втором слове команды, называемом словом расгиирвния, указано, что в качестве индексного регистра используется регистр А1 и что величина смещения (занимает 8 бит) равна 100. Предположим, что приведенная выше команда хранится по адресу 1000 и что в регистре А1 содержится значение б, как показано на рис. 3.20.
Когда код операции этой команды считывается и декодируется процессором, счетчик команд указывает на слово расширения, то есть содержит значение 1002. Таким образом, исполнительный адрес исходного операнда равен ЕА = ~РС] е ~А1] +100 - 1ООг н- Е н- 1ОО - 1108 На рис. 3.20 показано, как использовать описанный режим адресации для доступа к элементам массива. Значение смещения определяет расстояние между первым элементом массива и командой. В индексном регистре задается расстояние между этой точкой и операндом, которым в данном примере является четвертое слово массива.
А1 1000 1002 Г Смещение - 100 1102 1104 Индекс = 6 Массив 1106 1108 Рис. 3.20. Пример полной относительной адресации процессора 68000 длн команды дпп 1001рс,дИРо В данном случае относительный режим адресации задан в команде явно. Но большинство ассемблеров позволяет задавать этот режим более простым способом. Прежде всего с помощью специальной директивы ассемблеру необходимо 3.9.
Команды 161 сообщить, что в данном разделе программы будет использоваться относительная адресация. Далее, после того как имени АКВАУ будет присвоено значение 1102, команду на рнс. 3.20 можно переписать так: АТНО 100(А1),ПО В этой команде для исходного операнда задается режим полной относительной адресации, и ассемблер вычисляет величину смещения так, как показано на рисунке. При этом ассемблер не знает и не должен знать, каким будет содержимое регистра А1 во время выполнения команды. Например, эта команда может располагаться внутри цикла, в котором А1 применяется для доступа к элементам массива. Ограничением полного относительного режима адресации принято считать тот факт, что смещение в нем задается как 8-разрядное число в формате дополнения до двух, то есть его допустимьге значения лежат в диапазоне от -128 до +127 байт.