Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


¬нутренн€€ организаци€ ћѕ семейства 80х86 в реальном режиме работы




¬ реальном режиме работы (например, под управлением MSDOS) любой из процессоров семейства 80х86 функционирует просто как 16-разр€дный "быстрый" ћѕ 8086, т.е. полностью соответствуют его программной модели.

¬нутренние регистры ћѕ

¬ состав ћѕ вход€т следующие блоки регистров (табл. 5):

табл. 5

  CS сегмент кода  
  DS сегмент данных —егментные
  SS сегмент стека –егистры
  ES дополнительный сегмент  
  IP указатель команд  
  SP указатель стека  
  BP указатель базы –егистры
  SI индексный регистр  
  DI индексный регистр ќбщего
AX AH AL аккумул€тор  
BX BH BL указатель базы Ќазначени€
CX CH CL счетчик  
DX DH DL расширитель аккумул€тора  
  F регистр флагов  

Ј блок сегментных регистров. 4 сегментных регистра используютс€ дл€ хранени€ 16-и разр€дных сегментных адресов начала сегмента.

Ј IP Ц 16-и разр€дный регистр указател€ команд, в котором хранитс€ адрес смещени€ команды в кодовом сегменте.

Ј регистры общего назначени€ (–ќЌ) могут использоватьс€ дл€ хранени€ любой информации. Ќо, как правило, –ќЌ AX, BX, CX и DX используютс€ в основном дл€ хранени€ данных и допускают раздельное использование их байтов, а регистры SP,BP,SI,DI используютс€, в основном, дл€ хранени€ адресной информации.  роме того, каждый из –ќЌ имеет специальные функции, которые используютс€ по умолчанию в некоторых командах.

Ј регистр флагов (признаков) F содержит признаки последней выполненной јЋ” операции.

ќрганизаци€ пам€ти

ѕам€ть представл€ет собой последовательность байтов, каждый из которых имеет 20-и разр€дный физический адрес (исполнительный адрес) в диапазоне 00000-FFFFF. ¬се пространство пам€ти представл€етс€ как набор сегментов, определ€емых программным путем. –азмер каждого сегмента составл€ет 64 . ¬ каждый момент времени в пам€ти имеетс€ 4 сегмента: CS, SS, DS, ES. Ёти сегменты могут не пересекатьс€, могут частично пересекатьс€, а если содержимое сегментных регистров одинаково, то они полностью совпадают.

ƒл€ определени€ физического адреса пам€ти необходимо знать начальный адрес сегмента и внутрисегментное смещение. ‘изический адрес формируетс€ сумматором блока шинного интерфейса ћѕ (рис. 1) в соответствии со следующей формулой:

FA = SR*16 + ≈ј, где:

FA Ц физический адрес;

SR Ц содержимое текущего сегментного регистра;

≈ј Ц эффективный адрес.

рис. 1

—егментный адрес хранитс€ в одном из сегментных регистров (16 старших разр€дов 20-ти разр€дного адреса пам€ти). ѕри вычислении физического адреса пам€ти к содержимому сегментного адреса дописываютс€ нули. ѕоэтому начальные адреса сегментов всегда кратны 16.

—мещение в сегменте формируетс€ процессором в зависимости от его режима работы. ≈сли процессор выполн€ет выборку команд из пам€ти, то сегментный адрес беретс€ из регистра CS, а смещение Ц из указател€ команд IP (рис. 2). ¬о всех остальных случа€х смещение формируетс€ из содержимого –ќЌ, индексных или базовых регистров. —пособ вычислени€ смещени€ €вл€етс€ способом адресации.

рис. 2

¬нутрисегментный адрес называетс€ смещением, если речь идет об аппаратных средствах. ¬ системе команд в этом случае используетс€ пон€тие эффективный адрес.

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

SR:EA; где SR Ц содержимое сегментного регистра; EA Ц эффективный адрес.

Ќапример, пусть DS=2000H, EA=3100H. “огда:

Ћогический адрес: 2000:3100

‘изический адрес: 2000 0 + 3100 = 23100

»ногда объем пам€ти измер€етс€ в параграфах (І): 1І = 16 байт.

—истема прерываний ћѕ

ѕрерывание Ц это событие, которое прерывает нормальный ход выполнени€ программы (процесса).

ћѕ 80х86 имеет эффективную систему прерываний, в которой каждому прерыванию поставлен в соответствие код (от 0 до 255), который идентифицирует тип прерывани€. ¬ системах с ћѕ 8086 различают внешние и внутренние прерывани€.

¬нешние прерывани€ Ц это прерывани€, обусловленные каким-либо внешним событием. —игнал свершени€ этого событи€ поступает на один из двух входов ћѕ:

INTR Ц вход маскируемого запроса прерывани€ от внешних устройств;

NMI Ц вход немаскируемого запроса прерывани€.

ƒл€ разрешени€ обслуживани€ внешних прерываний используетс€ выход подтверждени€ прерывани€ .

