Государственный комитет связи и информатизации Украины _________________________________________________________________ Одесская национальная академия связи им. А.С. Попова Кафедра вычислительной техники и микропроцессоров ИЗУЧЕНИЕ СИСТЕМЫ КОМАНД МИКРОПРОЦЕССОРОВ СЕМЕЙСТВА МС68ххх Методическое руководство к лабораторной работе по дисциплине “Вычислительная техника и микропроцессоры” для специальностей: 8. 092402, 7. 092402, 7. 092407, 09. 01 УТВЕРЖДЕНО советом факультета многоканальной электросвязи Протокол № 5 от 23.02.2001 г. Одесса 2001 2 Изучение системы команд микропроцессоров семейства МС68ххх УДК 681.335.5(075) План НМИ 2000/2001 уч. г. Составители Рецензенты А.Б. Коханов, В.Ф. Литовкин Б.С. Владишевский И.Е. Киреев Ответственный редактор В.А. Балашов Редактор Компьютерная правка и макетирование И.В. Ращупкина Е.С. Корнейчук В методическом пособии приводятся система команд микропроцессора МС68020. Приводится домашнее задание и форма отчетности по лабораторной работе. ОДОБРЕНО на заседании кафедры вычислительной техники и микропроцессоров и рекомендовано к печати. Протокол № 5 от 22.01.2001 г. Издательский цент ОНАС им. А. С. Попова 3 Изучение системы команд микропроцессоров семейства МС68ххх 1 Цель работы Целью работы является изучение системы команд 32-разрядного микропроцессора МС68020, а также приобретение навыков программирования и отладки программ, написанных на языке ассемблера МС68ххх (микропроцессора МС68000, МС68020, МС68030, МС68040, МС68060). 2 Система команд микропроцессора МС68020 2.1 Форматы типовых команд Выполняемые микропроцессором команды могут быть двухадресными, одноадресными и безадресными. На рис. 2.1 показан формат типовой двухадресной команды. 15 12 11 COP 10 9 Rn OPM 7 6 3 2 MODE 0 REG Рисунок 2.1 – Формат двухадресной команды Вверху над форматом команды указаны интервалы разрядов слова, которые занимают указанные в команде поля. Например, поле REG занимает разрядную сетку с 0-го по 2-й разряды включительно. Поле COP определяет вид операции, поле OPM – разрядность операндов и размещение результатов, поле Rn содержит номер регистра n, в котором находится один операнд, поля MODE и REG задают способ адресации второго операнда. Например. Для регистровой адресации: Таблица 2.1 Значения режимов для регистровой адресации Вид адресации MODE REG Данные 000 n Синтаксис ассемблера Dn Адрес 001 n An Издательский цент ОНАС им. А. С. Попова 4 Изучение системы команд микропроцессоров семейства МС68ххх Таким образом, при двухадресной команде один операнд всегда выбирается из регистра, второй – из регистра или памяти, а результат операции размещается на месте одного из операндов. При адресации с индексированием команда, кроме слова, приведенного на рис. 2.1, содержит второе слово, приведенное на рис. 2.2. 15 14 D/A 12 Xn 11 W/L 10 000 8 7 0 d8 Рисунок 2.2 – Второе слово при адресации с индексированием 15-й бит D/A указывает, какого типа регистр используется в качестве индексного: а) при D/A = 0 используются регистры данных Dn; б) при D/A = 1 используются регистры адреса An. Поле Xn содержит номер регистра n, в качестве которого могут использоваться регистры данных Dn и регистры адреса An. 11-й бит W/L определяет разрядность индекса: а) при W/L = 0 индексом служит содержимое 16-ти младших разрядов индексного регистра, которые расширяются знаковым разрядом до 32-разрядного числа; б) при W/L = 1 индексом служит 32-разрядное содержимое индексного регистра. 10, 9 и 8-й биты равны нулю. Поле d8 содержит 8-разрядное смещение, данное в дополнительном коде. Если при адресации первого (<src>) или второго (<dst>) операнда используется 16-разрядное смещение d16 либо абсолютный адрес, имеющий разрядность слова (Abs. W) или двойного слова (Abs. L), то они также указываются в отдельных словах команды (т. е. в третьем, четвертом и пятом словах). Поэтому команды микропроцессора имеют длину от одного до пяти слов. 2.2 Система команд Микропроцессоры МС68ххх выполняют набор из 111 базовых команд. Микропроцессоры МС68020, МС68030, МС68040 имеют наборы дополнительных команд (например, команды с плавающей точкой). Базовые команды реализуют следующие группы операций: – операции пересылки; – арифметические операции; – логические операции; – операции сдвига; Издательский цент ОНАС им. А. С. Попова Изучение системы команд микропроцессоров семейства МС68ххх 5 – операции сравнения и тестирования; – битовые операции; – операции управления; – операции условной установки байтов. Основные базовые команды микропроцессоров МС68ххх приведены в таблице 2.2 (базовыми командами являются команды микропроцессора МС68000). Таблица 2.2 – Основные команды Номер Мнемокод команды Выполняемая операция 1 ABCD Сложение двоично-десятичных чисел 2 ADD Сложение двоичных чисел 3 AND Логическая операция n 4 ASL Арифметический сдвиг влево 5 ASR Арифметический сдвиг вправо 6 Bcc 7 BCHG 8 BCLR Условное ветвление по условию СС Тестирование бита и инверсия его значения Тестирование бита и установка его в 0 9 BRA Безусловное ветвление 10 BSET Тестирование бита и установка его в 1 11 BSR Вызов подпрограммы 12 BTST Тестирование бита 13 CHK 14 CLK Проверка операнда на попадание в заданный диапазон Установка нулевого значения операнда 15 CMP Сравнение операндов 16 DBcc Организация циклов с условным выходом 17 DIVS Деление операндов со знаком 18 DIVU Деление операндов без знака Издательский цент ОНАС им. А. С. Попова 6 Изучение системы команд микропроцессоров семейства МС68ххх Продолжение таблицы 2.2 Номер Мнемокод команды Выполняемая операция 19 EOR 20 EXG Логическая операция «Исключающее ИЛИ» Обмен содержимым регистров 21 EXT Расширение знака операнда 22 ILLEGAL Прерывание при неправильном коде команды 23 JMP Безусловный переход 24 JSR Переход к подпрограмме 25 LEA Загрузка в регистр эффективного адреса ЕА 26 LINK Организация связи стеков 27 LSL Логический сдвиг влево 28 LSR Логический сдвиг вправо 29 MOVE Пересылка операндов 30 MULS Умножение со знаком 31 MULU Умножение операндов без знака 32 NBCD Изменение знака двоично-десятичного числа 33 NEG Изменение знака двоичного числа 34 NOP Отсутствие операции 35 NOT Логическая операция НЕ 36 OR Логическая операция ИЛИ 37 PEA Загрузка в стек эффективного адреса ЕА 38 RESET Установка начального состояния 39 ROL Циклический сдвиг влево 40 ROR Циклический сдвиг вправо Издательский цент ОНАС им. А. С. Попова Изучение системы команд микропроцессоров семейства МС68ххх 7 Продолжение таблицы 2.2 Номер Мнемокод команды Выполняемая операция 41 ROXL Циклический сдвиг влево с расширением 42 ROXR Циклический сдвиг вправо с расширением 43 RTE 44 RTS 45 RTR Возврат из подпрограммы с восстановлением признаков 46 SBCD Вычитание двоично-десятичных чисел 47 Scc Условная установка байта 48 STOP Останов выполняемой программы 49 SUB Вычитание двоичных чисел 50 SWAP Перестановка байтов в слове 51 TAS 52 TRAP Тестирование операнда с установкой в 1 его старшего Прерывание 53 TRAPV Прерывание при переполнении 54 TST Тестирование операнда 55 UNLK Операция, обратная LINK Возврат из подпрограммы обслуживания прерываний Возврат из подпрограммы Некоторые команды микропроцессора являются привилегированными, т.е. выполняются только в режиме супервизора. Попытка их выполнения в режиме пользователя вызывает прерывание выполнения программы. 2.3 Команды пересылки Основной в этой группе (табл. 2.3) команд является команда MOVE, которая допускает использование любых способов для адресации операнда-источника <scr> и большинства способов для адресации операнда-приемника <dst>. Имеется ряд вариантов этой команды (без привилегированных команд). Издательский цент ОНАС им. А. С. Попова 8 Изучение системы команд микропроцессоров семейства МС68ххх Таблица 2.3 Команды пересылки НоСинтаксис ассемблера мер 1 MOVE <EA>, <EA> Разрядность Операция Адресация B, W, L <scr><dst> Все виды (кроме регистровой – адрес) Все виды Непосредственная, регистровая (данные) Регистровая (данные) 2 3 MOVEA <EA>, An MOVEQ # Im, Dn W, L 32 <scr>An ImDn 4 MOVEP Dn, (d16, An) W, L Dn<dst> 5 6 MOVEP (d16, An), Dn MOVEM <list>, <EA> W, L W, L 7 MOVEM <EA>,<list> W, L 8 LEA <EA>, An 32 9 PEA <EA> 32 10 EXG Rx, Ry 11 SWAP Dn Регистровая (данные) <scr>Dn <list><dst> Регистровая (данные); регистровая (адрес); косвенно-регистровая (все виды); прямая (все виды) Регистровая <scr><list> (все виды); косвенно-регистровая (все виды); прямая (все виды) Косвенно-регистровая; EAAn косвенно-регистровая со смещением; косвенно-регистровая с индексированием; прямая (все виды); относительная (все виды) Такие же, как и в п. 8 32 SP–4SP, EA(SP) RxRy 16 B0B1 Регистровая (данные) Регистровая Команда MOVEA выполняет загрузку адресных регистров. При словарной разрядности в регистр Аn загружается слово, адресованное эффективным адресом ЕА, которое расширяется знаком до 32-х разрядов. Издательский цент ОНАС им. А. С. Попова Изучение системы команд микропроцессоров семейства МС68ххх 9 Если непосредственный операнд, загружаемый в регистр данных, имеет не более 8-ми значащих разрядов (значения в диапазоне 0...255), то эту операцию рекомендуется выполнять командой MOVEQ. Она имеет меньшую длину и время выполнения, чем команда MOVE с непосредственной адресацией. Команда MOVEP обеспечивает пересылку 16- или 32-разрядных операндов через 8-разрядные периферийные устройства (из или в регистры данных). Команда MOVEM осуществляет групповую пересылку 16- или 32разрядных операндов между регистрами и памятью. Состав регистров, участвующих в обмене, задается списком <list>, в котором регистры An, Dn указываются в произвольном порядке, разделяемые символом « / ». (Например: А1/А3/D0/D4). Группа соседних регистров может задаваться перечислением: Rx...Ry (например: D0...D5). Адрес ЕА определяет начальную ячейку памяти, которая после каждого цикла пересылки изменяется на 2 или 4 в зависимости от разрядности операндов. Например, команда MOVE.L D1/D4–D7/A3/A6,(A0) выполнит пересылку содержимого регистров D1, D4, D5, D6, D7, A3 и А6 (всего 7 регистров) в память, начиная с адреса, заданного содержимым регистра (А0). Так как после команды стоит символ L, то будет производиться пересылка длинных слов (т. е. 4 байта каждое значение разряда). Так как регистров 7, а слова содержат по 4 байта, то всего будет заполнено 28 байтов. Если используется адресация с постинкрементом, то сначала производиться загрузка из памяти перечисленных регистров данных, затем – регистров адреса, начиная с регистров, имеющих меньший номер. Если используется адресация с предекрементом, то пересылка содержимого перечисленных регистров в память производится в обратном порядке, начиная с регистра адреса, имеющего наибольший номер. Команды LEA и PEA производят определение адреса ЕА в соответствии с заданным способом адресации и помещают его в указанный регистр адреса An или стек, адресуемый с помощью указателя стека USP (указатель стека пользователя – регистр А7). Команда EXG выполняет обмен содержимым между двумя любыми регистрами адреса или данных. Команда SWAP осуществляет перестановку местами старшего байта В1 и младшего байта В0 в указанном регистре данных Dn. В режиме пользователя разрешается использовать команды MOVE CCR,<EA> MOVE <EA>,CCR которые выполняют запись по эффективному адресу (<src>) признаков из регистра SR и наоборот. Допускается при этом только загрузка младшего байта этого регистра. Издательский цент ОНАС им. А. С. Попова 10 Изучение системы команд микропроцессоров семейства МС68ххх 2.4 Команды арифметических операций Команды арифметических операций приведены в табл. 2.4. Таблица 2.4 – Команды арифметических операций Синтаксис ассемблера ADD Dn, <EA> ADD <EA>,Dn Разрядность Операция Адресация B, W, L <dst>+Dn<dst> Все виды Регистровая, косвенная, косвенная с индексированием, прямая, относительная Все виды B, W, L Dn+<src>Dn ADDA <EA>,An W, L ADDI #Im, <EA> B, W, L ADDQ #Im, <EA> B, W, L <dst>+AnAn <dst>+Im<dst> <dst>+Im<dst> ADDX Dy,Dx B, W, L ADDX –(Ay),–(Ax) B, W, L Dx+Dy+XDx <dst>+<src>+X <dst> <dst>–Dn<dst> An–<src>An <dst>–Im<dst> SUB Dn, <EA> SUBA <EA>,An SUB #Im, <EA> B, W, L W, L B, W, L SUBX Dy,Dx B, W, L SUBX –(Ay),–(Ax) B, W, L NEG <EA> B, W, L ABCD Dy,Dx 8 ABCD –(Ay),–(Ax) 8 SBCD Dy,Dx 8 SBCD –(Ay),–(Ax) 8 Dx–Dy–X<dst> <dst>–<src>– X<dst> Дополнительный код<dst> Dx+Dy+XDx <dst>+<src>+X <dst> Dx–Dy–XDx <dst>–<src>– X<dst> Регистровая, косвеннорегистровые (все), прямая Регистровая (данные) Косвенно-регистровая с преддекрементом Все Все Регистровая (данные), косвенно-регистровые (все), прямая; непосредственная Регистровая (данные) Косвенная с преддекрементом Регистровая, косвенная, прямая Регистровая (данные) Косвенная с преддекрементом Регистровая Косвенная с предекрементом Издательский цент ОНАС им. А. С. Попова Изучение системы команд микропроцессоров семейства МС68ххх 11 Продолжение таблицы 2.4 Синтаксис ассемблера NBCD <EA> 8 MULS <EA>,Dn Операция Адресация Регистровая (данные), косвенные (все), прямая 16 X=0 – дополнительный код Х=1 – обратный код Dn*<src>Dn MULU <EA>,Dn 16 Dn*<src>Dn DIVS <EA>,Dn 16 Dn/<src>Dn DIVU <EA>,Dn 16 Dn/<src>Dn EXT Dn CLR <EA> Разрядность W, L B, W, L (sign) (Dn) Dn 0<dst> Регистровая (данные), косвенно-регистровые (все), прямая, непосредственная, относительная Регистровая (данные), косвенно-регистровые (все), прямая, непосредственная, относительная Регистровая (данные), косвенно-регистровые (все), прямая, непосредственная, относительная Регистровая (данные), косвенно-регистровые (все), прямая, непосредственная, относительная Регистровый (данные) Регистровый, косвенные, прямые Команды сложения ADD и вычитания SUB используют одинаковые методы адресации. Команды ADDA и SUBA позволяют модифицировать содержимое адресных регистров. Команды ADDX, SUBX выполняют сложение и вычитание содержимого регистров данных и ячеек памяти с учетом признака Х, устанавливаемого при формировании переноса и заема. При обращении к памяти эти команды реализуют предекрементную адресацию, которая ускоряет обработку последовательно размещенных массивов данных. Издательский цент ОНАС им. А. С. Попова 12 Изучение системы команд микропроцессоров семейства МС68ххх Непосредственная адресация используется в двух вариантах команд сложения и вычитания: обычном и быстром. Команды ADDI, SUBI реализуют обычный вариант, при котором непосредственный операнд Im может иметь до 32х двоичных разрядов. В командах ADDQ, SUBQ реализуется быстрый вариант непосредственной адресации. Команда NEG изменяет знак операнда путем его перевода в дополнительный код. Такая же операция с учетом признака Х производится командой NEGX, которая используется для последовательного преобразования операндов, состоящих из нескольких слов или двойных слов. Команды ABCD, SBCD выполняют сложение и вычитание 8-разрядных упакованных двоично-десятичных чисел, представляющих два десятичных разряда (от 0 до 99). При этих операциях учитывается знак х. Команда NBCD изменяет знак операнда, формируется при этом: если х = 0 – дополнительный код (дополнение до 10); если х = 1 – обратный код (дополнение до 9). Операции умножения MUL и деления DIV выполняются MULS, DIVS – со знаком; MULU, DIVU – без знака. Один из 16-разрядных операндов всегда размещается в регистре Dn. Получаемый результат (32 разряда) помещается также в Dn. При делении делимое (32 разряда) помещается в Dn (делимое), в этом же регистре помещается результат: – частное в 16 младших разрядов; – остаток в 16 старших разрядов. Команды расширения EXT служат для преобразования байта в слово (EXT или EXT.W) или слова – в двойное слово (EXT.L). Команда EXT.L выполняется обычно перед делением для получения из 16разрядного числа 32-разрядного числа. Команда очистки CLR устанавливает нулевое значение (.B, .W, .L). По результатам выполнения арифметических и логических операций и ряда других команд производится установка соответствующих значений признаков C, V, Z, N, X в младшем байте регистра SR. (То же для команд ANDI, ORI, EORI, to CCR). 2.5 Команды логических операций Микропроцессор производит логические операции И (AND), ИЛИ (OR), Исключающего ИЛИ (EOR) (табл. 2.5). Команда NOT инвертирует значение каждого разряда операнда. Издательский цент ОНАС им. А. С. Попова Изучение системы команд микропроцессоров семейства МС68ххх 13 Таблица 2.5 – Команды логических операций Синтаксис ассемблера Логическое И AND <EA>,Dn AND Dn, <EA> Разрядность B, W, L B, W, L Операция Регистровая (данные), косвенные, относительная, прямая Логическое ИЛИ Регистровая (данные), косвенные, OR <EA>,Dn B, W, L относительная, прямая OR Dn, <EA> B, W, L Исключающее ИЛИ Регистровая (данные), косвенные, EOR Dn, <EA> B, W, L относительная, прямая EOR #Im, <EA> B, W, L Инверсия Регистровая (данные), косвенные, NOT <EA> B, W, L относительная, прямая EA – адрес; src – источник операнда; dst –передатчик операнда. 3 Контрольные вопросы 1 2 3 4 5 6 7 8 9 10 11 12 Какова цель работы? Каков формат типовой команды? Каков формат команды при адресации с индексированием? Какие операции реализуются в микропроцессорах МС68ххх? Какие функции выполняет команда MOVE? Какие функции выполняет команда MOVEQ? Какие функции выполняет команда ADD? Какие функции выполняет команда AND? Какие функции выполняет команда ASL? Какие функции выполняет команда DIVS? Какие функции выполняет команда MULS? Какие функции выполняет команда EOR? 4 Домашнее задание Составить программу пересылки данных и арифметических операций. 1 Записать значение операнда ХХ в регистр Dn. 2 Записать адрес (4006FE) ячейки памяти в Am. 3 Записать по адресу регистра Am содержимое Dn в ячейку памяти. 4 Увеличить содержимое Am на 2 и записать содержимое Dn по адресу, находящемуся в регистре Am. Проверить операнд ячейки (Am). Издательский цент ОНАС им. А. С. Попова 14 Изучение системы команд микропроцессоров семейства МС68ххх 5 Записать значение ХХ в регистр D(n+1). Записать в Am значение 20037F. 6 Содержимое Am умножить на 2 и поместить результат в Am. Уменьшить Am на 2 и результат записать в Am. 7 Записать содержимое регистра D(n+1) в ячейку памяти с адресом, хранящимся в Am. Проверить операнд ячейки (Am). 8 Составить блок-схему программы домашнего задания. Значения n, m и ХХ см. в таблице 4.1. Таблица 4.1 – Параметры домашнего задания Последняя цифра студенческого билета 0 1 2 3 4 5 6 7 8 9 n ХХ 0 1 2 3 4 5 6 3 4 5 5555 F5F5 3434 1616 1818 2020 1111 1414 1515 2121 Предпоследняя цифра студенческого билета m 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 1 2 3 5 Лабораторное задание 1 Представить преподавателю на проверку программу домашнего задания. Издательский цент ОНАС им. А. С. Попова Изучение системы команд микропроцессоров семейства МС68ххх 15 2 С помощью директивы AS ввести программу домашнего задания в память контроллера, начиная с адреса 400600 (и записать в протокол конечный адрес вашей программы). 3 С помощью директивы дисассемблера DS просмотреть набранную программу на дисплее, начиная с адреса 400600 и заканчивая конечным адресом программы. Пример F>DS BLOCK START ENTER ADDRESS: 400600 BLOCK END ENTER ADDRESS: конечный адрес высшей программы (смотри 2). 4 С помощью директивы SS (построчное исполнение команд) проверить правильность выполнения вашей программы, начиная с адреса 400600. 5 С помощью директивы МО (адрес ячейки памяти) проверить правильность записи операнда ХХ в ячейки, адреса которых были в регистре Am в процессе выполнения программы. 6 Содержание отчета В отчете должны быть представлены: 1 Цель работы. 2 Программа домашнего задания. 3 Расчет номеров ячеек, адреса которых находились в регистре Am в ходе выполнения программы. 4 Копия строчек директивы МО при просмотре ячеек памяти (списать с экрана монитора) и дампов регистров при выполнении пункта 4 лабораторного задания. 5 Выводы. Список рекомендованной литературы 1 Шагурин Н.И. Микропроцессоры и микроконтроллеры фирмы MOTOROLA. М.: Радио и связь, 1999. – 556 с. 2 http://www..motorola.com 3 http://www.motorola.ru 4 http//www..motorola.com/semiconductors/products По этому адресу Вы можете бесплатно заказать интересующую Вас документацию (1, 2 шт.) в печатном или в электронном виде на CD. Издательский цент ОНАС им. А. С. Попова 16 Изучение системы команд микропроцессоров семейства МС68ххх Издательский цент ОНАС им. А. С. Попова