Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
08 семестр / Лабораторные работы / lab 2 / метода по К1801 (pdp11).doc
Источник:
Скачиваний:
42
Добавлен:
04.03.2014
Размер:
174.08 Кб
Скачать

1.3 Система команд микропроцессора

В микропроцессорах серии К1801 для представления адресов и данных используется двоично-восьмеричная система счисления. Шестнадцатиразрядное число представляется в виде пяти восьмеричных разрядов и одного (старшего) двоичного разряда. Значение каждого разряда (кроме старшего) меняется от 0 до 7 (рис.2), т.е. минимальное значение операнда или адреса равно 000000, максимальное – 177777.

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

0/1

0…7

0…7

0…7

0…7

0…7

Рис.2. Представление адресов и данных

В микропроцессорах серии К1801 используется три типа команд: безадресные, одноадресные и двухадресные. Безадресные команды содержат только код операции (выполняемую функцию). Одноадресные и двухадресные содержат: код операции, номер РОНа (или РОНов) и метод адресации.

К ячейкам памяти можно адресоваться как к байтам, так и к словам. . К регистрам тоже можно адресоваться как к байту, но только к младшему. А вот команды процессора всегда кратны двум байтам (слову).

Формат безадресной команды:

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

Код команды

Рис. 3

Формат одноадресной команды:

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

Код команды

адресация

РОН

Рис. 4

Формат двухадресной команды (src-источник, dst-приемник):

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00

Код команды

адресация src

РОН

адресация dst

РОН

Рис.5

Разряды 00…02 определяют один из восьми РОНов, который используется в конкретной команде (с R0 по R7).

Разряды 03…05 определяют метод адресации следующим образом:

- ноль в третьем разряде соответствует прямой адресации, единица – косвенной;

- код 00 в пятом и четвертом разрядах соответствует регистровой адресации, 01 – автоинкрементной, 10 – автодекрементной, 11 – индексной.

В двухадресных командах назначение разрядов 06…11 соответствует назначению разрядов 00…05. Например, в команде ХХ3405 используется косвенная автоинкрементная адресация к регистру R4 и прямая адресация к регистру R5.

Методы адресации процессора 1801 представлены в таблице 1.

Таблица 1

Методы адресации процессора 1801

Код адресации

Название

Описание

Двухадресн. командa

Одноадресн. командa

000

Регистровый

Операнд находится в регистре

mov R0,R4

INC R0

010

(28)

Автоинкрементный

В регистре находится адрес операнда, после выполнения регистр увеличивается на 1(байтовая операция) или на 2(словная операция)

mov R0,(R4)+

INC(R0)+

100

(48)

Автодекрементный

То же, но регистр уменьшается ДО выполнения команды

mov R0,-(R4)

INC-(R0)

110

(68)

Индексный

Адресом операнда является сумма регистра и следующего за командой слова

mov R0, 10(R4)

CLR200(R3)

001

Косвенно-

регистровый

Адрес операнда в регистре

mov R0,(R4) или mov R0,@R4

CLR@(R3)

011

(38)

Косвенно-

автоинкрементный

В регистре находится адрес адреса (!), после выполнения команды регистр инкрементируется также, как при автоинкрементной адресации

mov

 R0,@(R4)+

INC@(R0)+

101

(58)

Косвенно-

автодекрементный

Содержимое выбранного РОН уменьшается на 2, а затем используется как косвенный адрес, т. е. адрес ячейки, в которой находится адрес операнда

mov R0,@-(R4)

INC@-(R0)

111

(78)

Косвенная

индексация

Адресом адреса операнда является сумма содержимого регистра и следующего за командой слова

mov

 R0,@10(R4)

CLR

@200(R3)

Следующие режимы адресации можно выделить как специальные, поскольку в качестве регистра в них используется R7 (PC), указывающий на адрес инструкции, подлежащей исполнению.

010 111

(278)

Непосредственная

Операнд следует за словом инструкции. По сути, это автоинкрементная адресация с иcпользованием PC

mov #1,R0

011 111

(378)

