Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LRP1

.pdf
Скачиваний:
16
Добавлен:
02.02.2015
Размер:
453 Кб
Скачать

2-3

PC: число банков памяти на системной плате

4-5

PC: тип дисплея (11=монохромный,

 

10=цветной 80*25, 01=цветной 40*25)

6-7

PC: число накопителей на дискетах

Порт B (61H)

 

------------

 

бит 0

PC,XT,PCjr: управляет каналом 2 таймера 8253

1PC,XT,PCjr: вывод на динамик

2PC: выбор содержимого порта C

PCjr: 1=символьный режим, 0=графический

3PC,PCjr: 1=кассетный мотор выключен XT: выбор содержимого порта C

4PC,XT: 0=разрешение ОЗУ

PCjr: 1=запрет динамика и мотора кассеты

5PC,XT: 0=разрешение ошибок щелей расширения

6PC,XT: 1=разрешение часов клавиатуры

5-6 PCjr: выбор динамика (00=8253, 01=кассета, 10=ввод/вывод, 11=микросхема 76496)

7PC: выбор содержимого порта A PC,XT: подтверждение клавиатуры

Порт C (62H)

------------

когда в порте B бит 2=1 для PC или бит 3=1 для XT

биты 0-3 PC: нижняя половина переключателя 2 конфигурации (ОЗУ на плате расширения)

0PCjr: 1=введенный символ потерян

1XT: 1=есть мат. сопроцессор PCjr: есть карта модема

2PCjr: есть карта НГМД

2-3 XT: число банков памяти на системной плате

3PCjr: 0=128K памяти

4PC,PCjr: ввод с кассеты XT: не используется

5PC,XT,PCjr: выход канала 2 8253

6PC,XT: 1=проверка ошибок щелей расширения PCjr: 1=данные с клавиатуры

7PC,XT: 1=контроль ошибок четности

11

когда в порте

B бит 2=0 для PC или бит 3=0 для XT

биты 0-3

PC: верхняя половина переключателя 2 конфигура-

 

ции (не используется)

0-1

XT: тип дисплея ( 11=монохромный, 10=цветной

 

80*25, 01=цветной 40*25 )

2-3

XT: число накопителей НГМД (00=1 и т.д.)

4-7

PC,XT: то же, что и с установленными битами

Отметим, что 0 в одном из битов регистра соответствует установке переключателя "off".

3.5.Определение конфигурации IBM PC AT.

3.5.1.Данные, хранящиеся в КМОП-памяти.

КМОП-память организована на базе микросхемы MC146818 фирмы Motorola и имеет 64 8-разрядных ячейки (регистра). В таблице 1 приведено содержимое тех ячеек памяти, в которых хранятся данные о конфигурации и состоянии машины.

Обращение к КМОП-памяти (запись и считывание) осуществляется следующим образом: сначала в порт 70H заносится адрес ячейки (номер регистра). Затем в зависимости от выполняемой операциии в порт 70H или записываются данные, или из порта 70H данные считываются.

Таблица 1

Содержимое ячеек

──────────────────────────────────────────────────────────────

Адрес ячейки Содержимое

──────────────────────────────────────────────────────────────

0EH

Байт состояния диагностики при включении питания

10H

Тип используемого НГМД

14H

Конфигурация оборудования

15H-16H

Объем основной памяти

30H-31H

Объем расширенной (extended) памяти

3.5.1.1.Байт состояния диагностики.

Байт состояния диагностики содержит результаты выполнения диагностики при включении питания машины. Формат байта состояния приведен в таблице 2.

12

Таблица 2

Содержимое байта диагно=стики

──────────────────────────────────────────────────────────────

Бит Значение

──────────────────────────────────────────────────────────────

0-1

Не используется, равно 0

2

0

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

 

 

времени;

 

1

- часы установлены правильно

3

1

- неисправность НМД, невозможно загрузить

 

 

операционнцю систему с жесткого диска;

 

0

- НМД исправен

4

1

- фактический размер оперативной памяти не

 

 

соответствует указанному в КМОП-памяти;

 

0

- размер оперативной памяти указан правильно

5

1

- ошибка в конфигурации системы;

 

0

- конфигурация указана правильно

6

1

- ошибка в контрольной сумме КМОП-памяти;

 

0

- контрольная сумма КМОП-памяти правильна

7

1

- разрядка аккумулятора, питающего КМОП-

 

 

память и часы реального времени;

 

0

- аккумулятор исправен и заряжен

───────────────────────────────────────────────────────────────

3.5.1.2.Тип используемых флоппи-дисков.

Младшая и старшая тетрады этого байта описывают соответственно второй и первый НГМД:

0000 - дисковод не установлен;

0001 - дисковод на 360К;

0010 - дисковод на 1.2М;

0011 - дисковод на 720К;

0100 - дисковод на 1.44М.

3.5.1.3.Конфигурация оборудования.

В таблице 3 приведен байт конфигурации:

13

Таблица 3

Байт конфигурации

──────────────────────────────────────────────────────────────

Бит Значение

──────────────────────────────────────────────────────────────

0

