Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Булатов В.Н. Архитектура микропроцессороной системы, состав машинных команд и основы программирования микропроцессорной .pdf
Скачиваний:
97
Добавлен:
02.05.2014
Размер:
7.1 Mб
Скачать

было безразлично). И ассемблер префикса повторения в этих случаях, естественно, отличается от безличного обозначения: REP.

В таблице 11 приведены ассемблер и КОПы префиксов повторения, используемые совместно с цепочными командами сравнения. В скобках указаны альтернативные обозначения ассемблера префиксов повторения.

Таблица 10 — Строчные команды

Тип

Краткий комментария

Ассемблер

Адрес следующего элемента

команд

действия команды

команды

DF=0

DF=1

ы

 

 

 

 

 

 

MOVSB

DI=<DI>+1

DI=<DI>-1

000

M<ES:DI> :=<M<DS:SI>>

 

SI=<SI>+1

SI=<SI>-1

MOVSW

DI=<DI>+2

DI=<DI>-2

 

 

 

 

SI=<SI>+2

SI=<SI>-2

 

 

 

101

M<ES:DI>=<AL>

STOSB

DI=<DI>+1

DI=<DI>-1

M<ES:DI>=<AX>

STOSW

DI=<DI>+2

DI=<DI>-2

 

110

AL:=<M<DS:SI>>

LODSB

SI=<SI>+1

SI=<SI>-1

AX:=<M<DS:SI>>

LODSW

SI=<SI>+2

SI=<SI>-2

 

 

 

CMPSB

DI=<DI>+1

DI=<DI>-1

011

<M<DS:SI>>-<M<ES:DI>>

SI=<SI>+1

SI=<SI>-1

 

CMPSW

DI=<DI>+2

DI=<DI>-2

 

 

 

 

SI=<SI>+2

SI=<SI>-2

 

 

 

111

<AL>-<M<ES:DI>>

SCASB

DI=<DI>+1

DI=<DI>-1

<AX>-<M<ES:DI>>

SCASW

DI=<DI>+2

DI=<DI>-2

 

Таблица 11 —Префиксы повторения для строчных команд

Ассемблер префикса

Код

Комментарий к выполнению префикса

повторения

операции

повторения с командами типа CMPS и SCAS

REPZ (REPE)

F3

Повторяется весь цикл, если выполняется

условие: CX≠0 и Z=1 (конъюнкция).

 

 

REPNZ (REPNE)

F2

Повторяется цикл, если выполняется условие:

CX≠0 и Z=0 (конъюнкция).

 

 

11 Другие одиночные команды

Микропроцессор 8086 реализует ряд команд, каждую из которых можно назвать индивидуальной. Действия их достаточно просты и не требуют особых разъяснений. Часть их, наиболее часто используемых, приведена в таблице 12.

Таблица 12

Ассембле

КОП

Комментарий действия команды

р

 

 

NOP

90

Пустая команда. Не производит действий.

 

 

 

 

HLT

F4

Останов. Микропроцессор прекращает свое функционирование и

переходит в 3-е состояние.

 

 

62

STI

FB

Флаг IF=1 — разрешение аппаратных прерываний;

CLI

FA

флаг IF=0 — запрещение аппаратных прерываний.

STC

F9

Флаг CF = 1;

CMC

F5

флаг CF = -<CF> — инверсия флага CF;

CLC

F8

флаг CF = 0.

 

 

 

Другая группа команд позволяет заменять сегмент данных DS, используемый по умолчанию в командах, оперирующих с данными в области запоминающего устройства. Имеется в виду dst при mod<>112 (см. главу 3). Замена DS распространяется только на команду, следующую за командой замены сегмента. Эти команды называют префиксом замены сегмента или просто префиксом сегмента. Команды префиксов сегмента в ассемблере и машинных кодах приведены в таблице 13.

Таблица 13 — Префиксы замещения сегментов

Ассембле

КОП

Наименование

Комментарий

р

 

 

 

CS:

2E

Командный префикс

При формировании

 

 

сегмента

физического адреса

SS:

36

Стековый префикс

данных вместо сегмента

сегмента

DS используется

 

 

 

 

 

заданный сегмент.

ES:

26

Резервный префикс

 

 

 

сегмента

 

 

 

 

 

Рассмотрим пример использования префикса сегмента.

Пример 1 — Пусть в регистре DS=0000, в регистре CS=5FC0. Необходимо составить фрагмент программы пересылки байта данных из ячейки памяти с адресом 100 в нулевом сегменте — по 105-у адресу программы, в составе которой должен находится составленный фрагмент программы.