Абсолютная

Слово, следующее за словом команды, является абсолютным адресом операнда

mov

R0,@#1000

INC@#4000

110 111

(678)

Относительная

Адресом операнда является сумма PC и смещения в следующем за командой слове. Код получается перемещаемый!

mov R0,ADRES

CLR200

111 111

(778)

Относительно-

косвенная

Адрес адреса операнда вычисляется как сумма PC и следующего за командой слова

mov 

R0,@ADRES

CLR@200

Список команд центрального процессора серии К1801 приведен в табл.3. Часть команд может выполнять операции как с 16 р словами, так и с отдельными байтами. В последнем случае эти команды имеют обозначение (В) после основного имени. Для задания этих команд при выполнении байтовых операций в старший (15) разряд команды записывается единица, а при работе со словами – ноль. В табл.3 этот разряд обозначен *. Например, команда инвертирования слова имеет код 0051DD, а команда инвертирования младшего байта – код 1051DD, соответственно.

Дополнительно в табл.3 использованы следующие обозначения:

R – регистр общего назначения:

SS – поле адресации источника;

DD – поле адресации приемника результата;

В приложении 1 показаны последовательности операций выполнения команды при использовании разных методов адресации. При регистровом методе адресации операнд должен находится в выбранном регистре. Следовательно, любой из восьми РОНов может быть использован как накопитель.

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

В случае использования индексного метода адресации исполнительный адрес определяется как сумма содержимого выбранного РОНа с индексным словом, которое содержится в следующей за командным словом ячейке памяти.

В косвенно-регистровом методе содержимое выбранного регистра является адресом операнда. В других косвенных методах содержимое регистра позволяет найти адрес операнда, а затем сам операнд.

II. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Лабораторная работа выполняется с помощью программы-эмулятора микропроцессора PDP 11.

1. Запустить программу PDP 11

2. Перечень команд управления программы-эмулятора приведен в табл.2.

Таблица 2

пп

Команда эмулятора

Описание команды

1.

d Приемник

(Значение операнда)

Занести указанное значение в приемник

(ячейку памяти или регистр ri, i=0..7), например:

d 1000 005064, d r4 000777

2.

ex Источник

Посмотреть содержимое источника

(ячейки памяти или РОНа), например:

ex 1000, ex 1000-1010, ex r4

3.

go Адрес

Запустить программу с указанного адреса,

go 1000

4.

h

Помощь

5.

q

Выход из программы-эмулятора

  1. Пример.

Команда SWAB – перестановка байтов. При использовании прямой адресации к четвертому регистру – код команды 000304.

d 1000 000304

d 1002 000000

d r4 000777

go 1000

ex r4

r4: 177401

0

0

0

7

7

7

15р 8р 7р 0р

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

0

1

старший байт

младший байт

1

7

7

4

0

1

4. Команды с прямой регистровой адресацией .

4.1. Команда INС Ri (j=0,1…7). По этой команде к содержимому регистра добавляется единица.

Выполнить команду инкрементирования третьего регистра (код 005203).

Примечания:

  1. Для исключения дополнительных ошибок в конце программы (после последней исполняемой команды) рекомендуется помещать команду HALT (код 000000).

  2. Для исследования команд использовать адресное пространство с 1000 до 17776 (нулевой банк памяти).

4.2. Команда ADD Ri, Rj (i,j=0…7). По этой команде осуществляется сложение двух операндов. Результат заносится по адресу второго операнда.

Сложить содержимое второго и четвертого регистров (код 060204).

4.3. Команда СОМВ Ri инвертирует содержимое младшего байта регистра

(с 0р по 7р).

Выполнить команду СОМВ для четвертого регистра (код 105104).

5. Команды автоинкрементной адресацией

Команда CLR (Ri) + обнуляет содержимое ячейки, адрес которой занесен в регистр Ri. Одновременно содержимое самого регистра увеличивается на 2.

Выполнить команду CLR, обнулив ячейку по адресу 1200 используя автоинкрементную адресацию пятого регистра (код 005025).