1

- в системе установлены НГМД;

 

0

- НГМД не используются

1

1

- установлен арифметический сопроцессор

 

 

 

80287 или 80387;

 

0

- сопроцессор не установлен

2-3

Не используются, равны 0

4-5

Тип видеоконтроллера и его режим:

 

Биты: 5

4

 

 

0

0

- не используются или EGA;

 

0

1

- CGA, EGA, VGA в режиме 40x25

 

1

0

- CGA, EGA, VGA в режиме 80x25

 

1

1

- монохромный контроллер

6-7

Количество используемых НГМД

─────────────────────────────────────────────────────────────

3.5.1.4.Объем основной памяти.

Ячейка 15H содержит младший байт, а ячейка 16H - старший байт размера основной памяти в килобайтах.

3.5.1.5.Объем дополнительной памяти.

Ячейки 16H и 17H содержат соответственно младший и старший байты размера дополнительной памяти (расположенной выше 1М) в килобайтах.

3.5.2.Данные, хранящиеся в области BIOS оперативной памяти.

BIOS в процессе инициализации опрашивает состояние перемычек и анализирует содержимое КМОП-памяти. После анализа BIOS записывает в свою область памяти по адресу 0040:0010H слово конфигурации. Назначение отдельных битов этого слова приведено в таблице 4.

14

Таблица 4

Содержимое слова конфигурации

──────────────────────────────────────────────────────────────

Биты Значение

──────────────────────────────────────────────────────────────

0

1

-

система содержит НГМД;

 

2

-

система не содержит НГМД

1

1

-

установлен арифметический сопроцессор;

 

0

 

арифметический сопроцессор не установлен

2-3

Объем основной памяти, установленной на сис-

 

темной плате:

 

Биты:

3

2

 

 

 

0

1

- 16К

 

 

1

0

- 32К

 

 

1

1

- 64К и больше

4-5

Биты:

5

4

 

 

 

0

0

- не используется или EGA

 

 

0

1

- CGA, EGA, VGA в режиме 40x25;

 

 

1

0

- CGA, EGA, VGA в режиме 80x25;

 

 

1

1

- монохромный контроллер

6-7

 

Количество установленных НГМД

8

 

1

- используется контроллер прямого доступа

 

 

 

 

к памяти;

 

 

0

- контроллер прямого доступа к памяти не

 

 

 

 

используется

9-11

 

Количество установленных портов последова-

 

 

тельной передачи данных RS232S

12

 

1

- применяется игровой адаптер (джойстик);

 

 

0

- игровой адаптер не применяется

13

 

1

- установлен последовательный принтер

 

 

 

 

(только для PCjr)

14-15

 

Количество установленных принтеров

─────────────────────────────────────────────────────────────

4.Порядок выполнения работы

4.1.В соответствии с индивидуальным заданием, используя справочную информацию о технических характеристиках ПЭВМ, приведенную в разделе 3, определить адрес или область ПЗУ, ОЗУ или КМОП-памяти, содержащие требуемые сведения.

4.2.Написать программу определения требуемых характеристик

ПЭВМ.

15

5.Особенности программирования

5.1.На языке Турбо-Паскаль.

5.1.1.Для обращения к ячейкам ОЗУ и ПЗУ применяются предопределенные массивы Mem и MemW. Например, для чтения слова из ячейки ОЗУ 0040:0010H используется выражение wo:=MemW[$0040:$0010], где wo

-переменная типа word; для чтения байта из ПЗУ по адресу

F000:FFF5H используется выражение b:=Mem[$f000:$fff5] (b переменная типа byte).

5.1.2.Для обращения к портам ПЭВМ применяются предопределенные массивы Port и PortW. Например, для записи значения 10H в порт 70H используется выражение Port[$70]:=$10; для чтения из порта 70H используется выражение data:=Port[$71], где data - переменная типа byte.

5.1.3.Для выделения определенного разряда в байте использует-

ся битовая маска, содержащая

единицу в проверяеммом разряде

и нули

- в остальных. Битовая маска

складывается с байтом по схеме

пораз-

рядной коньюнкции AND в результате чего получаем значение 0, если заданный бит содержит 0 и значение 1 в противоположном случае. Например,для определения значения 0-го разряда переменной b( типа byte) необходимо записать :

if(b and $01)=0 then writeln( '0-й разряд байта b содержит 0') else writeln(' 0-й разряд байта b содержит 1');

5.2. На языке Турбо-Си.

5.2.1. Для обращения к ячейкам ОЗУ и ПЗУ используются дальние указатели,которые обьявляются в программе следующим образом:

char far * uk;-для работы с байтами

int far * uk; -для работы с двухбайтными словами ( переменные типа int ).

При этом первым следует младший байт,потом-старший байт.Например,для чтения слова из ОЗУ по адресу 0040:0010H используется выражение:

uk=( int far * ) 0x00400010; 16

wo=* uk;

где: woпеременная типа int.

Для чтения байта из ПЗУ по адресу F000:FFF5H используется выражение :

uk=( char far * ) 0xF000FFF5; b=* uk;

