Разделение поля памяти в ПК




Глава 1

ПРИНЦИПЫПОСТРОЕНИЯ I B M P C

Общая структура компьютера

В принципе, это вполне традиционная структура микропроцессорной системы (рис 1.1). Отметим, что на рисунке показана обобщенная структура компьютера, объединяющая основные черты IBM PC.

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

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

 

 

1.2. Базовый микропроцессор 8086

 

Микропроцессор Intel 8086 обеспечивает обращение к 1.048.576 байтам памяти (1 Мбайт) по 16-разрядной шине данных, обработку 8- и 16-разрядных данных (со знаком и без знака) с помощью достаточно мощной системы команд. Заметим, что в IBM PC использовался микропроцессор 8088 - функциональный аналог 8086, но с мультиплексированной 8-разрядной шиной данных. При использовании дополнительного процессора (сопроцессора) 8087 могут аппаратно обрабатываться числа с плавающей точкой короткого и длинного форматов.

Логическая структура МП 8086/88 показана на рис. 1.2.

ЦП 8086

ША ШД

       
   


20 16

Постоянное ЗУ

(ROM) ПАМЯТЬ:

Оперативное Адресное пространство

запоминающее 1 Мбайт = 1024 Кбайт =

устройство = 1048576 байт

(RAM)

 

 

       
   
 


Контроллер НГМД

           
   
 
   
 
 

 


Адаптер монитора

                       
   
     
     
 
 
   
 
 
   
 

 


Адаптер клавиатуры

                               
     
 
   
   
 
     
 
 
   
 
 
   
 

 

 


Контроллер НЖМД

                           
           
   
 
 
 

 

 


Контроллер печати

               
   
       
 
 
 
 

 

 


Последовательный RS-232

интерфейс

 

Системная шина

 

Рис. 1.1. Обобщенная структура IBM PC

 
 


Рабочие регистры Сегментные регистры Указатели

AX AH | AL CS SP

           
     
 


BX BH | BL SS BP

           
     


CX CH | CL DS SI

           
     
 


DX DH | DL ES DI

 

       
   


PSW IP Очередь команд

1 2 3 4 5 6

(регистр флагов) Указатель команды

 

Рис. 1.2. Логическая структура МП 8086/88

 

Все регистры имеют 16 разрядов и разделены на 3 группы:

· рабочие регистры (AX, BX, CX, DX),

· сегментные регистры (CS, SS, DS, ES),

· регистры-указатели (SP, BP, SI, DI).

Особые регистры: IP - указатель команды (Instruction Pointer),

PSW - регистр слова состояния процессора (Processor Status Word).

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

 

 

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

 
 


OF DF IF TF SF ZF AF PF CF

 

OF - флаг переполнения SF - флаг знака

DF - флаг направления ZF - флаг нулевого результата

IF - флаг разрешения прерывания AF - флаг вспом. переноса

TF - флаг трассировки PF - флаг паритета

CF - флаг осн. переноса

 

Рис. 1.3. Слово состояния МП 8086

 

Рабочие регистры могут использоваться произвольно, но за ними в системе команд установлено и некоторое постоянное соответствие. Регистр AX используется как аккумулятор, BX - как базовый регистр при вычислении адреса, CX - часто выступает неявным счетчиком, DX - в некоторых командах ввода/вывода содержит адрес порта. В операциях эти регистры могут использоваться как 16-разрядные, так и как 8-разрядные (AL, AH, BL,...). Назначение остальных регистров тесно связано с принципами организации и хранения информации в памяти.

Память МП 8086/88, подобно оперативной памяти любого компьютера, представляется последовательностью байтов, адресуемых 20-разрядным адресом

 

от 0000 0000 0000 0000 0000 (00000h)

- - -

до 1111 1111 1111 1111 1111 (FFFFFh).

 

Адреса принято записывать в шестнадцатиричном коде. Кроме того, поле памяти рассматривается как последовательность параграфов (paragragh) - участков памяти по 16 байт, располагающихся непрерывно друг за другом от начала до конца памяти. В этом случае адреса ячеек одного параграфа имеют постоянную часть (старшие 16 разрядов), а в младших 4 разрядах может быть 0000 - 1111 (0-Fh).

Адрес ячейки может рассматриваться так:

 

19... 7 6 5 4 3 2 1 0

/16/ /4/

номер (адрес) параграфа номер (адрес)

байта параграфа

 

Таким образом, параграфов в памяти - 2 16 = 65386 = 64 К.