6. Команды индексной адресацией

Команда CLR ХХХХХХ (Ri) обнуляет ячейку по адресу, определяемому как сумма содержимого регистра Ri и индексного слова ХХХХХХ, следующего за командой.

Выполнить команду CLR обнулив ячейку по адресу 2400 используя индексную адресацию четвертого регистра (код 005064).

7. Команды с косвенной регистровой адресацией

7.1. Команда CLR @ Ri обнуляет ячейку, адрес которой записан в регистр Ri. Выполнить команду CLR обнуления ячейки по адресу 1020, используя для адресации пятый регистр (код 005015).

7.2. Команда DEC @ (Ri)+. По этой команде содержимое ячейки, адрес которой находится в регистре Ri, уменьшается на единицу, а содержимое самого регистра Ri увеличивается на два.

Выполнить команду DEC, изменив содержимое ячейки по адресу 1040, используя второй регистр 005322.

8. Команды с непосредственной адресацией.

8.1. Команда BIS#ХХХХХХ,Ri. По этой команде осуществляется логическое сложение содержимого регистра Ri с числом ХХХХХХ (константой), следующим за командным словом.

Выполнить команду BIS логически сложив содержимое регистра R0 с числом 707 (код 052700).

8.2. Команда MOV#ХХХХХХ, Ri загружает регистр Ri содержимым ячейки памяти, следующей за командой.

Выполнить команду MOV загрузив число 200 в нулевой регистр (код 012700).

9. Команды с прямой (абсолютной) адресацией.

Команда JMP @ # ХХХХХХ. По этой команде осуществляется безуслов-

ный переход по адресу, расположенному в следующей ячейке памяти.

С помощью команды JMP(код000137) и CLR(код005037) осуществить обнуление ячейки 1100.

IV. ТРЕБОВАНИЯ К ОТЧЕТУ.

Отчет по лабораторной работе должен содержать тексты программ в соответствии с пп. 4…9 с указанием содержимого использованных РОНов и ячеек памяти до и после выполнения команды. Например, для команды SWAB:

1000 000304

r4 000777 - операнд

r4: 177401 - результат

Таблица 3

Список необходимых команд микропроцессора К1801ВМ1

Мнемоника

Команда

Код

Одноадресные команды

CLR (B)

0  (d)

Очистка

*050DD

COM(B)

Инвертирование

*051DD

INC(B)

(d) + 1  (d)

Прибавление единицы

*052DD

DEC(B)

(d) - 1  (d)

Вычитание единицы

*053DD

NEG(B)

Изменение знака

*054DD

ASR(B)

Арифметический сдвиг вправо

(d) / 2  (d)

*062DD

ASL(B)

Арифметический сдвиг влево

(d) * 2  (d)

*063DD

ROR(B)

Циклический сдвиг вправо

*060DD

ROL(B)

Циклический сдвиг влево

*061DD

ADC(B)

Прибавление переноса

*055DD

SBC(B)

Вычитание переноса

*056DD

SWAB

Перестановка байтов

0003DD

MEPS

Чтение ССП

1067DD

MTPS

Запись ССП

1064SS

Двухадресные команды

MOV(B)

(s)  (d)

Пересылка

*ISSDD

CMP(B)

Сравнение

*2SSDD

ADD

(d) + (s)  (d)

Сложение

06SSDD

SUB

(d) - (s)  (d)

Вычитание

16SSDD

BIT(B)

(d)  (s)  (d)

Логическое умножение

*3SSDD

BIC(B)

Очистка разрядов

*4SSDD

BIS(B)

(d)  (s)  (d)

Логическое сложение

*5SSDD

XOR

Исключающее ИЛИ

074RDD

Команды управления программой

ВСС

Ветвление, если нет переноса

103000

BCS

Ветвление, если перенос

103400

JMP

Безусловный переход

0001DD

Команды управления микропроцессором

HALT

Останов

000000

WAIT

Ожидание

000001

RESET

Сброс внешних устройств

000005

Приложение 1

14

Соседние файлы в папке lab 2