где: b-переменная типа char.

5.2.2. Для обращения к портам ПЭВМ применяются функции чтения и записи порта,которые хранятся в библиотеке < dos.h>. Библиотека подключается директивой

#include < dos.h>

после чего, например, для записи значения 10H в порт 70H используется выражение:

outportb(0x70,0x10).

Для чтения из порта 70H используется выражение:

data=intportb(0x70);

где dataпеременная типа char.

5.2.3. Для выделения определенных разрядов в байте используется битовая маска, которая складывается с байтом по схеме поразрядной коньюнкции & (не путать с логической коньюнкцией &&), в результате чего получается истинное значение(1) ,если заданный бит содержит 1 и ложное значение (0) в противоположном случае. Например,для определения значения 0 разряда переменной b( типа char) необходимо записать :

if(b&0x01) printf( "0 разряд b содержит 1\n "); else printf( " 0 разряд b содержит 0\n " ).

6. Индивидуальные задания

1.Определить тип IBM; число НГМД; проверить, исправен ли аккумулятор.

2.Определить день создания BIOS; объем основной памяти и число подключенных принтеров.

17

3.Определить месяц создания BIOS и число подключенных последовательных портов; проверить, установлен ли сопроцессор.

4.Определить тип 1-го НГМД и год создания BIOS; проверить, имеет ли ПЭВМ контроллер прямого доступа к памяти.

5.Определить тип видеоконтроллера, его режим и дату создания BIOS; проверить исправность НМД.

6.Определить тип IBM; определить, имеет ли данная ПЭВМ видеоконтроллер EGA; проверить, правильно ли установлены часы реального времени.

7.Определить объем дополнительной памяти; определить день создания BIOS; проверить, установлен ли сопроцессор.

8.Определить тип 2-го НГМД (если он есть); объем основной памяти на системной плате и год создания BIOS.

9.Определить число подключенных принтеров и дату создания BIOS; проверить, правильно ли установлены часы реального времени.

10.Определить, имеет ли данная ПЭВМ (и сколько) НГМД емкостью 1.2М; определить месяц создания BIOS; проверить, имеет ли ПЭВМ контроллер прямого доступа к памяти.

11.Определить тип микропроцессора и тип ПЭВМ;проверить, исправен ли аккумулятор.

12.Определить, имеет ли ПЭВМ НГМД емкостью 1.44 М; определить год создания BIOS и число подключенных принтеров.

13.Определить тип IBM; объем дополнительной памяти и число подключенных последовательных портов.

14.Определить тип видеоконтроллера, его режим; проверить, установлен ли сопроцессор; определить месяц создания BIOS.

15.Определить, имеет ли данная ПЭВМ (и сколько) НГМД емкостью 1.2М; определить число подключенных принтеров и дату создания

BIOS.

16.Определить тип IBM; объем дополнительной памяти; проверить, имеет ли ПЭВМ контроллер прямого доступа к памяти.

17.Определить тип 1-го НГМД, год создания BIOS и число подключенных принтеров.

18.Определить тип микропроцессора и дату создания BIOS; проверить, правильно ли установлены часы реального времени.

19.Определить тип IBM; определить тип видеоконтроллера, его режим; проверить, установлен ли сопроцессор.

20.Определить тип 2-го НГМД (если он есть); объем основной памяти на системной плате и тип микропроцессора.

18

7. Содержание отчета 7.1.Тема лабораторной работы. 7.2.Цель работы.

7.3.Индивидуальное задание. 7.4.Текст программы. 7.5.Результаты работы программы. 7.6.Выводы.

Лабораторная работа 3.

ОРГАНИЗАЦИЯ ПРЕРЫВАНИЙ В ПЭВМ.

1. Цель работы Изучение механизма прерываний, их типов, алгоритма и средств

их обработки, а также приобретение практических навыков создания собственных программ обработки прерываний.

2.Темы для предварительной проработки

2.1.Работа контроллера прерываний.Установка вектора прерыва-

ний.

2.2.Маскирование прерываний.

2.3.Резидентные программы.

3.Описание работы

3.1. Механизм и типы прерываний.

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

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

По источнику и характеру возникновения прерывания можно разделить на группы (рис. 1):

19

Прерывания

┌──────────┴──────────────┐

Аппаратные Программные

┌─────────┴──────────┐

Внешние Внутренние

┌──────┴───────┐

Маскируемые Немаскируемые

Рис. 1.

Программные прерывания вызывают сами программы, поэтому они не являются асинхронными. Для этого они используют команду INT.

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

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

Использование прерываний при работе с медленными внешними устройствами позволяет совместить ввод/вывод с обработкой данных в центральном процессоре и в результате повышает общую производительность системы.

Внешние аппаратные прерывания вызваны сигналами, внешними по отношению к цетрральному процессору, и подаются на его входы INT и

NMI.

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

Вход немаскируемого прерывания NMI обычно используется для сообщений о "катастрофических" событий (отключении питания, обнаружении ошибок памяти и т.д.). Номер этого прерывания равен 2.

Внутренние (логические) прерывания формируются самим процес20

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