Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

1.17.4. Команды пересылки данных

А) ПЕРЕСЫЛКА РЕГИСТР – РЕГИСТР

Синтаксис: reg = reg;

Допустимые регистры:

AX0 MX0 SI SB CNTR

AX1 MX1 SE PX OWRCNTR (только запись)

AY0 MY0 SR1 ASTAT RX0

AY1 MY1 SR0 MSTAT RX1

AR MR2 I0-I7 SSTAT (только чтение) ТХ0

MR1 M0-M7 IMASK TX1

MR0 L0-L7 ICNTL IFC (только запись)

Пример: I7 = AR;

Описание: Содержимое регистра источника (справа от знака равенства) пересылается в регистр назначения (слева от знака равенства). После пересылки содержимое регистра назначения всегда с правым выравниванием.

Правое выравнивание подразумевает заполнение старшего байта регистра назначения нулем или распространением знака содержимого регистра источника, когда в большой регистр (например, 16-битный) пересылается содержимое малого регистра (например, 8-битного).

В этом случае процессор поступает следующим образом: если источником являются беззнаковые регистры (I0-I7, L0-L7, CNTR, PX, ASTAT, MSTAT, SSTAT, IMASK и ICNTL), то старший байт регистра назначения заполняется нулем; если источником являются знаковые регистры (все оставшиеся из разрешенных), то старший бай заполняется знаком операнда источника.

Когда содержимое большого регистра записывается в малый (например, 16-битный в 14-битный), то отбрасываются два старших бита операнда источника.

Следует помнить, что при загрузке регистра MR1 знак загружаемого операнда распространяется в регистр MR2.

Флаги состояния: не изменяются.

Б) ЗАГРУЗКА РЕГИСТРА НЕПОСРЕДСТВЕННЫМИ

ДАННЫМИ

Синтаксис: reg = <data>

dreg = <data>

data: <константа>

'%' <имя переменной/буфера>

'^' <имя переменной/буфера>

(в среде VisualDSP <имя переменной/буфера> и

length(<имя переменной/буфера>) соответственно)

Допустимые регистры:

dreg (16-битные) reg (максимум 14-битные)

AX0 MX0 SI SB CNTR

AX1 MX1 SE PX OWRCNTR (только запись)

AY0 MY0 SR1 ASTAT RX0

AY1 MY1 SR0 MSTAT RX1

AR MR2 IMASK ТХ0

MR1 ICNTL TX1

MR0 I0-I7 IFC (только запись)

M0-M7

L0-L7

Примеры: I0 = ^data_buffer; (I0 = data_buffer;)

L0 =% data_buffer; (L0 = length(data_buffer);)

Описание: Непосредственное данное data загружается в регистр назначение. Данным может быть константа, а также имя любой переменной/буфера, перед которой стоят операторы длины (%) или указателя (^). В среде VisualDSP символ (^) необходимо опускать, а символ (%) заменять словом length.

Данное должно быть длиной 16 бит для загрузки регистров данных (dreg) и не более 14 бит для всех оставшихся регистров (reg). В регистре назначении данное всегда располагается с правым выравниваем. Если длина данного меньше длины регистра назначения, то старшие разряды регистра заполняются знаком данного.

При загрузке регистра MR1 знак загружаемого операнда распространяется в регистр MR2.

Особенность команды является то, что с ее помощью 16-битные регистры RX и ТХ можно загрузить только 14-битной константой. Для полного использования возможностей этих регистров следует применять команды регистр-регистр (см. п. 1.17.4.А) или ПД-регистр (см. п. 1.17.4.В).

Флаги состояния: не изменяются.

В) ЧТЕНИЕ ПД (ПРЯМАЯ АДРЕСАЦИЯ)

Синтаксис: reg = DM(<addr>);

Допустимые регистры: см. п. 1.17.4.А за исключением регистра SSTAT, который работает только на чтение и не может быть записан.

Пример: SI = DM(0x1234);

Описание: Команда чтения ПД с прямым методом адресации пересылает содержимое ячейки ПД с адресом addr в регистр назначение. Поскольку метод адресации – прямой, то адрес (заданный константой или меткой) запоминается в самой команде как 14-битное поле. Операнд в регистр назначение загружается с правым выравниваем. При загрузке регистра MR1 знак загружаемого операнда распространяется в регистр MR2.

Флаги состояния: не изменяются.

Г) ЧТЕНИЕ ПД (КОСВЕННАЯ АДРЕСАЦИЯ)

dreg = DM (

I0

,

M0

);

I1

M1

I2

M2

I3

M3

I4

M4

I5

M5

I6

M6

I7

M7

Синтаксис:

Допустимые регистры dreg:

AX0 MX0 SI

AX1 MX1 SE

AY0 MY0 SR1

AY1 MY1 SR0

AR MR2

MR1

MR0

Пример: AY0 = DM(I3, M1);

Описание: Команда чтения ПД с косвенным методом адресации пересылает содержимое ячейки ПД, адрес которой находится в индексном регистре Ix, в регистр назначение. После пересылки содержимое индексного регистра модифицируется (инкрементируется) содержимым регистра модификации Мх. Для линейной косвенной адресации необходимо, чтобы регистр длины Lх, соответствующий индексному регистру был обнулен. Операнд в регистр назначение загружается с правым выравниваем.

Флаги состояния: не изменяются.

Д) ЧТЕНИЕ ПП (КОСВЕННАЯ АДРЕСАЦИЯ)

dreg = PM (

I4

,

M4

);

I5

