Скачать 3.11 Mb.
|
4.6. СИСТЕМА КОМАНД И СПОСОБЫ АДРЕСАЦИИ Система команд микропроцессора КР580ИК80А представлена 244 кодами операций, которые могут быть расклассифицированы по разным признакам. Наиболее существенными для ознакомления с особенностями их использования являются следующие три признака: длина команды, или число занимаемых байтов, функциональный признак, или выполняемые командой операции, и способ адресации. Полный перечень команд приведен в приложении 1. В таблице приведены символическая запись (мнемокод) команды, описание выполняемых ею функций, длина в байтах, обозначения изменяемых флагов и число машинных тактов, занимаемых при ее выполнении. Из 256 возможных кодов (при восьми двоичных разрядах) не используются следующие 12 кодовых комбинаций (в восьмеричной записи): 010, 020, 030, 040, 050, 060, 070, 313, 331, 335, 355 и 375. Этим и объясняется количество всех команд: 244. Команды в таблице разбиты на три группы по числу занимаемых байтов: все команды делятся на однобайтовые, двухбайтовые и трехбайтовые. При этом первый байт всегда отводится под код команды, а второй и третий байты содержат либо данные, либо адрес, по которому они находятся в памяти (рис. 4.6). Восьмеричные коды всех однобайтовых, двухбайтовых и трехбайтовых команд приведены соответственно в табл. 4.1, 4.2 и 4.3. При этом в табл. 4.1 наряду с обычными указаны обобщенные коды, т. е. коды, содержащие кроме восьмеричных цифр кодовые переменные S, D и А. В табл. 4.1 если код команды содержит только цифры, это означает, что существует единственная команда с соответствующим кодом. Некоторые коды кроме цифр содержат буквы: S (первые И команд), D (третья команда) и А (последняя команда). Таким кодам соответствуют множества команд. При этом каждой команде из первых 11 команд, кроме третьей, соответствует группа конкретных команд, мнемокод которых вместо символа г (регистр) содержит обозначения конкретных регистров (В, С, D, Е, Н, L), либо символ памяти (М), либо символ аккумулятора (А). Соответствующий конкретный восьмеричный код команды вместо символа S должен содержать одну из цифр: О, 1, 2, 3, 4, 5, 6, 7 соответственно, т. е. символу В в мнемокоде соответствует цифра 0 в восьмеричном коде, символу С в мнемокоде — цифра 1 в восьмеричном коде и т. д,. . ., символу М в мнемокоде — цифра 6 в восьмеричном коде и, наконец, символу А в мнемокоде — цифра 7 в восьмеричном коде. Для третьей команды в табл. 4.1 точно такая же аналогия соблюдается для пар символов гь г2 и D, S. Последняя команда таблицы содержит символ А в мнемокоде и в восьмеричном коде. Она соответствует группе из восьми конкретных команд, в каждой из которых символ А принимает одно из значений: О, 1, ... ...,7. ![]() Рис. 4.6. Форматы команд: однобайтовой (а), двухбайтовой (б), трехбайтовой (в)
Как видно из табл. 4.2, микропроцессор КР580ИК80А может выполнять всего 18 двухбайтовых и 26 трехбайтовых команд, приведенных в табл. 4.3. Прежде чем переходить к обзору особенностей выполнения различных операций приведенными командами, остановимся на возможных способах адресации. Под способом или режимом адресации подразумевается способ определения данных, участвующих в операциях, или, иначе говоря, способ определения операндов. Для составления программы важно знать особенности процедур, позволяющих преобразовать информацию об адресах команд и данных в физические адреса участков памяти машины. Для МП КР580ИК80А существуют следующие четыре возможных способа адресации: непосредственная, прямая, регистровая и косвенная. Непосредственная адресация является наиболее экономичным способом хранения и поиска информации, поскольку необходимые данные содержит сама команда. Эти данные содержатся во втором и третьем байтах трехбайтовой команды или во втором байте двухбайтовой команды. В случае трехбайтовой команды младшие разряды 16-битового числа содержатся во втором байте команды, а старшие - в третьем (рис. 4.7,а). Менее экономичной, но также довольно простой является прямая адресация. В этом случае во втором и третьем байтах команды содержится полный 16-разрядный адрес памяти. Младшим байтом адреса является <В2>, старшим — <ВЗ) (рис. 4.7,6). Таким способом можно адресоваться к любой ячейке адресного пространства памяти. При регистровой адресации код команды содержит указание на регистр или пару регистров, в которых содержатся данные. Используемые в регистровой адресации команды являются однобайтовыми (рис. 4.7,в). Возможность указания пары регистров в однобайтовой команде реализуется за счет того, что адреса регистров являются трехразрядными двоичными кодами. Косвенная адресация отличается от регистровой лишь тем, что в регистровой паре, определяемой кодом команды, содержатся не данные, а полный 16-разрядный адрес ячейки памяти,в которой имеются эти данные (рис. 4.7,г). Старший байт адреса записывается в первом регистре пары, а младший байт — во втором. Обычно указателем адреса при косвенной адресации являются пара регистров Н, т. е. регистры Н, L, но иногда используются и пары В и D. При всевозможных пересылках данных из регистров в регистры или из памяти в регистры или обратно различают регистры — источники данных и регистры — приемники данных. Первые обозначаются символом S (source — источник), вторые — символом D (destination — место назначения). В регистровых парах В, С; D, Е и Н, L старшими являются первые регистры пар, т. е. регистры В, D, Н соответственно. Коды регистров общего назначения, пар регистров и флагов строго фиксированы (табл. 4.4). В табл. 4.4 обозначение условия в мнемокоде команды в зависимости от значения флагов расшифровывается следующим образом: NZ — результат ненулевой; Z — результат нулевой; NC — нет переноса; С — есть перенос; РО - нет четности; РЕ — есть четность; Р — результат положительный (плюс) ; М -результат отрицательный (минус). ![]() Рис. 4.7. Способы адресации: непосредственная (а), прямая (б), регистровая (в) и косвенная (г) Все команды по функциональному признаку могут быть разбиты на следующие пять групп: группа команд пересылки данных, арифметические команды, логические команды, команды переходов и команды управления и работы со стеком. Рассмотрим работу наиболее типичных представителей этих групп команд, многие из которых вошли в описываемую ниже программу-монитор (см. § 7.4). 4.6.1. ГРУППА КОМАНД ПЕРЕСЫЛКИ ДАННЫХ В этой группе встречаются команды, пересылающие содержащиеся в них данные в регистры и в память, а также команды пересылки данных между регистрами и между регистрами и памятью. Рассмотрим команды пересылки данных из одного регистра МП в другой, из регистра МП в ячейку ОЗУ и из ячейки ОЗУ в регистр МП. В мнемонике команд, используемых в данной книге, порядок пересылки данных всегда предполагается в направлении от крайнего правого операнда к следующему слева операнду, отделенному от первого запятой. Команда MOV rt, r2. Эта команда предназначена для пересылки данных из регистра S (источник, или г2) в регистр D (приемник, или rt). В качестве регистра-источника и регистра-приемника может выступать любой из регистров В, С, D, H, L или аккумулятор А. Содержимое регистра-источника при этом не меняется. В регистре-приемнике просто появляется копия содержимого регистра-источника. На рис. 4.8,а приведен формат этой команды. Чтобы получить конкретную команду, необходимо вместо символов D и S в формате команды рис. 4.8,я проставить из табл. 4.4 коды соответствующих регистров. Например, команда 01 010 000 В пересылает данные из регистра В в регистр D (в регистре D после выполнения команды будут содержаться т© же данные, что и в регистре В). В восьмеричной системе это число (код команды) будет представлено как 120Q (см. список команд в приложении 1). Команда MOV М, г. Эта команда может быть получена из предыдущей заменой символов D кодом М из табл. 4.4. Команда пересылает данные из регистра-источника в ячейку памяти по адресу, указанному в регистровой паре Н, L. Регистром-источником может служить любой регистр В, С, D, H, L или аккумулятор А. После выполнения команды в ячейке памяти появится копия содержимого регистра-источника. Содержимое самого регистра не изменится. Код конкретной команды получается фиксацией кода регистра-источника (рис. 4.8,6). ![]() Рис. 4.8. Примеры размещения некоторых команд пересылки данных в байтах ![]() Рис. 4.9. Примеры размещения некоторых арифметических команд в байтах Команда MOV г, М. Команда также получается из первой заменой символов S кодом М из табл. 4.4. Команда пересылает данные из ячейки памяти по адресу, указанному в регистровой паре Н, L, в регистр-приемник, в качестве которого может использоваться любой регистр В, С, D, H, L или аккумулятор А. После выполнения команды в регистре-приемнике появляется копия содержимого ячейки памяти (рис. 4.8,в). На этом закончим рассмотрение примеров команд этой группы. Отметим лишь, что все команды из группы пересылки данных на значения флагов влияния не оказывают. 4.6.2. ГРУППА АРИФМЕТИЧЕСКИХ КОМАНД Команды этой группы предназначены для выполнения арифметических операций над данными, хранимыми в регистрах и ячейках памяти. Эти команды в отличие от команд предыдущей группы, как правило, оказывают влияние на значения разрядов флагового регистра, поскольку при выполнении арифметических операций меняются знаки используемых чисел, возникают сигналы переноса, появляются нулевые результаты и т. п. Рассмотрим примеры размещения в байтах некоторых команд этой группы. Команда ADD r. Эта команда выполняет сложение содержимого регистра-источника S с содержимым аккумулятора А. Результат сложения помещается в аккумулятор. Чтобы получить конкретную команду, необходимо в формате команды вместо символов S проставить код регистра-источника из табл. 4.4. Например, команда 10 000 001 производит сложение содержимого регистра С с содержимым аккумулятора А. Двоичный код этой команды 10 000 001 В; в восьмеричной системе это число представляется кодом 201Q. Это представление является восьмеричным кодом команды ADD С, выполняющей указанное выше сложение (см. список команд в приложении 1). Размещение команды ADD г в байте приведено на рис. 4.9,д. Команда SUB r. Команда выполняет вычитание содержимого регистра-источника S из содержимого аккумулятора. Результат заносится в аккумулятор (рис. 4.9,6). Например, команда 10 010 ОН В выполняет вычитание содержимого регистра Е из содержимого регистра А и помещает результат в аккумулятор. Код этой команды SUB Е — 223 Q. |
![]() | Развитие высших форм запоминания 1 Леонтьев Алексей Николаевич Леонтьев Алексей Николаевич (5 февраля 1903 — 21 января 1979) — советский психолог, доктор психологических наук, профессор, академик... | ![]() | Свидетельство о государственной регистрации программы для ЭВМ регистрационный номер: 2011618 693 ( 08. 1 2011) Заявка: 2011616 954 ( 19. 0 2011) Алексеевич, Липов Денис Игоревич, Петрик Алексей Николаевич, Лобанов Павел Сергеевич, Семенов Роман Александрович, Киселев Алексей... |
![]() | Реферат Авторы: Захаров Михаил Юрьевич, Виноградов Кирилл Евгеньевич, Кренев Александр Николаевич Образования "Ярославский государственный университет имени П. Г. Демидова" 150000, г. Ярославль, ул. Советская, 14 | ![]() | Алексей Николаевич Толстой Гиперболоид инженера Гарина Этот роман написан в 1926–1927 годах. Переработан, со включением новых глав, в 1937 году |
![]() | Лекции по общей психологии Алексей Николаевич Леонтьев (1903-1979) выдающийся советский психолог, действительный член апн рсфср, доктор педагогических наук,... | ![]() | Разработка принципов однопроходной прокатки изделий из волокнистых композиционных материалов Мануйлов Виталий Федорович, Соколов Алексей Викторович, Нуждин Виталий Николаевич, Преображенский Евгений Владимирович |
![]() | Василий Александрович Токарев П. Михайлов Игорь Львович Андреев Вячеслав Николаевич Козляков День народного единства: биография праздника Книга посвящена драматичным событиям российской истории XVII в. – Смутному времени. На основе широкого круга источников и литературы... | ![]() | Контрольная работа по литературе в 7 классе Мать, Надежда Осиповна, была правнучкой Ганнибала. Александр Львович литературой не увлекался, а вот его брат, Сергей Львович,- был... |
![]() | Происхождение Александра Сергеевича Пушкина Сергей Львович (1767—1848), светский острослов и поэт-любитель, дядя по отцу, Василий Львович (1766—1830), был известным поэтом круга... | ![]() | Алексей Николаевич Толстой Гиперболоид инженера Гарина «Аэлита. Гиперболоид инженера Гарина»: Гос уч пед из во Министерства просвещения бсср; Минск; 1959 |