Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Полупроводниковая схемотехнология 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168

Плава 21

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

Для этого имеются различные возмож-ности*.

1) Прямая адресация (extended)

Два байта, следующих за командой, указывают полный 16-разрядный адрес ячейки памяти, содержимое которой необходимо загрузить в аккумулятор А. При этом получается следующая структура:

функциональное назначение байта Код команды Старший байт адреса

Младший байт адреса

Пример кода В6 А1 48

Машинный код команды LDA А (ext) для микропроцессора МС 6800 :В6= 1011 OllOj. Запишем адрес для приведенного вьппе примера:

A148i6 = 10100001 0100 IOOO2. 2) Укороченная адресация (direct)

В программе указывается только один младший байт адреса, старшему байту адреса микропроцессором автоматически присваивается нулевое значение. Команде LDAA (dir) соответствует машинный код, равный 96. Этот способ адресации Base Page позволяет затрачивать меньше времени на формирование адресов, которые лежат в пределах от 0000 до 0OFF,6 или от О до 255io. Следовательно, в этой области памяти целесообразно записывать переменные и константы, которые используются наиболее часто. При этом получается следующая структура:

функциональное назначение байта

Код команды Байт адреса

Пример кода

96 17

В этом примере считывается содержимое ячейки памяти с адресом

17i6 = 000000000001 OIII2.

3) Адресация с индексированием (indexed)

При этом способе адресации считывается содержимое ячейки памяти, адрес которой записан в индексном регистре. Кроме того, с помощью 8-разрядных чисел можно дополнительно задавать величину смещения. Этот способ адресации позволяет вызывать ячейки памяти, адрес которых старше выбранного 16-разрядного кода адреса, записанного в индексном регистре. При этом получается следующая структура:

Функциональное назначение байта

Код команды Байт, задаюпщй смешение

Пример кода А6 07

Машинный код для команды LDAA (inx): A616 = lOlOOllOj. Пусть в индексном регистре находится код адреса A148ij. Тогда в приведенном выше примере будет считано содержимое запоминающего устройства по адресу A148i6 + 0007ig = = A14F,6.

Величина смещения интерпретируется микропроцессором как положительное 8-разрядное число. Отрицательное смещение не предусмотрено. Следовательно, максимальное смещение составляет

1111 lUlj = FF16 = 255io.

В разд. 21.3.3 (команды перехода) будут рассмотрены другиеспособы задания величины смещения. Они применяются для реализации относительных переходов. При этом величина смещения интерпретируется как 7-разрядное число со знаком.

4) Непосредственная адресация (immediate)

Согласно этому способу, байт данных следует непосредственно за командой:

Названия способов адресации приведены в соответствии с терминологией, используемой в отечественной литературе.-Ярил*, ред.

\ Функциональное назначение байта

Код команды Байт данных

Пример кода

86 3F



Машинный код, соответствующий команде LDA А (imm.):86i6. В данном примере число 3Fi6 = ООН IIII2 загружается в аккумулятор А. В отличие от приведенного примера для непосредственной загрузки индексного регистра и указателя стека необходимо 2 байта данных, так как они являются 16-разрядными.

5) Неявная адресация (inherent)

При этом способе адресации операнд подразумевается, но не указывается, так как его определяет команда:

Функциональное назначение байта Код команды

Пример кода 4F

Пример 4Fi6 = CLRA означает: ОЧИСТКА АККУМУЛЯТОРА А. Очевидно, что эта команда может быть выполнена без дальнейшего уточнения.

21.2.3. ВЫПОЛНЕНИЕ КОМАНДЫ

Выполнение команды производится, как правило, за несколько машинных циклов. В примере LDA A(ext.) = B616 рассмотрим отдельные этапы, которые последовательно выполняет микропроцессор. Когда программный счетчик вызывает адрес М, по которому в памяти записана команда, запоминающее устройство передает на шину данньк код команды, который в данном случае равен B616. Микропроцессор дешифрирует команду и определяет, как он должен интерпретировать следующие два байта команды, для того чтобы получить адрес операнда. В случае прямой адресации он передает адрес М -Ь 1 на шину адреса и считывает соответствующий байт из ячейки памяти. В следующем цикле он передает адрес М + 2 и считывает со-, ответствующий байт из следующей ячейки памяти. В четвертом цикле микропроцессор располагает байты друг за другом (т. е. формирует 16-разрядный адрес операнда) на соответствующих адресных линиях и считывает полученное из памяти слово в аккумулятор А.