Информация в памяти (команды, данные и т.д.) рассматривается как распределённая по сегментам - непрерывным участкам длиной до 64 Кбайт, начинающихся всегда с границы параграфа. Считается, что адрес сегмента (сегментный адрес) - это адрес начального параграфа, поэтому имеет 16 разрядов. Адрес информации внутри сегмента указывается смещением от начала сегмента, которое также имеет 16 разрядов. Полный адрес ячейки в памяти записывается так:

<сегментный_адрес>: <смещение_в_сегменте>

(например, 0000:0400, F000:E32B и т.п.), а физический адрес ячейки вычисляется по схеме, показанной на рис. 1.4a - смещение в сегменте складывается со скорректированным сегментным адресом, то есть адресом первой ячейки сегмента, и полученный 20-разрядный физический адрес является реальным адресом ячейки памяти.

Такая схема основана на наиболее общем методе адресации информации в памяти компьютера, который называют относительным (а также базовым или относительно - базовым). Любую ячейку в блоке

Эффективный адрес (смещение) ПАМЯТЬ

База Сегм.адрес

16 разрядов +0 CS=4A12

+1

Сегментный адрес + +2

+3

16 разрядов 0000......

 

Физический адрес = (CS: IP)Смещение

4A12:0C48 IP=0С48 20 разрядов (4AD68)

...

А б

 

Рис. 1.4. Схема вычисления адреса (а) и доступ к команде

с физическим адресом 4AD68 (б)

 

(сегменте) данных адресуют относительно начала блока (базы), указывая смещение (+0, +1, +2...) до данной ячейки (рис. 1.4б). База располагается в регистре, что обеспечивает гибкость работы с информацией, т.к. размещение блока в другой области памяти не меняет смещений для отдельных единиц информации, а требует установить соответствующим образом только регистр базы (или базу в регистре).

С этой точки зрения принято, что в 8086/88 одновременно доступны четыре базированные области (сегмента) памяти, для которых базовые адреса располaгаются в специальных регистрах:

· сегмент кода, регистр CS;

· сегмент данных, регистр DS;

· сегмент стека, регистр SS;

· дополнительный сегмент данных, регистр ES.

В принципе, эти сегменты в памяти могут располaгаться произвольно, в том числе и частично или полностью перекрываться.

 

Система прерываний 8086/88

 

 

Главное назначение системы прерываний - по возникающим в произвольные моменты времени запросам от узлов компьютера к ЦП -переключать его на соответствующие программы обработки этих запросов. Процесс переключения называется прерыванием, запросы - запросами прерывания (или просто прерываниями). Необходимость в таком механизме обусловлена тем, что в компьютере одновременно с ЦП, выполняющим программу, могут работать и другие элементы, требующие эпизодически внимания со стороны ЦП. Для этого они вырабатывают сигналы-запросы прерывания (IRQ - interrupt request), по которым ЦП обязан максимально быстро прервать выполняемую программу и переключиться на подпрограмму обслуживания данного запроса.

Простейшим устройством такого типа является таймер. Аппаратный таймер считает тактовые импульсы и выдает сигналы (запросы) с частотой 18.2 Гц. ЦП по запросам таймера должен вести счетчик времени суток в памяти. Фактически импульсы таймера подсчитываются, а через время, эквивалентное 24 часам, этот счетчик обнуляется. При необходимости время суток определяется с использованием операций ЦП (делением на 18.2, 60 и т.д.).

Подобным образом работает и клавиатура, непрерывно сканируя поле клавиш. При нажатии или отпускании клавиши вырабатывается запрос прерывания и выдаётся скан-код клавиши (то есть код сканирования или номер клавиши). ЦП должен считать его, обработать и поместить в буфер клавиатуры в памяти, куда уже и должны обращаться все программы.

В 8086/88 реализована система обработки аппаратных прерываний по вектору (рис. 1.5). Под таблицу векторов прерываний отведено 1024 байта в начале памяти, каждый вектор занимает два слова (всего 256 векторов) и представляет собой указатель (полный адрес в виде Сегм: Смещ) подпрограммы обработки прерывания.

Обработка прерываний происходит следующим образом:

 

· запросы прерываний (от таймера, клавиатуры и т.д.) поступают в блок приорететного прерывания (БПП), который выбирает самый важный IRQi и посылает в ЦП общий запрос прерывания Int;

· ЦП, завершив выполнение очередной команды, выдаёт сигнал IntA - подтверждение готовности ЦП выполнить прерывание. По этому сигналу БПП выдаёт на шину данных номер вектора прерывания N, который формируется по i;