ћѕ имеет только один вход дл€ запроса прерывани€, а устройств, требующих обслуживани€ по прерыванию в системе может быть несколько. ƒл€ обслуживани€ прерываний от нескольких устройств используетс€ специализированна€ ћ— - программируемый контроллер прерывани€ (ѕ ѕ). ѕ ѕ выполн€ет следующие основные функции:

Ј фиксирует запросы прерываний от внешних устройств;

Ј анализирует приоритеты поступивших прерываний;

Ј запрашивает у ћѕ и, в случае подтверждени€ прерывани€, выдает ћѕ номер прерывани€ с наивысшим приоритетом.

ѕри поступлении на один из входов ѕ ѕ IRQ0-IRQ7 запроса прерывани€ от внешнего устройства (рис. 3), ѕ ѕ фиксирует это прерывание, анализирует его приоритет и, если поступившее прерывание имеет наивысший в данный момент приоритет, выдает ћѕ сигнал запроса прерывани€ INTR. ѕри поступлении на вход INTR сигнала высокого уровн€ процессор заканчивает выполнение текущей команды и выдает сигнал подтверждени€ прерывани€ , который поступает на соответствующий вход ѕ ѕ. ¬ ответ на этот сигнал ѕ ѕ процессору информации не передает. «атем процессор вырабатывает еще один сигнал , в ответ на который ѕ ѕ передает ћѕ по шине данных байт, определ€ющий номер (тип) прерывани€ (0 ¸ 255). Ётот номер однозначно св€зан с ѕѕ обслуживани€ прерывани€, на которую затем переходит процессор.

рис. 3

ѕрерывани€ по входу INTR можно разрешить или запретить(замаскировать), управл€€ состо€нием флага I. ƒл€ этих целей имеютс€ две специальные команды:

CLI Ц очистить флаг I=0 (запретить прерывани€ по входу INTR);

STI Ц установить флаг I=1 (разрешить прерывани€ по входу INTR).

≈сли пришел запрос прерывани€, а прерывани€ были запрещены (I=0), то процессор не обслуживает этот запрос и не запоминает его.

«апрос прерывани€ по входу NMI €вл€етс€ немаскируемым и программно его запретить нельз€. ѕосле по€влени€ сигнала на входе NMI процессор автоматически переходит к обслуживанию прерывани€ типа 2 (подтверждение прерывани€ при этом не требуетс€). ќбычно сигнал запроса прерывани€ по входу NMI используют событи€, требующие немедленной обработки (например, аварийное отключение питани€).

«апрос прерывани€ по входу NMI запоминаетс€ в ћѕ и имеет более высокий приоритет, чем прерывани€ по входу INTR.

¬нутренние прерывани€ св€заны с определенными событи€ми внутри процессора или инициируютс€ при помощи команд. ¬ случае внутренних прерываний не вырабатываютс€ сигналы подтверждени€ прерываний , процессор просто переходит по вектору, заданному типом прерывани€. ¬иды внутренних прерываний:

1. прерывание при ошибке делени€ на У0Ф. ¬озникает в том случае, если частное слишком велико или делитель = 0 (тип 0);

2. прерывание по переполнению. ¬ыполн€етс€ по команде INTO при условии, что установлен флаг переполнени€ V=1 (тип 4);

3. прерывание при трассировке. ¬озникает по окончании команды, если установлен флаг трассировки “=1 (тип 1);

4. прерывание типа 3. ¬озникает при выполнении однобайтной команды INT 3. »спользуетс€ дл€ установки контрольных точек разрыва при отладке программ.

5. программные прерывани€ при выполнении двухбайтных команд INTn (где n Ц номер прерывани€). ѕрограммные прерывани€ на самом деле ничего не прерывают, а €вл€ютс€ удобным средством дл€ доступа к стандартным подпрограммам (функци€м ќ—).

–ассмотрим взаимосв€зь между типом прерывани€ и п/пр обслуживани€ прерываний.

“аблица векторов прерываний

рис. 4

ƒл€ обслуживани€ прерываний в системах с ћѕ 8086 используетс€ таблица векторов прерываний объемом 1 байт, расположенна€ с нулевого адреса пам€ти (0...3FF). Ќа каждый тип прерывани€ отводитс€ 2 слова (4 байта) пам€ти, в которых хранитс€ логический адрес п/пр обслуживани€ прерывани€. —лово с большим адресом загружаетс€ в сегментный регистр CS, а с меньшим адресом Ц в регистр указател€ команд IP. “аблица векторов прерываний имеет вид представленный на рис. 4.

“аким образом, получив номер типа прерывани€, процессор умножает номер типа прерывани€ на 4 и получает адрес вектора прерывани€. ѕри переходе к п/пр обслуживани€ прерываний ћѕ сохран€ет в стеке содержимое CS,IP,F. «атем CS и IP загружаютс€ новым содержимым из вектора прерываний. ¬озврат из п/пр осуществл€етс€ по команде IRET, котора€ восстанавливает содержимое регистров CS,IP,F из стека.





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2016-11-24; ћы поможем в написании ваших работ!; просмотров: 605 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ѕольшинство людей упускают по€вившуюс€ возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © “омас Ёдисон
==> читать все изречени€...

1624 - | 1379 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.012 с.