Реферат: Бакалаврская работа. Программная модель 32-разядной МЭВМ фирмы Motorola
br>Таблица3 - Команды сдвигов
Синтаксис ассемблера |
Разрядность |
Адресация |
ASL Dx, Dv | B, W, L | 1, 1 |
ASL # Ns, Dv | B, W, L | 12, 1 |
ASL <EA> | W | (3 - 9,13) |
ASR Dx, Dv | B, W, L | 1,1 |
ASR # Ns, Dv | B, W, L | 12,1 |
ASR <EA> | W | (3 - 9,13) |
LSL Dx, Dv | B, W, L | 1,1 |
LSL # Ns, Dv | B, W, L | 12,1 |
LSL <lEA> | W | (3 - 9,13) |
LSR Dx, Dv | B, W, L | 1,1 |
LSR # Ns, Dv | B, W, L | 12,1 |
LSR <lEA> | W | (3 - 9,13) |
ROL Dx, Dv | B, W, L | 1,1 |
ROL # Ns, Dv | B, W, L | 12,1 |
ROL <EA> | W | (3 - 9,13) |
ROR Dx, Dv | B, W, L | 1,1 |
ROR # Ns, Dv | B, W, L | 12,1 |
ROR <EA> | W | (3 - 9,13) |
ROXL Dx, Dv | B, W, L | 1,1 |
ROXL # Ns, Dv | B, W, L | 12,1 |
ROXL <EA> | W | (3 - 9,13) |
ROXR Dx, Dv | B, W, L | 1,1 |
ROXR # Ns, Dv | B, W, L | 12,1 |
ROXR <EA> | W | (3 - 9,13) |
Таблица4 - Команды сравнения и тестирования.
Синтаксис ассемблера |
Разрядность |
Операции |
Адресация |
СMP <EA>, Dn | B, W, L | Dn - <src> | (1 - 14), 1 |
СMP <EA>, An | W, L | An - <src> | (1 - 14), 2 |
CMPI # Im, <EA> | B, W, L | <dst> - Im | 12, (1, 3 - 11,13,14) |
CMPM (Av) +,(Ax) + | B, W, L | <dst> - <src> | 4,4 |
CMP2 <EA>, Rn | B, W, L | (Rn)<LB, (Rn)>UB | (3,6-11,13,14), (1,2) |
TST <EA> | B, W, L | <dst> - 0 | (1, 3 – 9,13) |
TAS <EA> | B | <dst> - 0, 1 -> b7 | (1, 3 - 14) |
Таблица 5 - Команды битовых операций.
Синтаксис ассемблера |
Разрядность |
Операции |
Адресация |
BTST Dn, <EA> | B, L | bn -> Z | 1, (1, 3 - 14) |
BTST # Nb, <EA> | B, L | bn -> Z | 12, (1, 3 - 14) |
BSET Dn, <EA> | B, L | bn -> Z, 1 -> bn | 1, (1, 3 - 9,13,14) |
BSET # Nb, <EA> | B, L | bn -> Z, 1 -> bn | 12, (1, 3 - 9,13,14) |
BCLR Dn, <EA> | B, L | bn -> Z, 0 -> bn | 1, (1, 3 - 9,13,14) |
BCLR # Nb, <EA> | B, L | bn -> Z, 0 -> bn | 12, (1, 3 - 9,13,14) |
BCHG Dn, <EA> | B, L | bn -> Z, bn -> bn | 1, (1, 3 - 9,13,14) |
BCHG # Nb, <EA> | B, L | bn -> Z, bn -> bn | 12, (1, 3 - 9,13,14) |
Таблица 6 - Команды управления и установки байтов.
Синтаксис ассемблера |
Операции |
Адресация |
JMP <EA> | <dst> -> PC | (3, 6 - 11,13,14) |
JSR <EA> | SP - 4 -> SP, PC -> (SP), <dst> -> PC | (3, 6 - 11,13,14) |
RTS | (SP) -> PC, SP + 4 -> SP | |
RTR | (SP) -> CCR, SP + Z -> SP, (SP) -> PC, SP + 4 -> SP | |
Scc <EA> |
Если (сс) выполняется, то 1 ... 1 -> <dst>, |
(1, 3 - 9,13,14) |
Таблица 7 - Изменение признаков после выполнения команд
Команды |
X |
N |
Z |
V |
C |
Примечание |
ABCD, SBCD, NBCD | + | ? | * | ? | + | X=С - десятичный перенос |
ADD, ADDI, ADDQ, SUB, SUBI, SUBQ, NEG | + | + | + | + | + | X=С - десятичный перенос |
ADDX, SUBX, NEGX | + | + | * | + | + | X=С - десятичный перенос |
MULS, MULU, DIVS, DIVU | - | + | + | + | 0 | |
MOVE, MOVEQ, AND, ANDI, |
- | + | + | 0 | 0 | |
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 <src>, <dst>
где
в качестве COP указывается мнемокод соответствующей команды, а вместо x
ставится символ, определяющий разрядность операндов: B - байт, W - слово, L -
длинное слово. Если после мнемокода отсутствует символ разрядности, то по
умолчанию операндом служит слово.
Операнды условно обозначаются как <src> -
источник, <dst> - приемник, причем в качестве приемника указывается
операнд, на месте которого помещается результат операции. При записи конкретных
команд в качестве <src>, <dst> указываются символические адреса
операндов на языке ассемблера в соответствии с используемым способом их
адресации. Для одноадресных команд в поле операндов дается один символический адрес,
в безадресных командах адрес операнда в явном виде не задается. При
непосредственной адресации вместо указывается значение операнда Im, перед
которым ставится префиксный символ #.
Числа Im, d8, d16, bd, Abs.W, Abs.L в поле
операндов могут даваться в различных системах счисления, которые определяются
префиксным символом:
& - десятичное число,
% - двоичное число,
@ - восьмеричное число,
$ - шестнадцатиричное число.
При отсутствии префиксного символа число воспринимается как десятичное.
С целью повышения производительности в CPU32
организован трехступенчатый конвейер выполняемых команд. Контроль состояния
конвейера обеспечивается с помощью выходных сигналов процессора:
IPIPE# - принимает значение 0 в первом такте выполнения
каждой команды в конвейере;
IFETCH# - принимает значение 0 при загрузке очередной
команды в конвейер, а также при освобождении конвейера (отсутствии команд).
Данные сигналы могут использоваться внешним
анализатором для контроля текущего состояния процессора.
Ниже в этом разделе рассматриваются команды,
выполняемые процессором CPU32. В таблицах для каждой команды дан ее синтаксис
на языке ассемблера и указана разрядность операндов: фиксированная (указывается
числом) или изменяемая (определяется символом B,W,L, который ставится после
мнемокода команды). Операнды, адрес которых вычисляется в соответствии с
заданным способом адресации, обозначены символами <EA>. При выполнении
многих команд для вычисления EA можно использовать только определенные способы
адресации.
Команды MOVE, MOVEA и MOVEQ
Команда MOVE, в зависимости от формата её операнда, может перемещать байт, слово или длинное слово из регистра в регистр, между регистром и памятью и между памятью и памятью. Эта команда может также перемещать слово в (из) регистра состояния и длинное слово между пользовательским указателем стека (USP) и регистром адреса. Когда USP определён как операнд, или регистр состояния (SR) - как приёмник операнда, команда становится привилегированной и, следовательно, не может быть выполнена в пользовательском режиме.