Бакалаврская работа. Программная модель 32-разядной МЭВМ фирмы Motorola
указателя стека. Если в процессе дальнейшей работы потребуется перевод
процессора в режим пользователя, то с помощью команды 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, |B, W, L | + Dn -> |1,(3-9,13) |
| | | | |
|ADD , Dn |B, W, L |Dn+ - Dn |(1-14),1 |
|ADDA , An |W, L | + An -> An |(1-14),2 |
|ADDI # Im, |B, W, L | + Im -> |12,(1,3-9,13) |
| | | | |
|ADDQ # Im, |B, W, L | + Im -> |12,(1-9,13) |
| | | | |
|ADDX Dy, Dx |B, W, L |Dx + Dy + X -> Dx |1,1 |
|ADDX - (Ay),- (Ax) |B, W, L | + + X |5,5 |
| | |-> | |
|SUB Dn, |B, W, L | - Dn -> |1,(3-9,13) |
| | | | |
|SUB , Dn |B, W, L |Dn+ -> |(1-14),1 |
|SUBA ,An |W, L |An- -> An |(1-14),2 |
|SUBI # Im, |B, W, L | - Im -> |12,(1,3-9,13) |
| | | | |
|SUBQ # Im, |B, W, L | - Im -> |12,(1-9,13) |
| | | | |
|SUBX Dy, Dx |B, W, L |Dx - Dy - X -> |1,1 |
| | | | |
|SUBX - (Ay), - (Ax) |B, W, L | - - X |5,5 |
| | |-> | |
|NEG |B, W, L |O - -> |(1,3-9,13) |
|NEGX |B, W, L |O - - X -> |(1,3-9,13) |
| | | | |
|ABCD Dy, Dx |W |Dx + Dy + X -> Dx |1,1 |
|ABCD - (Ay), - (Ax) |W | + + X |5,5 |
| | |-> | |
|SBCD Dy, Dx |W |Dx- Dy - X -> Dx |1,1 |
|SBCD - (Ay), - (Ax) |W | - - X |5,5 |
| | |-> | |
|NBCD |W |O - - X -> |(1,3-9,13) |
| | | | |
|MULS , Dn |W, L |Dn * -> Dn |(1,3-14),1 |
|MULS.L , Dh-Dl |L |Dn * -> Dn |(1,3-14),1 |
|MULU , Dn |W, L |Dn * -> Dn |(1,3-14),1 |
|MULU.L , Dh-Dl |L |Dl * -> |(1,3-14),1 |
| | |Dh:Dl | |
|DIVS , Dn |W, L |Dn / -> Dn |(1,3-14),1 |
|DIVS.L , Dr:Dq |L |Dr:Dq / -> |(1,3-14),1 |
| | |Dr:Dq | |
|DIVSL.L , Dr:Dq |L |Dq / -> |(1,3-14),1 |
| | |Dr:Dq | |
|DIVU , Dn |W |Dn / -> Dn |(1,3-14),1 |
|DIVU.L , Dr:Dq |L |Dr:Dq / -> |(1,3-14),1 |
| | |Dr:Dq | |
|DIVUL.L , Dr:Dq |L |Dq / -> |(1,3-14),1 |
| | |Dr:Dq | |
|CLR |B,W,L |0 -> |(1,3-9,13) |
Таблица2 - Команды логических операций
|Синтаксис |Разрядность |Операции |Адресация |
|ассемблера | | | |
|AND , Dn |B, W, L |Dn ^ -> Dn |(1, 3 - 14), 1 |
|AND Dn, |B, W, L | ^ Dn -> |1, (1,3 - 9,13) |
| | | | |
|ANDI # Im, |B, W, L | ^ Im -> |12, (1, 3 - 9,13)|
| | | | |
|ANDI # Im, CCR |W |CCR ^ Im -> CCR |12, - |
|ANDI # Im, SR |W |SR ^ Im -> SR |12, - |
|OR , Dn |B, W, L |Dn -> Dn |(1, 3 - 14), 1 |
|OR Dn, |B, W, L | Dn -> |1, (1,3 - 9,13) |
|ORI # Im, |B, W, L | Im -> |12, (1, 3 - 9,13)|
|ORI # Im, CCR |W |CCR Im -> CCR |12, - |
|ORI # Im, SR |W |SR Im -> SR |12, - |
|EOR Dn, |B, W, L | + Dn -> |1, (1, 3 - 9,13) |
| | | | |
|EORI # Im, |B, W, L |dst> + Im -> |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 | -> |(1, 3 - 9.13) |
Таблица3 - Команды сдвигов
|Синтаксис |Разрядность |Адресация |
|ассемблера | | |
|ASL Dx, Dv |B, W, L |1, 1 |
|ASL # Ns, Dv |B, W, L |12, 1 |
|ASL |W |(3 - 9,13) |
|ASR Dx, Dv |B, W, L |1,1 |
|ASR # Ns, Dv |B, W, L |12,1 |
|ASR |W |(3 - 9,13) |
|LSL Dx, Dv |B, W, L |1,1 |
|LSL # Ns, Dv |B, W, L |12,1 |
|LSL |W |(3 - 9,13) |
|LSR Dx, Dv |B, W, L |1,1 |
|LSR # Ns, Dv |B, W, L |12,1 |
|LSR |W |(3 - 9,13) |
|ROL Dx, Dv |B, W, L |1,1 |
|ROL # Ns, Dv |B, W, L |12,1 |
|ROL |W |(3 - 9,13) |
|ROR Dx, Dv |B, W, L |1,1 |
|ROR # Ns, Dv |B, W, L |12,1 |
|ROR |W |(3 - 9,13) |
|ROXL Dx, Dv |B, W, L |1,1 |
|ROXL # Ns, Dv |B, W, L |12,1 |
|ROXL |W |(3 - 9,13) |
|ROXR Dx, Dv |B, W, L |1,1 |
|ROXR # Ns, Dv |B, W, L |12,1 |
|ROXR |W |(3 - 9,13) |
Таблица4 - Команды сравнения и тестирования.
|Синтаксис ассемблера |Разрядность |Операции |Адресация |
|СMP , Dn |B, W, L |Dn - |(1 - 14), 1 |
|СMP , An |W, L |An - |(1 - 14), 2 |
|CMPI # Im, |B, W, L | - Im |12, (1, 3 - |
| | | |11,13,14) |
|CMPM (Av) +,(Ax) + |B, W, L | - |4,4 |
|CMP2 , Rn |B, W, L |(Rn)UB |(3,6-11,13,14), |
| | | |(1,2) |
|TST |B, W, L | - 0 |(1, 3 – 9,13) |
|TAS |B | - 0, 1 -> b7|(1, 3 - 14) |
Таблица 5 - Команды битовых операций.
|Синтаксис |Разрядность |Операции |Адресация |
|ассемблера | | | |
|BTST Dn, |B, L |bn -> Z |1, (1, 3 - 14) |
|BTST # Nb, |B, L |bn -> Z |12, (1, 3 - 14) |
|BSET Dn, |B, L |bn -> Z, 1 -> bn |1, (1, 3 - |
| | | |9,13,14) |
|BSET # Nb, |B, L |bn -> Z, 1 -> bn |12, (1, 3 - |
| | | |9,13,14) |
|BCLR Dn, |B, L |bn -> Z, 0 -> bn |1, (1, 3 - |
| | | |9,13,14) |
|BCLR # Nb, |B, L |bn -> Z, 0 -> bn |12, (1, 3 - |
| | | |9,13,14) |
|BCHG Dn, |B, L |bn -> Z, bn -> bn|1, (1, 3 - |
| | | |9,13,14) |
|BCHG # Nb, |B, L |bn -> Z, bn -> bn|12, (1, 3 - |
| | | |9,13,14) |
Таблица 6 - Команды управления и установки байтов.
|Синтаксис |Операции |Адресация |
|ассемблера | | |
|JMP | -> PC |(3, 6 - |
| | |11,13,14) |
|JSR |SP - 4 -> SP, PC -> |(3, 6 - |
| |(SP), -> PC |11,13,14) |
|RTS |(SP) -> PC, SP + 4 ->| |
| |SP | |
|RTR |(SP) -> CCR, SP + Z | |
| |-> SP, (SP) -> PC, SP| |
| |+ 4 -> SP | |
|Scc |Если (сс) |(1, 3 - |
| |выполняется, то 1 ...|9,13,14) |
| |1 -> , | |
| |если (сс) не | |
| |выполняется, то 0 ...| |
| |0 -> | |
Таблица 7 - Изменение признаков после выполнения команд
|Команды |X |N |Z |V |C |Примечание |
|ABCD, SBCD, NBCD |+ |? |* |? |+ |X=С - десятичный |
| | | | | | |перенос |
|ADD, ADDI, ADDQ, SUB, SUBI, SUBQ, |+ |+ |+ |+ |+ |X=С - десятичный |
|NEG | | | | | |перенос |
|ADDX, SUBX, NEGX |+ |+ |* |+ |+ |X=С - десятичный |
| | | | | | |перенос |
|MULS, MULU, DIVS, DIVU |- |+ |+ |+ |0 | |
|MOVE, MOVEQ, AND, ANDI, |- |+ |+ |0 |0 | |
|OR, ORI, EOR, EORI, NOT, CLR, | | | | | | |
|EXT, TAS, TST | | | | | | |
|CMP, CMPI, CMPM |- |+ |+ |+ |+ | |
|CMP2 |- |? |+ |? |+ | |
|BTST, BSET, BCLR, BCHG |- |- |+ |- |- |Z = bn (инверсия) |
|ASL, ASR |+ |+ |- |+ |+ |V = 1 при изменении |
| | | | | | |знака |
|LSL, LSR |+ |+ |+ |0 |+ | |
|ROL, ROR |- |+ |+ |0 |+ | |
|ROXL, ROXR |+ |+ |+ |0 |+ | |
|CHK |+ |+ |+ |+ |+ | |
|MOVE, ANDI, ORI, EORI to CCR или |+ |+ |+ |+ |+ | |
|SR | | | | | | |
В общем виде запись типовой двухадресной команды на языке ассемблера
имеет следующий вид:
COP.x ,
где в качестве COP указывается мнемокод соответствующей команды, а вместо x
ставится символ, определяющий разрядность операндов: B - байт, W - слово, L
- длинное слово. Если после мнемокода отсутствует символ разрядности, то по
умолчанию операндом служит слово.
Операнды условно обозначаются как - источник, - приемник,
причем в качестве приемника указывается операнд, на месте которого
помещается результат операции. При записи конкретных команд в качестве
, указываются символические адреса операндов на языке ассемблера
Страницы: 1, 2, 3
|