Орг. памяти в IBM PC.ppt
- Количество слайдов: 27
Организация памяти персонального компьютера IBM PC
В обычном режиме процессор PC использует 1 Мбайт памяти. Этой области соответствуют адреса от 00000 Н до FFFFFH, что реализуется с помощью 20 разрядной шины адреса.
Для эффективной работы процессора с памятью все адресное пространство разбивается на сегменты. Сегментом является любая непрерывная область памяти размером 64 Кбайт (16 двоичных разрядов). Начальный адрес сегмента может начинаться только с адреса, кратного 16.
Чтобы задать адрес ячейки памяти, сначала нужно задать код сегмента (код сегмента также имеет 16 двоичных разрядов), который определяет начальный адрес сегмента (код умноженный на 16 дает начальный адрес сегмента), а затем задать смещение (еще 16 двоичных разрядов) в данном сегменте.
Абсолютные адреса в таком рассмотрении обозначаются в виде 0000: 0000, где первые 4 шестнадцатеричные цифры указывают на адрес сегмента, а вторые относительный адрес (смещение).
Например: адрес 50 (32 Н) можно обозначить как 0000: 0032 (код сегмента равен 0, смещение - 32 Н). Но тот же адрес может иметь и другие обозначения, если взять другие сегменты: 0001: 0022 или 0002: 0012 или 0003: 0002. Все эти обозначения соответствуют одному и тому же адресу.
При хранении чисел, которые занимают два или более байта, младший байт этого числа хранится в ячейке с меньшим адресом. Например, если целое число 511 (01 FFH) хранится, начиная с ячейки 32 Н, то ячейка 32 Н содержит число FFH (255), а ячейка ЗЗН содержит число 01 Н (1).
Вывод символов на экран монитора
Видеоадаптер персонального компьютера IBM PC работает как память. Диапазон адресов видеопамяти A 0000 H-BFFFFH. Для цветного текстового режима в этом диапазоне выделена область В 8000 НBF 000 H, что соответствует 16 Кбайт памяти.
Для экрана в 2000 позиций (25 строк*80 символов) отводится 4000 байт. Т. е. на каждую позицию по 2 байта. Младший байт содержит код ASCII отображаемого на экране символа. Старший байт (байт атрибутов) содержит информацию о том, как должен быть выведен данный символ.
Если номера строк (Y) и столбцов (X) вести с 0 (Х=0. . . 79, Y=0. . . 24), то адрес ячейки памяти, соответствующий позиции X, Y, можно вычислить по формуле В 800 Н+Х*2+Y*160. А адрес, соответствующий атрибуту этого символа, будет иметь значение на единицу больший.
Назначение битов байта атрибутов символа D 7 1 - мигание символов D 6 1 - красный включается в фоновый цвет D 5 1 - зеленый включается в фоновый цвет D 4 1 - синий включается фоновый цвет в D 3 1 - символ выводится с высокой интенсивностью D 2 1 - красный включается в основной цвет D 1 1 - зеленый включается в
Для примера приведем программу на Паскале, позволяющую вывести мигающий красный символ «А» на синем фоне в левый верхний угол экрана монитора.
Program Screen; Uses CRT; Begin Clr. Scr; Mem[$B 800: $0000]: = 65; Mem[$B 800: $0001]: = 148; Read. Ln End.
Пример расчета расположения символа на экране X=6 Y=38 По формуле - В 800 Н+Х*2+Y*160 = B 800 H + 6*2+38*160 = B 800 H + 609210 Переводим 609210 в шестнадцатеричное число Получается 17 ССH В итоге имеем Mem[$B 800: $17 СС]: = 65;
ASCII код символа А по таблице равен 65
Расчет числа, управляющего атрибутом числа (мигающий красный символ на синем фоне) Смотрим по таблице D 7 1 D 6 0 D 5 0 D 4 1 D 3 0 D 2 1 D 1 0 Получается двоичное число 100101002 Переводим в десятичное, получается 148 D 0 0
Две строки, в которых используется массив Mem, можно заменить одной, используя массив Mem. W: Mem. W[$B 800: $0000]: = 256 * 148 + 65;
Батарейная память и часы
Батарейная память и часы в PC (CMOS Memory and Real Time Clock - CMOS RTC) это микросхема, которая предназначена для хранения информации о конфигурации компьютера и выполняет функции часов-календаря. Питается микросхема от аккумуляторной батареи (ЗВ).
Доступ к ячейкам осуществляется через порты ввода-вывода 070 Н (адрес ячейки) и 071 H (данные). Чтобы получить или задать информацию из какой-либо ячейки нужно, во-первых, по адресу 070 Н записать число, соответствующее адресу нужной ячейки, во-вторых, по адресу 071 Н считать или записать нужную информацию.
Ячейки RTC содержат информацию в двоично-десятичном коде. Назначение некоторых ячеек приведено в таблице. Адрес ячейки Назначение 00 Секунды 01 Секунды будильника 02 Минуты 03 Минуты будильника 04 Часы 05 Часы будильника 06 День недели 07 День месяца 08 Месяц 09 Год (2 младшие цифры) 32 Н 10 Н Год (2 старшие цифры) (Век-1) Тип НГМД D 7 -D 4 - дисковод А, D 3 -D 0 - дисковод В 0 - нет 1 - 360 Кбайт 2 -1. 2 Мбайт 3 -720 Кбайт. 4 -1. 44 Мбайт
Пример программы на Паскале, позволяющей определить типы установленных дисководов:
Program RTC; Uses CRT; Var X, A, B: Byte; Begin Clr. Scr; Port[$70]: =$10; X: =Port[$71]; A: =Trunc(X/16); B: =X And 15; Write. Ln(Дисковод А типа A); Write. Ln(Дисковод В типа В); Read. Ln End.
Пример программы на Паскале, позволяющей считать с памяти и вывести на экран текущее время
Program chasy; Uses crt; var a, b, c, d, e, f: byte; begin clrscr; repeat port[$70]: =$00; delay(10); a: =port[$71]; b: =a shr 4; c: =a and 15; d: =b*10+c; gotoxy(09, 01); writeln(d, ' '); подключение библиотек описание переменных очистка экрана повтор запись числа адреса ячейки (секунды) в порт ввода вывода задержка 10 мс считывание данных выделение старших четырех бит (старшей тетрады) выделение младших четырех бит (младшей тетрады) расчет результирующего числа определяется положение данных на экране вывод на экран
port[$70]: =$02; delay(10); a: =port[$71]; b: =a shr 4; c: =a and 15; e: =b*10+c; gotoxy(06, 01); writeln(e, ' '); минуты port[$70]: =$04; delay(10); a: =port[$71]; b: =a shr 4; c: =a and 15; f: =b*10+c; gotoxy(03, 01); writeln(f, ' '); until keypressed; end. часы повторять до нажатия кнопки клавиатуры
Орг. памяти в IBM PC.ppt