Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lek2_01_.doc
Скачиваний:
32
Добавлен:
01.12.2018
Размер:
1.34 Mб
Скачать

Организация памяти мк

Память программ реализована на ППЗУ емкостью 1 Кбайт, а максимальное адресное пространство программ может составлять до 4 Кбайт. РС (СК) содержит 12 бит, но инкрементируются только младшие 11 бит. Поэтому после состояния 7FFh РС перейдет в состояние 000h, а состояние старшего бита РС может быть изменено по специальным командам SEL MB0, SEL MB1. То есть, при таком подходе вся память программ разбивается на два банка памяти по 2 Кбайт (рис.4). В свою очередь память программ также разбивается на страницы по 256 байт, по 8 страниц в каждом банке, так как в большинстве команд передачи управления используется короткий 8-разрядный адрес внутри текущей страницы, не обеспечивающий возможности перехода через границу страницы. Однако для последовательной выборки команд границ страниц не существует.

Граница банков памяти, в отличие от границ страниц, полностью закрыта и для последовательной выборки. Единственным способом пересечения границы банков осуществляется по командам: JMP, CALL, RET и RETR. Команды JMP и CALL используют 11-разрядный адрес перехода внутри текущего банка памяти, состояние старшего разряда РС[11] определяется по флажку выбора банка МВ, управляемого по отдельным командам: SEL MB0 и SEL MB1. Например, если текущее значение МВ=0, а необходимо перейти к команде, расположенной в банке 1, то надо выполнить следующий переход:

SEL MB1 ; МВ:=1

JMP addr11 ; РС[11]:=МВ, РС[10-0]:=addr11

По командам JMP и CALL содержимое флага МВ загружается в старший разряд РС (РС[11]:=МВ). Отсюда, так как МК не имеет средств анализа флага МВ, то надо следить, чтобы подпрограммы взаимно вызывающие друг друга находились в одном банке памяти или модифицировать флаг МВ в вызываемой подпрограмме и восстанавливать его при возврате в вызывающую подпрограмму. В командах возврата полный 12-разрядный адрес выбирается из стека.

При обработке прерываний бит РС[11] принудительно устанавливается в 0, поэтому все ППОП должны размещаться в нулевом банке.

Ячейки 0, 3 и 7 используются для векторов прерываний, причем с ячейки 000h должна размещаться команда безусловного перехода на первую команду программы, а в ячейках 3 и 7 - команды перехода на начальные адреса соответствующих ППОП.

Резидентная память данных ОЗУД на кристалле составляет 64 байта и делится на четыре области (рис.5): два банка рабочих регистров с 0 по 7 и с 24 по 31 ячейки по 8 регистров в каждом банке, область памяти стека ячейки с 8 по 23, адресуемые указателем стека SP из PSW глубиной 2х8 байт для хранения РС (12 бит) и PSW (4 старших бита) и 32 ячейки для хранения данных с адресами с 32 по 63, адресуемые только через регистровую косвенную адресацию. Имеется возможность неиспользуемые ячейки стека использовать для хранения данных также через регистровую косвенную адресацию, т.к. команд PUSH и POP в системе команд МК нет. В стек данные загружаются только автоматически по команде CALL и по прерываниям, если они разрешены.

Выбор одного из банков регистров выполняется по командам SEL RB0 и SEL RB1 (признак выбора банка регистров автоматически запоминается и хранится в PSW поле BS). Рабочие регистры 0-7 и 24-31 доступны по командам с прямой регистровой адресацией, а все ячейки ОЗУД 32-63 и ВПД по командам с косвенной регистровой адресацией. В качестве регистров косвенного адреса могут использоваться только регистры R0 и R1 каждого банка регистров. Например,

MOV A,#35 ; AC:=35

MOV R1,A ; R1:=AC прямая регистровая

MOV A,@R1 ; AC:=ячейки 35 регистровая косвенная

Как видно из рис.5 внутренняя и внешняя память данных рассматриваются как раздельные физические памяти и обращение к ним выполняется по отдельным командам (для ВПД только по команде MOVX):

MOVX @R1,A ; (R1):=AC ВПД

MOVX A,@R1 : AC:=(R1) ВПД

Внешняя и внутренняя память программ рассматриваются как единое целое. В памяти программ предусмотрена возможность хранения констант (таблиц, массивов), а доступ к ним осуществляется либо непосредственной адресацией, либо косвенной регистровой страничной адресацией через АС к текущей странице или странице 3 специально зарезервированной для хранения констант.

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