Таким образом, для выполнения ко-

циклы Шина адреса

Шина данных

1 Адрес М командыКод команды

2 Адрес М + 1 Старший байт адреса

операнда

3 Адрес М + 2 Младший байт адреса

операнда

4 Адрес операнда Операнд

манды требуется четыре машинных цикла. Они перечислены в табл. 21.2. Аналогично можно показать, что для выполнения команды LDA А (dir.) необходимо три цикла, а для команды LDAA(imm.) 2 цикла.

Количество циклов однозначно определяет время выполнения команды. Для микропроцессора МС 6800 время цикла равно периоду тактовых импульсов. Поэтому при тактовой частоте 1 МГц время цикла составляет 1 мкс, т.е. команда LDAA(ext.) исполняется за 4 мкс.

21.3. НАБОР КОМАНД

В этом разделе приведен набор команд микропроцессора МС 6800. Он может выполнять 72 различные операции, большинство из которых можно использовать с различными операндами. Всего с учетом разнообразных способов адресации получается набор из 197 инструкций.

21.3.1. ОПЕРАЦИИ ЗАПИСИ

В табл. 21.3 перечислены операции, обеспечивающие обмен данными между различными регистрами. Здесь использованы следующие обозначения: А-содержимое аккумулятора А; В-содержимое аккумулятора В; [М]-содержимое ячейки памяти с адресом М;

X-содержимое индексного регистра;

Хя-старший байт содержимого индексного регистра;

Xi-младший байт содержимого индексного регистра;

С-бит, передаваемый в регистр признаков.

Обращение к шиие адреса и шине данных при выполнении команды LDA А (ext.)



Команды обращения к памяти микропроцессора МС 6800

Операция

Мнемоника

Способы адресации

Комментарии

к о.

x * x n

о.

л. *

Загрузка аккумулятора

LDA А

LDAB

Запись содержимого аккумулятора в па

мять

STAA

► M

STAB

Дублирование содержимого аккумулято

A -h

17 в-h

Очистка

OO-M

CLRA

4F 00- A

CLR В

5F OO-B

Загрузка индексного регистра

[M] X ,

Запись содержимого индексного регистра

в память

- M,

- M + 1

21.3.2. АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ

В табл. 21.4 приведены команды, реализующие арифметические и логические (булевы) операции. Логические операции выполняются независимо над каждым битом слова данных и выдаются в соответствующий разряд результата. Рассмотрим, например, операцию

/4:1001 1101

В:0110 1011

/4-В:0000 1001

Набор команд для выполнения арифметических операций в обычных микропроцессорах очень ограничен. Он включает команды сложения, вычитания и перевода в дополнительный код. Сложение можно вьшолнять как в двоично-десятичном коде, так и с использованием команды десятичной коррекции DAA (Decimal Adjust). В последнем случае после окончания операции сложения выполняется коррекция, рассмотренная в разд. 19.5.4. Более сложные

арифметические операции составляют в программах пользователя из указанных основных операций. Только в микропроцессорах новых типов предусмотрены команды умножения и деления.

В качестве примера составим программу сложения двух 16-разрядных чисел Первое слагаемое должно быть записано в ячейки памяти 0001 и 0002, причем старший байт-в ячейке 0001, а младший-в ячейке 0002. Второе слагаемое записывается в ячейки 0003 и 0004. Результат необходимо записать в ячейки 0005 и 0006.

На первом шаге осуществляется сложение младших байтов двоичных чисел, т.е. содержимого ячеек 0002 и 0004. Так как не нужно учитывать перенос, используется команда ADDA. Результат записывается в ячейку 0006. На втором шаге производится сложение старших байтов с помощью команды ADC А В этом случае необходимо учитывать возможный перенос, полученный в результате предыдущей операции сложения. Он считывается из регистра признаков ALU. Результат запо-



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.