M5

I6

M6

I7

M7

Синтаксис:

Допустимые регистры dreg: см. п. 1.17.4.Г.

Пример: MX1 = PM(I6, M5);

Описание: Команда чтения ПП с косвенным методом адресации пересылает содержимое ячейки ПП, адрес которой находится в индексном регистре Ix, в регистр назначение. После пересылки содержимое индексного регистра модифицируется (инкрементируется) содержимым регистра модификации Мх. Для линейной косвенной адресации необходимо, чтобы регистр длины Lх, соответствующий индексному регистру был обнулен.

В регистр назначение пересылается содержимое битов 23-8 (самые значащие) указанной ячейки ПП. Причем, бит 8 источника попадает в бит 0 назначения (правое выравнивание). Если регистр назначение короче 16 битов, то лишние старшие разряды отбрасываются. Младший байт источника (биты 7-0) всегда загружаются в РХ регистр. Их можно игнорировать. Если они нужны, то могут быть прочитаны в следующем цикле.

Флаги состояния: не изменяются.

Е) ЗАПИСЬ В ПД (ПРЯМАЯ АДРЕСАЦИЯ)

Синтаксис: DM(<addr>) = reg;

Допустимые регистры: см. п. 1.17.4.А за исключением регистров OWRCNTR и IFC, которые работают только на запись и поэтому не могут быть считаны.

Пример: DM(0x2345) = AR;

Описание: Команда записи ПД с прямым методом адресации пересылает содержимое регистра источника (справа от знака равенства) в ячейку ПД с адресом addr. Поскольку метод адресации – прямой, то адрес (заданный константой или меткой) запоминается в самой команде как 14-битное поле.

Операнд в ячейку памяти загружается с правым выравниваем. Это означает, что если длина регистра источника меньше 16 бит, то старшие разряды ячейки памяти заполняются либо нулем, либо знаком пересылаемого операнда.

Процессор поступает следующим образом. Если регистр источник беззнаковый (I0-I7, L0-L7, CNTR, PX, ASTAT, MSTAT, SSTAT, IMASK и ICNTL), то старшие биты ячейки памяти заполняются нулем, в противном случае (любой другой допустимый регистр кроме перечисленных) – знаком пересылаемого операнда.

При загрузке регистра MR1 знак загружаемого операнда распространяется в регистр MR2.

Флаги состояния: не изменяются.

Ж) ЗАПИСЬ В ПД (КОСВЕННАЯ АДРЕСАЦИЯ)

С

DM (

I0

,

M0

) =

dreg

;

I1

M1

<data>

I2

M2

I3

M3

I4

M4

I5

M5

I6

M6

I7

M7

интаксис
:

data: <константа>

'%' <имя переменной/буфера>

'^' <имя переменной/буфера>

см., также, п. 1.17.4.Б

Допустимые регистры dreg: см. п. 1.17.4.Г.

Пример: DM(I2, M0) = MR1;

Описание: Команда записи в ПД с косвенным методом адресации пересылает содержимое регистра источника или непосредственное данное в ячейку ПД, адрес которой находится в индексном регистре Ix. После пересылки содержимое индексного регистра модифицируется (инкрементируется) содержимым регистра модификации Мх. Данным может быть константа, а также имя любой переменной/буфера, перед которой стоят операторы длины (%) или указателя (^),см., также, п. 1.17.4.Б.

Для линейной косвенной адресации необходимо, чтобы регистр длины Lх, соответствующий индексному регистру был обнулен. Операнд в ячейку ПД загружается с правым выравниваем. Если длина регистра источника меньше 16 бит, то в ячейке ПД происходит распространение знака операнда влево.

Флаги состояния: не изменяются.

З) ЗАПИСЬ В ПП (КОСВЕННАЯ АДРЕСАЦИЯ)

PM (

I4

,

M4

) =

dreg;

I5

M5

I6

M6

I7

M7

Синтаксис:

data: <константа>

'%' <имя переменной/буфера>

'^' <имя переменной/буфера>

см., также, п. 1.17.4.Б

Допустимые регистры dreg: см. п. 1.17.4.Г.

Пример: PM(I6, M5) = AR;

Описание: Команда записи в ПП с косвенным методом адресации пересылает содержимое регистра источника в ячейку ПП, адрес которой находится в индексном регистре Ix. После пересылки содержимое индексного регистра модифицируется (инкрементируется) содержимым регистра модификации Мх. Для линейной косвенной адресации необходимо, чтобы регистр длины Lх, соответствующий индексному регистру был обнулен.

Содержимое регистра источника загружается в старшие 16 бит ячейки ПП, т.е. бит 0 операнда загружается в бит 8 ячейки памяти (правое выравнивание). Восемь младших бит ячейки памяти загружаются из регистра РХ. Если длина регистра источника меньше 16 бит, то в ячейке ПП происходит распространение знака операнда влево.

Флаги состояния: не изменяются.

И) ЧТЕНИЕ/ЗАПИСЬ ПРОСТРАНСТВА ВВОДА/ВЫВОДА

Синтаксис: IO(<addr>) = dreg; { запись в порт}

dreg = IO(<addr>); {чтение порта}

<addr> - 11 – битный прямой адрес от 0 до 2047

Допустимые регистры dreg: см. п. 1.17.4.Г.

Описание: Команды записи/чтения пространства ввода/вывода используются для доступа к пространству памяти ввода/вывода. Только эти команды формируют сигнал IOMS# (см. п. 1.1).

Флаги состояния: не изменяются.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]