Рефераты. Бакалаврская работа. Программная модель 32-разядной МЭВМ фирмы Motorola p>
Таблица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
- длинное слово. Если после мнемокода отсутствует символ разрядности, то по умолчанию операндом служит слово.

Операнды условно обозначаются как - источник, - приемник, причем в качестве приемника указывается операнд, на месте которого помещается результат операции. При записи конкретных команд в качестве
, указываются символические адреса операндов на языке ассемблера в соответствии с используемым способом их адресации. Для одноадресных команд в поле операндов дается один символический адрес, в безадресных командах адрес операнда в явном виде не задается. При непосредственной адресации вместо указывается значение операнда Im, перед которым ставится префиксный символ #.

Числа Im, d8, d16, bd, Abs.W, Abs.L в поле операндов могут даваться в различных системах счисления, которые определяются префиксным символом:

& - десятичное число,

% - двоичное число,

@ - восьмеричное число,

$ - шестнадцатиричное число.

При отсутствии префиксного символа число воспринимается как десятичное.

С целью повышения производительности в CPU32 организован трехступенчатый конвейер выполняемых команд. Контроль состояния конвейера обеспечивается с помощью выходных сигналов процессора:

IPIPE# - принимает значение 0 в первом такте выполнения каждой команды в конвейере;

IFETCH# - принимает значение 0 при загрузке очередной команды в конвейер, а также при освобождении конвейера (отсутствии команд).

Данные сигналы могут использоваться внешним анализатором для контроля текущего состояния процессора.

Ниже в этом разделе рассматриваются команды, выполняемые процессором
CPU32. В таблицах для каждой команды дан ее синтаксис на языке ассемблера и указана разрядность операндов: фиксированная (указывается числом) или изменяемая (определяется символом B,W,L, который ставится после мнемокода команды). Операнды, адрес которых вычисляется в соответствии с заданным способом адресации, обозначены символами . При выполнении многих команд для вычисления EA можно использовать только определенные способы адресации.

Команды MOVE, MOVEA и MOVEQ

Команда MOVE, в зависимости от формата её операнда, может перемещать байт, слово или длинное слово из регистра в регистр, между регистром и памятью и между памятью и памятью. Эта команда может также перемещать слово в (из) регистра состояния и длинное слово между пользовательским указателем стека (USP) и регистром адреса. Когда USP определён как операнд, или регистр состояния (SR) - как приёмник операнда, команда становится привилегированной и, следовательно, не может быть выполнена в пользовательском режиме.

Команда MOVEA (move address) предназначена для инициализации адресного регистра. Только слово и длинное слово, как операнды, возможно перемещать непосредственно в адресный регистр. Для операции со словом, операнд- источник перед помещением в регистр адреса переводится в 32-х разрядную сетку с учётом знака.

Команда MOVEQ (move quick) - это укороченная форма команды перемещения непосредственного операнда в регистр данных. Непосредственный операнд ограничен диапазоном от -128 до 127. Под размерностью операции подразумевается длинное слово. Следовательно, 8-битный непосредственный операнд должен быть преобразован в 32-битовый знаковый перед перемещением его в приёмник, которым является регистр данных. Некоторые ассемблеры могут различать три формы: MOVE data, MOVEA и MOVEQ по операндам, т.к. каждая форма определяется своим единственным типом операнда. Для таких ассемблеров некоторые мнемоники команды MOVE могут быть использованы также успешно для
MOVEA и MOVEQ, т. к. соответствующие коды операции ассемблируются согласно операнду.

Для иллюстрации работы команды MOVE, присвоим D1=56789ABC, A1=01020304 и CCR=0010001 установим перед выполнением команды. После того, как показанные ниже команды будут выполнены, мы получим следующие результаты:

MOVE #0,CCR На регистр или память нет воздействия,

N=0, Z=0, V=0, C=0, X=0

MOVE.W A1,D1 D1=56780304,

N=0, Z=0, V=0, C=0, X=1

MOVE D1,A1 A1=FFFF9ABC,

N=0, Z=0, V=0, C=1, X=1

MOVE #-10,D1 D1=FFFFFFF6,

N=1, Z=0, V=0, C=0, X=1

Команды MOVEM и MOVEP

Команда MOVEM (move multiple register) переносит слово или длинное слово между списком регистров и последовательно идущими участками памяти. В случае, когда слово перемещают в регистр, каждое слово памяти должно быть преобразовано в 32-х разрядную сетку с учётом знака перед загрузкой в соответствующий регистр. Каждый регистр, участвующий в перемещении, может быть указан в списке и отделён символом "/", возможно также указание в списке начального и конечного регистра, разделенных символом "-". В памяти выделенные регистры всегда располагаются так, что D0 переписывается по младшему адресу, D1 в следующий, ... , затем с A0 по A7, причем A7 записывается в самый верхний адрес памяти. При перемещении регистров в память адрес операнда памяти может определяться в зависимости от управляющего способа адресации или режимом с предекрементом. Для обратного перемещения эффективный адрес может быть определён в зависимости от управляющего способа адресации или режимом с постинкрементом.

Типовое применение команды MOVEM - это запись и восстановление регистров в стек при обращении к подпрограммам. Перед вызовом подпрограммы все регистры могут быть записаны в стек системы посредством выполнения команды

MOVEM.L D0-D7/A0-A6,-(A7)

При возврате в управляющую программу, эти регистры восстанавливаются к своему первоначальному виду командой

MOVEM.L (A7)+,D0-D7/A0-A6

Заметьте, что хотя команда MOVEM.L (A7),D0-D7/A0-A6 будет также восстанавливать содержимое записанных регистров, но указатель стека A7 при этом не будет обновлён с присвоением значения, которое было изначально в вершине стека.

Команда MOVEP (move peripherial data) предназначена для облегчения программного ввода/вывода. Множество интерфейсов ввода/вывода - 8-битные устройства. Для простоты связи между 16-битной адресной шиной и 8-битным устройством ввода/вывода, устройство соединяется с каждым младшим или старшим байтом шины данных. В случае соединения с младшим байтом, все внутренние регистры устройства доступны через последовательность нечётных адресов. В другой конфигурации все внутренние регистры доступны через последовательность чётных адресов. Команда MOVEP может осуществлять ввод/вывод данных из (в) двух (для операции со словом) или четырёх (для операции с длинным словом) последовательно расположенных регистров устройства ввода/вывода. Только косвенный регистровый способ адресации со смещением допускается для определения порта ввода/вывода. На Рис. 14 показаны два примера работы команды MOVEP.

Страницы: 1, 2, 3, 4



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.