ИЗУЧЕНИЕ СИСТЕМЫ КОМАНД МИКРОПРОЦЕССОРОВ

advertisement
Государственный комитет связи и информатизации Украины
_________________________________________________________________
Одесская национальная академия связи им. А.С. Попова
Кафедра вычислительной техники и микропроцессоров
ИЗУЧЕНИЕ СИСТЕМЫ КОМАНД
МИКРОПРОЦЕССОРОВ
СЕМЕЙСТВА МС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
ImDn
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>
(все виды);
косвенно-регистровая
(все виды);
прямая (все виды)
Косвенно-регистровая;
EAAn
косвенно-регистровая
со смещением;
косвенно-регистровая
с индексированием;
прямая (все виды);
относительная
(все виды)
Такие же, как и в п. 8
32
SP–4SP,
EA(SP)
RxRy
16
B0B1
Регистровая (данные)
Регистровая
Команда 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>+AnAn
<dst>+Im<dst>
<dst>+Im<dst>
ADDX Dy,Dx
B, W, L
ADDX –(Ay),–(Ax) B, W, L
Dx+Dy+XDx
<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+XDx
<dst>+<src>+X
<dst>
Dx–Dy–XDx
<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ххх
Издательский цент ОНАС им. А. С. Попова
Download