Реферат: Бакалаврская работа. Программная модель 32-разядной МЭВМ фирмы Motorola
При включении микроконтроллера происходит автоматическая установка начального состояния регистров. В регистре SR устанавливается значение бита S=1, и процессор начинает работать в режиме супервизора. Из памяти загружаются начальные значения содержимого программного счетчика PC и указателя стека. Если в процессе дальнейшей работы потребуется перевод процессора в режим пользователя, то с помощью команды MOVE to SR в регистр SR загружается новое содержимое, в котором бит S=0. Обратный перевод в режим супервизора производится при обслуживании запросов прерывания или возникновении исключительных ситуаций, а также в процессе установки процессора в начальное состояние (повторный запуск) при поступлении внешнего сигнала сброса или команды RESET.
Регистры VBR, SFC, DFC доступны только в режиме супервизора. В 32-разрядный регистр VBR заносится базовый адрес таблицы векторов исключений. Загрузка этого регистра производится командой MOVEC. При обслуживании исключений формируемое процессором значение Av=4Ne является относительным адресом (смещением), определяющим положение выбираемого вектора в таблице, которая может быть размещена в любом месте адресного пространства. В 3-разрядные регистры SFC,DFC с помощью команды MOVEC заносится код адресного пространства, который поступает на выводы FC2-0 микроконтроллера при выполнении команды MOVES. Таким образом обеспечивается расширение адресного пространства с помощью организации виртуальной памяти
Форматы данных
Процессор выполняет обработку битов, байтов, 16-разрядных слов, 32-разрядных длинных слов и двоично-десятичных чисел (1 байт = 2 десятичных разряда). Обрабатываемые данные - операнды могут располагаться в регистрах (данных или адреса) или оперативной памяти. Для выборки слова (байты B1-0) или длинного слова (байты B3-0) команда задает адрес старшего байта N, четный или кратный четырем. При этом слова и длинные слова размещаются таким образом, что младшие байты (разряды D7-0 данных) располагаются в ячейках памяти с большими адресами: N+1 или N=3 (рис.3.3). Такое размещение байтов в памяти от старшего к младшему соответствует естественному порядку их написания слева - направо. Этот порядок адресации байтов называется в зарубежной литературе "big-endian". Он отличается от порядка "little-endian", принятого компанией INTEL и рядом других производителей, когда размещение слова начинается с младшего байта, адрес которого служит адресом слова.
МП МС86300 имеет возможность доступа в памяти к байту (8 бит), слову (16 бит) и длинному слову (32 бита). В отличие от МП фирмы Intel (8086, 80286, 80386, 80486) в МП 68300 приняты следующие соглашения:
слова (длинные слова) могут размещаться только по четным адресам;
старшие байты слова (двойного слова) располагаются в ячейках с меньшими адресами;
адресом слова (двойного слова) считается его старший байт.
Таким образом, в соответствии с концепцией, принятой фирмой Моторола, слово размещается в памяти в двух соседних ячейках и начинается со старшего байта. Это означает, что при чтении слова, размещенного по адресу Х МС68300 считывает два соседних байта, причем байт по адресу Х интерпретируется как старший, а байт по адресу Х+1 как младший. Соответственно, длинное слово размещается в четырех смежных ячейках памяти, причем старший байт длинного слова находится по меньшему адресу.
Способы адресации
Процессор CPU32 реализует следующие способы адресации операндов:
- регистровая (операнд в регистре данных или адреса),
- косвенно-регистровая (операнд в ячейке памяти, адресуемой содержимым регистра адреса),
- косвенно-регистровая с постинкрементом (операнд в ячейке памяти, адресуемой содержимым регистра адреса, которое автоматически увеличивается после выборки операнда для адресации следующей ячейки),
- косвенно-регистровая с предекрементом (операнд в ячейке памяти, адресуемой содержимым регистра адреса, которое автоматически уменьшается перед выборкой операнда для адресации предыдущей ячейки),
- косвенно-регистровая со смещением (операнд в ячейке памяти, адрес которой является суммой содержимого регистра адреса и 16-разрядного смещения d16, заданного в команде),
- косвенно-регистровая с индексированием (операнд в ячейке памяти, адрес которой является суммой содержимого регистра адреса, индексного регистра и данного в команде 8-разрядного смещения d8),
- прямая (операнд в ячейке памяти, адрес которой задается числом Abs, указанным в команде),
- относительная (операнд в ячейке памяти, адрес которой является суммой текущего содержимого программного счетчика PC и данного в команде 16-разрядного смещения d16 или базового смещения bd),
- относительная с индексированием (операнд в ячейке памяти, адрес которой является суммой содержимого программного счетчика PC, индексного регистра и данного в команде 16-разрядного смещения d16 или 32-разрядного базового смещения bd),
- непосредственная (значение операнда Im дано в команде).
Форматы команд
Команды процессора МС68300 могут содержать от одного до пяти слов. Любая команда всегда расположена по четному адресу. Формат команды в общем виде показан на рисунке 1:
Командное слово (первое слово, определяющее операцию и способ адресации) |
Непосредственный операнд (одно или два слова) |
Эффективный адрес источника (одно или два слова) |
Смещение (одно или два слова) |
Рисунок 1.
Система команд CPU32
Процессор CPU32 выполняет набор из 139 команд, которые реализуют следующие группы операций:
- операции пересылки,
- арифметические операции,
- логические операции,
- операции сдвига,
- операции сравнения и тестирования,
- битовые операции,
- операции управления;
- операции условной установки байтов.
Таблица1 - Набор команд процессора CPU32
Синтаксис ассемблера |
Разрядность |
Операция |
Адресация |
ADD Dn, <EA> | B, W, L | <dst> + Dn -> <dst> | 1,(3-9,13) |
ADD <EA> , Dn | B, W, L | Dn+ <src> - Dn | (1-14),1 |
ADDA <EA>, An | W, L | <dst> + An -> An | (1-14),2 |
ADDI # Im, <EA> | B, W, L | <dst> + Im -> <dst> | 12,(1,3-9,13) |
ADDQ # Im, <EA> | B, W, L | <dst> + Im -> <dst> | 12,(1-9,13) |
ADDX Dy, Dx | B, W, L | Dx + Dy + X -> Dx | 1,1 |
ADDX - (Ay),- (Ax) | B, W, L | <dst> + <src> + X -> <dst> | 5,5 |
SUB Dn, <EA> | B, W, L | <dst> - Dn -> <dst> | 1,(3-9,13) |
SUB <EA>, Dn | B, W, L | Dn+ <src> -> <dst> | (1-14),1 |
SUBA <EA>,An | W, L | An- <src> -> An | (1-14),2 |
SUBI # Im, <EA> | B, W, L | <dst> - Im -> <dst> | 12,(1,3-9,13) |
SUBQ # Im, <EA> | B, W, L | <dst> - Im -> <dst> | 12,(1-9,13) |
SUBX Dy, Dx | B, W, L | Dx - Dy - X -> <dst> | 1,1 |
SUBX - (Ay), - (Ax) | B, W, L | <dst> - <src> - X -> <dst> | 5,5 |
NEG <EA> | B, W, L | O - <dst> -> <dst> | (1,3-9,13) |
NEGX <EA> | B, W, L | O - <dst> - X -> <dst> | (1,3-9,13) |
ABCD Dy, Dx | W | Dx + Dy + X -> Dx | 1,1 |
ABCD - (Ay), - (Ax) | W | <dst> + <src> + X -> <dst> | 5,5 |
SBCD Dy, Dx | W | Dx- Dy - X -> Dx | 1,1 |
SBCD - (Ay), - (Ax) | W | <dst> - <src> - X -> <dst> | 5,5 |
NBCD <EA> | W | O - <dst> - X -> <dst> | (1,3-9,13) |
MULS <EA>, Dn | W, L | Dn * <src> -> Dn | (1,3-14),1 |
MULS.L <EA>, Dh-Dl | L | Dn * <src> -> Dn | (1,3-14),1 |
MULU <EA>, Dn | W, L | Dn * <src> -> Dn | (1,3-14),1 |
MULU.L <EA>, Dh-Dl | L | Dl * <src> -> Dh:Dl | (1,3-14),1 |
DIVS <EA>, Dn | W, L | Dn / <src> -> Dn | (1,3-14),1 |
DIVS.L <EA>, Dr:Dq | L | Dr:Dq / <src> -> Dr:Dq | (1,3-14),1 |
DIVSL.L <EA>, Dr:Dq | L | Dq / <src> -> Dr:Dq | (1,3-14),1 |
DIVU <EA>, Dn | W | Dn / <src> -> Dn | (1,3-14),1 |
DIVU.L <EA>, Dr:Dq | L | Dr:Dq / <src> -> Dr:Dq | (1,3-14),1 |
DIVUL.L <EA>, Dr:Dq | L | Dq / <src> -> Dr:Dq | (1,3-14),1 |
CLR <EA> | B,W,L | 0 -> <dst> | (1,3-9,13) |
Таблица2 - Команды логических операций
Синтаксис ассемблера |
Разрядность |
Операции |
Адресация |
AND <EA>, Dn | B, W, L | Dn ^ <src> -> Dn | (1, 3 - 14), 1 |
AND Dn, <EA> | B, W, L | <dst> ^ Dn -> <dst> | 1, (1,3 - 9,13) |
ANDI # Im, <EA> | B, W, L | <dst> ^ Im -> <dst> | 12, (1, 3 - 9,13) |
ANDI # Im, CCR | W | CCR ^ Im -> CCR | 12, - |
ANDI # Im, SR | W | SR ^ Im -> SR | 12, - |
OR <EA>, Dn | B, W, L | Dn <src> -> Dn | (1, 3 - 14), 1 |
OR Dn, <EA> | B, W, L | <dst> Dn -> <dst> | 1, (1,3 - 9,13) |
ORI # Im, <EA> | B, W, L | <dst> Im -> <dst> | 12, (1, 3 - 9,13) |
ORI # Im, CCR | W | CCR Im -> CCR | 12, - |
ORI # Im, SR | W | SR Im -> SR | 12, - |
EOR Dn, <EA> | B, W, L | <dst> + Dn -> <dst> | 1, (1, 3 - 9,13) |
EORI # Im, <EA> | B, W, L | dst> + Im -> <dst> | 12, (1, 3 - 9,13) |
EORI # Im, CCR | W | CCR + Im -> CCR | 12, - |
EORI # Im, SR | W | SR + Im -> SR | 12, - |
NOT | B, W, L | <dst> -> <dst> | (1, 3 - 9.13) |