· ЦП принимает N, сохраняет в стеке содержимое PSW, CS и IP, сбрасывает триггер разрешения прерывания IF, а затем загружает из таблицы векторов адрес подпрограммы обработки прерывания (IP <= word [ N*4 ], CS <= word [ N*4+2 ]) и переходит к выполнению ее первой команды.

 

Но с аппаратными прерываниями связаны лишь небольшая часть векторов (табл 1.1). Использовать остальные можно с помощью команд программного прерывания int N, (N=0, 1,... FFh), выполняемых подобно аппаратному прерыванию (с пункта 3), но номер вектора берётся из команды.

 
 


0:0000 ip_0 Vect_0 ЦП Int БПП IRQ0

cs_0 IRQ1

0:0004 ip_1 Vect_1 IntA IRQ2

cs_1..

......... 8259A

0:03FC ip_255 Vect_255 N - номер вектора

cs_255 8086 ШД

Таблица векторов a

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

обработки

0:004С E376 Vect_13h прерывания

0:004E F000

       
   
 
 

 


Программа Стек iret

       
 
   
 


04A2:0010 int 13h (1) 0012 ip (2)

04A2:0012... => 04A2 cs => IP E379

00F6 psw CS F000

 
 


б

 

Рис. 1.5. Система прерываний:

а - таблица векторов и структура системы прерываний;

б - обработка программного прерывания.

 

Таблица 1.1

Аппаратные прерывания в порядке приоритета

 

IRQ

PC, XT, AT AT Vect(h) Источник прерывания

 

0 8 Таймер

1 9 Клавиатура

2 A - - -


8 70 Часы реального времени

9 71 Программно переводится в IRQ2

10 72 - - -

11 73 - - -

12 74 - - -

13 75 Математический сопроцессор

14 76 Контроллер жесткого диска

15 77 - - -

 
 


3 B Последовательный порт COM1 (для AT - COM2)

4 C Последовательный порт COM2 (для AT - COM1)

5 D Контроллер ЖД (для AT - LPT2)

6 E Контроллер ГМД

7 F LPT1 (устройство печати)

Для возврата из подпрограммы обработки прерывания используется специальная команда iret, которая восстанавливает из стека регистры IP, CS, PSW и разрешает обработку прерываний, устанавливая флаг IF.

 

Таким образом, появляется возможность иметь набор пронумерованных служебных подпрограмм, расположенных в ПЗУ или ОЗУ и вызываемых через программные прерывания int_N, которые предназначены для выполнения часто встречающихся процедур по обслуживанию аппаратуры.

 

 

Разделение поля памяти в ПК

 

Разделение поля памяти в IBM PC показано на рис. 1.6. Ус-ловно память представлена блоками по 64 Кбайта, пронумерованными от 0 до F. Младшие десять блоков (640 Кбайт) образуют непрерывную

 

Блок Адрес (относительный)

F FFFF

0000 Базовая система П

E

... ввода-вывода З

D

(B I O S) У

C

 

B

Видео_память

A (память дисплея)

 

О

... РАБОЧАЯ

 

ОБЛАСТЬ ПАМЯТИ З

1 FFFF

0000 (640 Кбайт)

FFFF У

 

0 0000-03FF Таблица векторов прерывания

 

Рис. 1.6. Разделение поля памяти ПК

рабочую область памяти, где располагаются и выполняются программы ОС и пользователя. Блоки A и B резервируются как видеопамять, хотя использоваться может лишь её часть в зависимости от типа адаптера дисплея (MGA, CGA, EGA, VGA и др.)

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

Старшие блоки памяти (F, E, D, C) отводятся под ПЗУ, где размещается подсистема самотестирования при включении питания POST (Power On Salf Test) и базовая система ввода-вывода BIOS (Base Input-Output System).

B I O S - программная оболочка вокруг аппаратных средств ПЭВМ, подготовленная и отлаженная разработчиками аппаратуры, предоставляющая возможность любым программам (в том числе и программам самой операционной системы MS DOS) обращаться к аппаратным компонентам через программные прерывания.

Первые 16 векторов прерываний (табл.1.2) отведены в основном для аппаратных прерываний, в том числе, внутренних прерываний ЦП (деление на 0, переполнение).

Таблица 1. 2

Аппаратные прерывания

 
 


Вектор (h) Адрес (h) Источник прерывания

0 00 деление на 0

1 04 пошаговый режим ЦП (по флажку TF)