Ответ: Поскольку программа выполняется в командном сегменте, то у приемника (dst) необходимо заменить сегмент данных на командный сегмент. Для источника никаких изменений не требуется, так как в DS по условиям примера уже содержится нулевое значение. Составляем фрагмент программы:

XOR AX,AX

 

; загрузить в АХ ноль и <AX>

MOV DS,AX

;переслать в DS;

MOV AL,[0100]

;AL:=<MDS:0100>=<M0000:0100>;

CS:

 

;в следующей команде —CS вместо DS;

MOV [0105],AL

;MCS:0105=M5FC0:0105 := <AL>;

63

Если здесь не использовать однократное переназначение сегмента, то пришлось бы составить, например, следующий фрагмент:

XOR AX,AX

; загрузить в АХ ноль и <AX>

MOV DS,AX

;переслать в DS;

MOV AL,[0100]

;AL:=<MDS:0100>=<M0000:0100>;

PUSH

CS

; содержимое CS в стек, а оттуда

POP

DS

; в DS;

MOV [0105],AL

; MCS:0105=M5FC0:0105 := <AL>;

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

Здесь не были представлены команды ввода-вывода и команды прерываний, которые будут рассмотрены при изучении соответствующих интерфейсных схем. Группа этих команд малочисленна, но весь механизм их действия связан со специфическим функционированием отдельных контроллеров, входящих в состав микропроцессорной системы.

12 Общие сведения об интерфейсных контроллерах. Команды ввода – вывода

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

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

— контроллер ОЗУ; его функции: сопряжение байтовой структуры ОЗУ с шиной данных системной магистрали; регенерация ОЗУ, если

64

ОЗУ — динамическое; организация ОЗУ, в случае большого объема, по строкам и столбцам;

контроллер параллельного интерфейса с протоколом обмена ИРПР или CENTRONICS; как правило используется универсальный параллельный интерфейс;

контроллер последовательного интерфейса с протоколом обмена RS-232 и ему аналогичных;

контроллер прерываний (в некоторых микропроцессорных комплектах встроен в интерфейсные схемы обмена данными): выставляет по инициативе внешнего устройства запрос на аппаратное прерывание

микропроцессору и на ответный запрос микропроцессора «кто?» выставляет на шину данных вектор или адрес прерывания (начальный адрес подпрограммы обработки прерываний для соответствующего запроса внешнего устройства);

контроллер временных меток — таймер;

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

контроллер флоппи-диска;

контроллер жесткого диска типа «Винчестер»;

контроллер видеоизображения (черно-белого и цветного);

контроллер компакт-диска;

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

Интерфейсные схемы, которые будут рассматриваться далее, разработаны фирмой Intel для 8-разрядной шины данных (интерфейсная шина, как правило, всегда 8-разрядная) и имеют следующие шифры :

8259 — контроллер прерываний;

8253 — таймер;

8255 — параллельный интерфейс;

8250 — последовательный интерфейс.

Все интерфейсные схемы (ИФ) имеют стандартные входы и выходы для сигналов системной магистрали. Следовательно, со стороны подключения к системной магистрали все интерфейсные схемы являются «безликими»? Это не совсем так. Чтобы понять, как микропроцессором

65

выбирается та или иная интерфейсная схема, рассмотрим схему подключения к системной шине абстрактной (обобщенной со стороны системной шины) интерфейсной схемы. Схема подключения ИФ приведена на рисунке 9. Попробуем на этом примере произвести систематизацию и сделать кое-какие выводы.

1)Выводы ИФ D7...D0 подключаются непосредственно к шине данных системной магистрали. Эти выводы могут быть:

а) входными или выходными (указано двунаправленной стрелкой);

в) отключенными от внутренней шины данных ИФ (значок Z говорит о том, что микросхема электрически может быть отключена от шины данных (ШД).

2)Вывод -WR подключается к стробу записи -IOWR, то есть ИФ при записи данных в ИФ может обслуживаться только командами вывода.

3)Вывод -RD подключается к стробу чтения -IORD, то есть ИФ при чтении данных из ИФ может обслуживаться только командами ввода.

Примечание – Контроллер ОЗУ аналогичными выводами

подключается к -MEMWR и -MEMRD соответственно (MEMORY —

66

память).

4) Вывод RES подключается к RES — общий сброс микропроцессорной системы.

Итак, по группам сигналов, рассмотренных в пунктах 1) – 4) для всех ИФ подключение со стороны системной шины одинаково, за исключением контроллера ОЗУ. Как же все-таки микропроцессор выбирает одну ИФ из многих? Для этих целей и существует адрес.

