- •Микропроцессорные системы
- •Зачем нужны микропроцессоры?
- •Что такое процессор?
- •Запоминающие устройства
- •Адресация при работе с памятью
- •Адресное пространство
- •Взаимодействие процессора с памятью
- •Пример простейшего взаимодействия процессора с памятью
- •Обратная связь с процессором
- •Внутренние регистры и команды процессора процессора
- •Историческая справка
- •Теоретическая часть
- •Программно доступные регистры
- •Формирование физических адресов
- •Регистр признаков
- •Описание лабораторного макета
- •Организация памяти
- •Программа Монитор
- •Назначение индикационного экрана
- •Основные команды программы Монитор
- •Задание для подготовки к работе
- •Рабочее задание
- •Вопросы для самоконтроля
–Регистр сегмента кода cs, участвующий при формировании физических адресов памяти для выборки команд.
–Регистр сегмента данных ds, участвующий при формировании физических адресов памяти при выборке операндов команд.
–Регистр сегмента стека ss, участвующий при формировании физических адресов памяти при обращении к стеку.
–Регистр дополнительного сегмента es. Может быть использован в некоторых случаях для осуществления доступа к данным.
4.Регистр признаков fl составлен из отдельных битов, отражающих текущее состояние процессора и результаты выполнения предыдущей операции. Более подробно он будет рассмотрен в разделе 2.2.5.
Назначение многих регистров станет ясно при рассмотрении способов адресации, применяемых в процессоре.
2.2.3. Формирование физических адресов
Процессор КМ1810ВМ86 использует 20-разрядный адрес для обращения к оперативной памяти, но использует только 16 разрядов данных. Следовательно физический адрес, формируемый процессором не умещается в слове процессора.
Возникает вопрос как записывать команды, которым требуется указание адреса ячейки в качестве операнда? Для этих целей в процессоре был применён подход с разделением памяти на так называемые сегменты.
Для формирования физического (полного) адреса производится суммирование 16-разрядного адреса с 16-разрядным номером сегмента, умноженным на 24 = 16. Умножение на 16 равносильно «сдвигу» числа на 4 двоичных разряда вправо . При сложении старшие разряды из номера сегмента формируют старшие разряды физического адреса (см. рисунок 2.2).
Действительно, возьмём число 153 (или 10011001 в двоичном представлении). Результат его умножения на 16 — 16 153 = 2448 (или 100110010000 в двоичном представлении). Напомним, что 16 записывается в двоичной системе счисления как 10000. Сравните: при десятичном умножении на 10000 числа 153 мы получим число 153000, сдвинутое на 4 десятичных разряда вправо).
31
|
|
|
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Адрес |
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
Сегмент |
|
|
|
|
|
|
|
|
|
= |
|
|
|
|
|
|
|
|
|
|
|
|
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Физический адрес |
|
Рис. 2.2: Принцип формирования 20-разрядного адреса из 16-ричных значений
Физический адрес EA формируется по схеме
EA = 16 segment + address:
Например, при обращении по адресу 3A43 (14915 в десятичной системе счисления) в сегменте 11AF (десятичное 4527) физический адрес будет равен EA = 16 4527 + 14915 = 87347 (15533 ).
В результате каждый сегмент представляет собой область памяти размером 65536 байт (64 КиБ), смещённую от начала адресного пространства на число байт, равное номеру сегмента, умноженному на 16.
Шаг между сегментами составляет всего 16 байт тогда как размер сегмента — 64 КиБ, поэтому сегменты неизбежно перекрываются (см. рисунок 2.3). Возьмём, к примеру, физический адрес 1334A . Он может быть представлен как
EA = 1334A = |
10 FFF + 335A = |
= |
10 1000 + 334A = 10 1001 + 333A : |
Следовательно, к одному и тому же физическому адресу в памяти можно обратиться с использованием нескольких различных пар сегментадрес.
Физический адрес является 20-разрядным. В случае, если при вычислении физического адреса происходит арифметическое переполнение старшие разряды отбрасываются. При этом происходит «замыкание» адресного пространства: за байтом с физическим адресом FFFFF следует байт с физическим адресом 00000 .
32
Адреса
00000H
00010H
00020H
...
0FFF0H
10000H
10010H
10020H
...
1FFF0H
20000H
20010H
...
EFFE0H
EFFF0H
F0000H
F0010H
F0020H
...
FFFE0H
FFFF0H
100000H1)
Память
0 еСгмент |
гментеС |
|
1 |
...
0000FH
F001
0001FH


002F


0FFFFH
1000FH
1334AH
|
|
FFF егментС |
|
|
|
|
|
|
1000 Сегмент |
Сегмент |
|||
|
|
|||||
1FFEFH |
|
|
|
|
1001 |
|
1FFFFH |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
2000FH |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
...
|
FFEE егментС |
|
|
|
егментС |
|
|
|
|
EFFF |
|
FFFDFH |
|
|
|
FFFEFH |
|
|
|
|
|
|
|
FFFFFH |
|
||
|
|
|
|
|
|
|
000F егментС |
001F егментС |
002F Сегмент |
1)Не существующий, «гипотетический» адрес следующего после конца адресного пространства байта.
Рис. 2.3: Положение сегментов в памяти
33
2.2.4. Способы адресации
Большей части команд для выполнения требуется указание операндов (данных, над которыми в АЛУ совершается операция). Данные для совершения операции могут находиться
–в регистрах общего назначения;
–в оперативной памяти и
–непосредственно в прочитанной команде.
Способ обращения к операнду команды принято называть способом адресации. Всего выделяют шесть различных типов адресации:
1.Реги́стровая адресация(register addressing) предполагает, что операнд хранится в одном из регистров общего назначения. В коде команды указывается специальный код регистра, с которым производится работа.
2.Непосредственная адресация (immediate) предполагает, что операнд сохранён непосредственно в команде. Операнд размещается в оперативной памяти в следующим за кодом команды байте (байтах) и читается устройством выборки команд вместе с самой командой.
3.Прямая адресация памяти (direct memory addressing) достигается пу-
тём размещения адреса непосредственно в коде команды. Как и в случае с непосредственной адресацией адрес читается устройством выборки команд вместе с командой. Однако в качестве операнда используется не сам прочитанный операнд, а значение, сохранённое по указанному адресу в оперативной памяти.
4.Косвенная регистровая адресация (indirect register addressing) позво-
ляет оперировать со значением ячейки, адрес которой сохранён в регистре, а не указан непосредственно (как было в случае с прямой адресацией памяти).
Применение косвенной адресации позволяет вычислять адреса, по которым будет произведено обращение, в процессе выполнения программы. Выделяют четыре разновидности косвенной регистровой адресации, характеризующиеся применяемыми способами вычисления адреса и тем, какие регистры в нём участвуют:
Применительно к процессорам КМ1810ВМ86 слово «регистровая» часто опускают т.к. в этом процессоре не предусмотрены другие способы косвенной адресации.
34