2 08 немаскируемое прерывание (вход NMI)

3 0С появление точки останова (int3)

4 10 переполнение (по флажку OF)

5 14 печать копии экрана

6 18 - - -

7 1С - - -

8 20 сигнал от таймера (IRQ0)

9 24 сигнал от клавиатуры (IRQ1)

A 28 - - -

B 2С сигнал от COM1 (IRQ3)

C 30 сигнал от COM2 (IRQ4)

D 34 завершение операции контроллера ЖД (IRQ5)

E 38 завершение операции контроллера ГМД (IRQ6)

F 3С завершение операции устройства печати (IRQ7)

 

 

Следующие 16 векторов (табл. 1.3) условно называют векторами прерываний BIOS, т.к. они, в основном, закреплены за подпрограммами нижнего уровня для обслуживания аппаратных компонентов ПЭВМ (сюда же часто относят и прерывание 5 - печать копии экрана).

Таблица 1. 3

Прерывания BIOS

 
 


Вектор (h) Адрес (h) Источник прерывания

10 40 функции управления дисплеем

11 44 определение присоединенного оборудования

12 48 определение размера физической памяти

13 4С функции управления МД

14 50 функции управления последовательным каналом

* 15 54 функции управления магнитофоном и др.

16 58 функции обслуживания клавиатуры

17 5С функции управления принтером

* 18 60 обращение к встроенному Бейсику

19 64 перезапуск системы (теплый старт)

1A 68 - - -

1B 6С - - -

1C 70 - - -

1D 74 адрес таблицы параметров инициал-ции дисплея

1E 78 адрес таблицы параметров НГМД

1F 7С адрес таблицы символов с кодами 128-255

*) Устаревшие функции - могут исключаться

 

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

 

Таблица 1. 4

Прерывания (основные) DOS

 
 


Вектор (h) Адрес (h) Источник прерывания

20 80 завершить работу программы

21 84 служебные функции DOS

22 88 адрес П/ П обработки завершения программы

23 8С адрес П/ П реации на Ctrl-Break

24 90 адрес П/ П реакции на фатальную ошибку

25 94 абсолютное чтение с диска (секторов)

26 98 абсолютная запись на диск (секторов)

27 9С завершить программу, но оставить резидентной

 

 

Несколько векторов прерывания BIOS хранят адреса не подпрограмм, а адреса таблиц, что обеспечивает DOS дополнительную гибкость. За отдельным прерыванием может стоять несколько функций, для выбора необходимо указать номер функции в регистре ah (иногда в ah+al), необходимые входные параметры передаются через регистры. Краткая информация по прерываниям BIOS приведена в табл. 1.5, а более подробное описание приводится в главе 4.

Таблица 1.5

Служебные процедуры ROM-BIOS (краткая сводка)


Прерывания Функции Описание

 

5h - печать содержимого экрана


10h 0 установить видеорежим

(видео) 1 установить размер курсора

2 установить позицию курсора

3 считать позицию курсора

4 считать позицию светового пера

5 установить активную страницу

6 прокрутить окно вверх

7 прокрутить окно вниз

8 считать символ и атрибут

9 записать символ и атрибут

A записать символ

B установить цветовую палитру

C записать точку пиксела

D считать точку пиксела

E записать символ в режиме телетайпа

F получить текущий видеорежим

 

*) Для AT включены дополнительные функции


11h - получить список присоединенного оборудования


12h - получить размер имеющейся памяти (Кбайт)


13h 0 сброс контроллера МД в исходное состояние

(диски) 1 получить состояние

2 прочитать сектор

3 записать сектор

4 проверить секторы

5 форматировать дорожку

 

*) Для AT включены дополнительные функции


14h 0 инициализация порта

(RS-232) 1 послать символ

2 получить символ

3 получить состояние


15h 0 включить мотор

(магнитофон 1 выключить мотор

и др.устр-ва) 2 прочитать блоки данных

3 записать блоки данных

 

 

*) Для AT включены функции для других устройств

 

 

Окончание табл. 1.5


Прерывания Функции Описание

 

16h 0 прочитать символ

(клавиатура) 1 проверить готовность символа

2 получить состояние управляющих клавиш

(Shift, Alt, Ctrl, Num_Lock и др. - байт 0:0417h)


17h 0 послать символ на печать

(печать) 1 инициализация устройства

2 получить состояние


18h - запустить встроенный Бейсик (устарело)


19h - перезагрузить систему (без тестов)

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: