Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Режимы работы мпс

МП-система - цифровой автомат, который выполняет операции в соответствии с хранящейся в памяти программой. Поэтому работа по программе является основным режимом работы такой системы.

Работа по программе. Все команды по своей длине делятся на три типа: однобайтные, двухбайтные и трехбайтные. Под хранение каждого байта отводится одна ячейка памяти. Все байты команд хранятся последовательно в ячейках памяти в сторону увеличения адресов.

 

Адрес Содержание
  Первый байт
  Второй байт
  Первый байт
  Первый байт
  Второй байт
….  

 

Первая команда

 

Вторая команда


Третья команда

После начального запуска (сброса) в программном счетчике (регистр РС) устанавливаеться число 0000 Н. Буква Н в конце числа указывает, что число представлено в шестнадцатеричном коде. Установка в состояние 0000 Н регистра РС приведет к тому, что МП на адресную шину выдает адрес 0000 Н. Содержимое ячейки памяти с адресом 0000 (первый байт первой команды) выдается на ШД и принимается в микропроцессор. МП производит чтение байта информации, хранящемуся в ячейке памяти, расположенной по этому адресу.

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

Если команда описывается двумя или тремя байтами, то МП автоматически увеличивает содержимое РС ← РС +1, считывает недостающие один или два байта из последующих ячеек памяти. Пусть, например, КО, считанный из ячейки 0000 Н, указывает на то, что команда двухбайтная. Тогда в следующем цикле будет считан второй байт из ячейки с номером 0001 Н. Считав таким образом полный код двухбайтной команды, МП ее выполняет.

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

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

Выполнение подпрограмм (работа стека). Стек — память с определенной (упрощенной) формой адресации (указание ячеек памяти, к которым производится обращение). В микропроцессорном устройстве на МПК КР580 стек организуется следующим образом. В оперативной памяти (ОЗУ) команды размешаются в ячейках с младшими, последовательно нарастающими адресами. Стек использует ячейки со старшими адресами и по мере заполнения стека занимаются ячейки с адресами, последовательно убывающими. Таким образом, адреса этих двух частей памяти изменяются навстречу друг другу.

Особенность организации стека состоит в следующем. Стек организован по "магазинному принципу" – первый вошел, последний вышел. Указатель стека SР содержит так называемый адрес входа в стек; при чтении из стека производится выборка содержимого ячейки по адресу входа в стек (по адресу, хранящемуся в SP); при записи в стек автоматически содержимое указателя стека уменьшается на 1 (SР← SP – 1), т.е. вводимое в стек число помещается в ячейку с адресом на единицу меньшим содержимого SP, а при чтении увеличивается на единицу. Поэтому содержимое SP всегда содержит адрес последней занятой ячейки стека.

 

 
   
     
01А0 CALL 0700
01А3  
     
   
     
  RET
   
   
FFFD A3
FFFE  
FFFF  

 

основная

программа

 

 

 

подпрограмма

 

 
 


 

 

стек

 


Запись и считывание стека производится двумя байтами, поэтому при записи в стек содержимое SP автоматически уменьшается на 2. При считывании – увеличивается на 2. Стек располагается в ячейках ОЗУ с максимальными адресами, чтобы не перекрылись области основной программы и стека. Для организации стека предварительно в указатель стека нужно записать дно стека (максимальный адрес ОЗУ) SP ← FFFF Н.

Допустим, что в основной программе по адресу 01А0 Н лежит команда вызова подпрограммы с адресом 0700 Н. При выполнении этой команды в программный счетчик записывается адрес начала подпрограммы (РС ← 0700 Н), а в стек записывается (сохраняется) адрес следующей команды основной программы (01А3 Н), т.к. команда CALL 0700 Н трехбайтная (1-й байт – код команды CALL, 2 –й байт 07 Н, 3 –й байт 00 Н).

Сохранение в стеке адреса 01А3 Н требуется для того, чтобы процессор "знал", куда ему возвратиться в основную программу после выполнения подпрограммы. Запись в стек осуществляется следующим образом: байт 01 Н записывается в ячейку с адресом FFFE Н, байт А3 Н – в ячейку FFFD Н. Содержимое SP становится равным FFFD Н. По команде RET ("возврат" из подпрограммы) в РС записывается верхушка стека: РС = 01А3 Н, при этом указатель стека становится вновь SP = FFFF Н.

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

Режим прерывания вызывается не программым,а аппаратным способом, (т.к. неизвестно когда произойдет аварийная ситуация) путем подачи сигнала на отдельный вход микропроцессора – "запрос прерывания" (ЗПР). Предварительно режим прерывания должен быть разрешен специальной командой. По сигналу ЗПР происходит следующее:

1. Микропроцессор заканчивает выполнение текущей команды и выдает сигнал ЧтКП (чтение контроллера прерывания).

2. По сигналу ЧтКП контроллер прерывания (внешний регистр, хранящий коды команд RST) выставляет на ШД код команды RST (restart), в которой закодирован вектор прерывания (номер подпрограммы), для обслуживания данного прерывания (аварийной ситуации).

3. Микропроцессор по заданному вектору прерывания вызывает соответствующую подпрограмму.

Принцип прерывания по вектору. Вектор прерывания – это номер подпрограммы прерывания. Всего 8 векторов (0…7), т.е., МП может обслуживать 8 различных нештатных ситуаций. Вектор прерывания кодируется в команде RST.

При выполнении команды RSТ содержимое счетчика команд РС запоминается в стеке, а в счетчик команд РС записывается адрес первой команды прерывающей программы. Этот адрес задается следующим образом.

Команда RSТ имеет структуру в двоичной форме 11 ААА 111 и в счетчик команд заносится значение 11 ААА 111, которое и служит адресом первой команды прерывающей программы. Задавая определенную трехразрядную кодовую комбинацию ААА, внешнее устройство может задать адрес первой команды одной из восьми прерывающих программ.

За каждым вектором прерывания в ОЗУ закреплено по 8 ячеек. За нулевым вектором (ААА=000) – ячейки с адресами 0000 Н – 0007 Н, за первым вектором (ААА=001) – ячейки 0008 Н – 000F Н, за вторым (ААА=010) – 0010 Н – 0007 Н и т.д. После дешифрации вектора прерывания МП передает управление на соответствующие ячейки ОЗУ (в PС устанавливается соответствующий начальный адрес –0000 Н; 0008 Н и т.д.). Восьми ячеек (8 байт) недостаточно для хранения подпрограмм обслуживания прерывания, поэтому в ячейках хранятся только команды безусловного перехода на другие области памяти, содержащие подпрограммы.

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

<== предыдущая лекция | следующая лекция ==>
Структура микропроцессора кр580ик80 | Типы запоминающих устройств. Основные параметры
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 634; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.