Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МП устройства СУ / Конспект лекций.DOC
Скачиваний:
121
Добавлен:
19.03.2015
Размер:
764.93 Кб
Скачать

Адресация с индексированием

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

Стековая адресация

Слово "стек" в переводе с английского означает "штабель" (дров). Применительно к МП под стеком понимается любая область ОЗУ, ячейки которой заполняются последовательно друг за другом. Аналогично - ячейка за ячейкой происходит и вывод информации из стека. При этом данные из стека читаются в последовательности, обратной той, которая была при записи, т.е. реализуется принцип: "вошедший последним - выходит первым" - подобно тому, как из штабеля дров первым берут полено, положенное последним.

Достоинством команд со стековой адресацией является то, что программист может не заботиться о конкретных адресах ячеек памяти, куда записываются и откуда считываются данные. Достаточно знать код адреса начала стековой области ОЗУ. Этот код (код верхушки стека) предварительно записывается в указатель стека.

С помощью команд, использующих стековую адресацию, в стек можно переслать число из регистра или из счетчика команд. Пусть требуется записать в стек содержимое двух регистров (регистровой пары). Сначала содержимое SР указателя стека с помощью схемы инкремента (декремента) уменьшается на единицу, в результате чего на шину адреса выставляется адрес SР-1. По этому адресу производится запись в стек слова данных из первого регистра. Далее содержимое указателя стека вновь уменьшается на единицу и на шину адреса выставляется адрес SP-2, по которому в стек записывается слово данных из второго регистра. Таким образом, по окончании записи содержимое указателя стека становится равным SР-2. Часто вместо выражения "содержимое указателя стека" употребляют выражение "положение указателя стека". Тогда можно сказать, что при занесении в стек содержимого регистра или счетчика команд указатель стека автоматически каждый раз при записи очередного слова "смещается вниз", т.е. в сторону младших адресов памяти (рис.1.2).

Рис.1.2. Реализация команды записи в стек

В системе команд МП есть и такие, которые позволяют осуществлять обратную операцию, т.е. пересылать содержимое ячеек стека в любые регистры или в счетчик команд. Для пересылки, например, содержимого двух регистров сначала в МП переписывается второе слово (последнее записанное) из ячейки памяти, адресуемой текущим положением SP указателя стека, после чего указатель стека "смещается вверх" на одну ячейку и занимает положение SP+1. Далее из ячейки памяти, адресуемой новым положением указателя стека, в МП переписывается первое слово, после чего указатель стека "смещается вверх" еще на одну ячейку и занимает положение SP+2. Таким образом, после выполнения команды указатель стека оказывается автоматически "смещенным вверх", т.е. в сторону старших адресов памяти.

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

Различают прерывания аппаратные, программные и специальные. Аппаратные прерывания инициируются воздействием сигналов, вырабатываемых внешними по отношению к МП устройствами, требующими обслуживания. Поэтому аппаратные прерывания называют также внешними. Программные прерывания происходят под влиянием специальных команд прерывания, включенных в программу, т.е. инициатива программных прерываний принадлежит самой программе. Программные прерывания используются для обслуживания внешних устройств по опросу или для вызова специальных вспомогательных системных подпрограмм. Специальные прерывания возникают в системе в ходе выполнения основной программы под воздействием специальных сигналов, вызываемых внутренними аппаратными средствами. Такие прерывания называют еще внутренними, т.к. инициируются внутренними средствами микропроцессорной системы. Причинами внутренних прерываний могут служить: программные сбои в следствии попытки совершить недопустимую операцию; аппаратные сбои в следствии пропадания одного или нескольких питающих напряжений или другие неисправности оборудования; переполнение разрядности обрабатываемых данных и некоторые другие.

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

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