Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Память ПК, сегментная адресация, динамическая память

Вопросы для проверки знаний.

1. Что задает термин “выражение” в Паскале?

2/ Что называют приоритетом операций?

3. Найти с учетом приоритетов операций значения арифметических выражений:

а) 30/6 div 2; б) 28 mod 12-24/3; в) 65 div 12/3.

4. Какие логические операции есть в языке Паскаль?

5. Найти значения логических условий:

а)NOT (5 <= 3) AND (2 <= 2); б)V1 OR V2 AND NOT (V1) при V1=false; V2= true.

6. Как найти в языке Паскаль значение обратной тригонометрической функции:

а) arcsin(x), если известно, что yгол x лежит на сегменте [p;1,5p]?

б) arccos(x), если известно, что yгол x лежит на сегменте [0,5p;p]?

В современных языках программирования, а также вычислительных системах в качестве минимальной адресуемой единицы памяти (ячейки) принят 1 байт (8 бит). Каждая ячейка памяти должна иметь свой уникальный адрес, который используется для работы с ней. Адреса - это целые числа, представленные в компьютере в двоичной системе. Они начинаются с нуля для первой ячейки и возрастают для каждой последующей ячейки на 1. Максимально возможный адрес зависит от того, сколько бит (двоичных разрядов) отведено в компьютере под его запись. В случае, если двоичная длина адресов в компьютере составляет N бит, на них можно записать 2 N различных адресов (от 0 до 2 N -1). Поскольку адреса являются целыми числами, компьютер может использовать для работы с ними обычные арифметические операции.

Очевидно, для расширения возможностей работы ПК желательно иметь потенциальную возможность работы с большими объемами памяти. Из-за того, что двоичная длина адреса N в компьютере фиксирована, а для работы с адресами используются процессоры другой разрядности, то для задания адресов используют специальные приемы.

IBM/PC использует для адресации памяти возможности микропроцессора 8086, в котором адреса имеют длину N =20 бит, следовательно, процессор позволяет адресовать участок памяти размером 220 байт = 1024 К = 1 Мбайт. Его называют стандартной памятью ПК (у компьютеров с процессорами 80386 и выше адресное пространство составляет 4 Гбайт, однако в Паскале нет средств для поддержания работы с такой расширенной памятью). Поскольку основная часть арифметических операций микропроцессора 8086 рассчитана на действия с 16-разрядными числами, то
для работы с 20-разрядными адресами использован принцип сегментированной адресации. В соответствии с этим принципом память для программы делится на непрерывные области памяти, называемые сегментами. Это участки памяти объемом 216 байт = 64 К, в котором байтовые ячейки имеют адреса от 0 до 216-1=65.535. Их называют относительной частью адреса или смещением (offset).

МП 8086 позволяет программе одновременно работать с четырьмя различными сегментами:

1) кодовым (содержит машинные команды программы),

2) данных (хранится информация),

3) стека,

4) вспомогательный, используемый для хранения вспомогательных данных, который также называют динамической памятью.

Для работы с данными 4 сегментами МП 8086 имеет четыре 16-битовых сегментных регистра (один на каждый сегмент) с именами CS, DS, SS и ES.

Полный адрес в МП 8086 состоит из двух 16-битовых значений: адреса сегмента и смещения. Допустим, адрес сегмента данных (содержимое регистра DS) равен 2F84 (в шестнадцатеричной системе счисления), а смещение равно 0532. Необходимо найти фактический адрес. Вычисление его выполняется следующим образом: значение сегментного регистра сдвигается влево на 4 бита (что эквивалентно умножению числа на 10002 или 1016), а затем оно складывается с величиной смещения. Полученное 20-битовое значение и есть фактический адрес данных:

регистр DS (после сдвига): 0010 1111 1000 0100 0000 = 2F840 смещение: 0000 0101 0011 0010 = 00532 -------------------------- -------------------------------- Адрес: 0010 1111 1101 0111 0010 = 2FD72

Участок памяти величиной 16 байт называется параграфом, поэтому говорят, что сегмент всегда начинается на границе параграфа, поэтому можно сказать, что сегмент адресует память с точностью до параграфа, а смещение -- с точностью до байта. Каждому сегменту соответствует непрерывная и отдельно адресуемая область памяти. Стандартная запись адреса имеет форму сегмент:смещение; например, в рассмотренном примере адрес можно записать как 2F84:0532. Сегментную разбивку адресного пространства задачи может производить как программист, так и среда программирования. Размещением сегментов в оперативной памяти управляет операционная система.

Динамическая память в Паскале рассматривается как сплошной массив байтов, который называется кучей (англ. - хип). Физически хип располагается в старших адресах памяти сразу за областью памяти, которую занимает тело программы. Динамические переменные создаются в хипе во время выполнения программы. С помощью этих переменных можно обрабатывать данные, объем которых до начала выполнения программы заранее не известен. Память под них выделяется блоками, которые связываются друг с другом. Такой способ хранения данных называется динамическими структурами.

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

<== предыдущая лекция | следующая лекция ==>
Вопросы для проверки знаний. 1. Что означает явное описание (декларация) типа данных в алгоритмических языках ? | Указатели и динамические переменные
Поделиться с друзьями:


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


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



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




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