В микропроцессорных системах на базе МП 8086 адресная шина интерфейса сужена с 20 разрядов (А19...А0) до 10 разрядов (А9...А0). Дело в том, что число адресуемых элементов интерфейса и в этом случае велико (210 = 1024), что никогда полностью не реализуется.

Рисунок 9 — Схема подключения ИФ к системной шине

Так вот, каждая интерфейсная микросхема имеет от одного до трех адресных входов (на рисунке 9 — два входа: А1, А0) для адресации внутренних элементов интерфейсных ИС.

Общее свойство — каждая интерфейсная ИС имеет вход CS (CHIP SET - чип установить).

CHIP — жаргонное слово в электронике, утвердилось для обозначения кристалла кремния, в котором выращена ИС. Иногда этот вход в других ИС обозначается ОЕ (OUT EXTENDED — выход протянуть (до шины), то есть внутреннюю шину данных интерфейсной схемы подсоединить к внешней). Следовательно, интерфейсная ИС «слепа» и «глуха» к системной шине, пока на инверсном входе «- CS» не будет

«0».

Обычно этот выбор осуществляют с помощью дешифратора (дешифратор — набор комбинационных схем И) с инверсными выходами, на вход которого подают незадействованные непосредственно интерфейсной ИФ старшие разряды адреса. В рассматриваемом примере (рисунок 9) нужна была только одна комбинация выбора CS, поэтому можно (в данном случае — произвольно) обойтись только одной схемой И-НЕ.

Запишем логическое уравнение выборки ИФ согласно рисунку 9:

-CS = A9 A8 A7 A6 A5 A4 A3 A2,

или

CS = A9 A8 A7 A6 A5 A4 A3 A2.

Но для указания адреса одного из внутренних элемента ИФ такая форма записи не может быть достаточной. Для этого надо знать, как и какие элементы ИФ выбираются. Это делается при наличии CS=1 и с помощью логической функции ИФ: f(A1, A0). Эта функция выборки внутренних элементов ИФ дается в справочных данных в виде таблицы истинности.

Пусть, например, ИФ является мультиплексором

и имеет

3 восьмиразрядных входа (3 порта) с именами А, В и С

и регистр

управления портами с именем RGC. И пусть выбор элементов ИФ соответствует таблице истинности:

67

Имя ПортаАдрес А1 А0

A

0

0

B

0

1

C

1

0

RGC

1

1

Теперь выпишем полные адреса этих элементов в двоичном и шестнадцатеричном кодах с учетом уравнения выборки чипа и адресов внутренних элементов ИФ:

Таблица 14 —Синтез адресов выборки элементов ИФ

Имя

А9 А8 А7 А6 А5 А4 А3 А2

А1

А0

Адрес

PA

1

1

1

1

1

1

1

1

0

0

3FC

PB

1

1

1

1

1

1

1

1

0

1

3FD

PC

1

1

1

1

1

1

1

1

1

0

3FE

3

 

 

 

F

 

 

C…F

 

 

 

 

Естественно, что в микропроцессорной системе в любой момент времени микропроцессор ведет диалог только с одной интерфейсной ИС, поэтому недопустимо, чтобы в интерфейсе были элементы с одинаковыми адресами (уравнениями выборки чипа ИФ).

Итак, теперь известно, как по схеме подсоединения интерфейсной ИС к шине адреса системной магистрали можно определить адреса элементов интерфейса. Теперь можно познакомиться с командами ввода-вывода. Для этого сначала необходимо поточнее уяснить назначение сигналов системной магистрали: -IOWR, —IORD и - MEMWR, -MEMRD.

Если микропроцессор вырабатывает строб (короткий сигнал) - MEMRD (чтение ячейки памяти) или строб -MEMWR (запись в ячейку памяти), то это может быть вызвано только командами, оперирующими пересылкой данных между запоминающим устройством (ЗУ) и микропроцессором. Например,

MOV AX,[BX] или PUSH AX.

Если микропроцессор оперирует с интерфейсом внешних устройств, то он должен вырабатывать :

а) строб -IORD — при вводе данных из порта (INPUT); б) строб -IOWR — при выводе данных в порт (OUTPUT).

МП 8086 поддерживает следующие команды ввода-вывода: 1) Ввод.

а) Ассемблер: IN AL,DX; комментарий: ввести в регистр AL данные из порта, адрес которого взять из регистра DX.

б) Машинный код команды состоит из одного КОП: КОП

= ЕС.

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

Пример 1 — Ввести байт данных из порта В (смотрите рисунок 9 и таблицу 14):

68