Смекни!
smekni.com

Ответы на вопросы по курсу “Системное программирование” (стр. 4 из 7)

Структура основной памяти, адресуемой 8086

F000 ПЗУ: BIOS, ROM-BASIC, диагностика
E000 Расширения ПЗУ
D000 Расширения BIOS
C000 Расширения BIOS
B000 Видеопамять
A000 Видеопамять
9000 ОЗУ
8000 ОЗУ
7000 ОЗУ
6000 ОЗУ
5000 ОЗУ
4000 ОЗУ
3000 ОЗУ
2000 ОЗУ
1000 ОЗУ
0000 ОЗУ; обычно здесь ПО ОС.

Теоретически, любая область памяти может представлять собой либо неизменяемое ПЗУ, либо ОЗУ. Однако принято первые десять блоков (блоки с нулевого по девятый общим объемом 640 Кбайт) заполнять оперативной памятью. Оперативная память в PC устанавливается начиная с блока О и последовательно, без пропусков, наращивается до блока 9 включительно. Если не все десять блоков заполнены, то программы не должны использовать адреса несуществующей памяти. Обращение по этим адресам может вызывать различные последствия в зависимости от модели машины, однако обычно эта ошибка никак не обнаруживается и программа продолжает работу.

Общая структура машинных команд, адресность. Способы адресации операндов. Расслоение памяти, выравнивание, кэш-память.

Общая структура машинных команд.

Операнды, которые используются в операторах ассемблера, могут быть регистром (г), адресом памяти (mem), непосредственным значением, задаваемым прямо в операторе (imm), сегментным регистром (sr). В связи с этим существуют различные форматы одних и тех же команд:

· первый и второй операнды - регистры. Результат помещается по адресу первого операнда. Могут использоваться все регистры общего назначения.

· первый операнд - регистр, второй - адрес памяти. Результат помещается в регистр, указанный в операторе, например:

mov ах, DATA ; в регистр АХ помещается содержимое поля DATA

· первый операнд - адрес памяти, второй - регистр. Результат помещается по тому адресу, который используется в качество первого операнда.

· первый операнд - регистр, второй - непосредственные данные. Результат помещается в регистр.

· первый операнд - адрес памяти, второй - непосредственные данные. Результат помещается по указанному адресу.

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

· первый операнд - регистр общего назначения, второй - сегментный регистр. Результат помещается в регистр общего назначения.

Команды, работающие с одним операндом, могут работать с регистрами общего назначения, адресами памяти или с сегментными регистрами.

Способы адресации операндов. В программах на Assembler применяются следующие типы адресации операндов:

· регистровая;

· прямая;

· непосредственная;

· косвенная;

· базовая;

· индексная;

· базово-индексная.

Регистровая адресация подразумевает использование в качестве операнда регистра процессора, например: pushDSmovBP,SP

При прямой адресации один операнд представляет собой адрес памяти, второй - регистр: movDATA, АХ

Непосредственная адресация применяется, когда операнд длиной в байт или слово находится в ассемблерной команде: movAX,4Ch

При использовании косвенной адресации исполнительный адрес формируется исходя из сегментного адреса в одном из сегментных регистров и смещения в регистрах ВХ, ВР,SI или DI, например: mov АL, [ВХ], mov АН, [SI].

В случае применения базовой адресации исполнительный адрес являетсй суммой значения смещения и содержимого регистра ВР или ВХ, например:

mov АХ, [ВР + 6]

mov [ВХ + Delta], АХ

При индексной адресации исполнительный адрес определяется как сумма значений указанного смещения и содержимого регистра SI или DI так же, как и при базовой адресации, например:

mov DX, [SI+5]

mov ES: [DI]+6, AL

Базово-индексная адресация подразумевает использование для вычисления исполнительного адреса суммы содержимого базового и индексного регистров, а также смещения, находящегося в операторе, например:

mov ВХ, [BP][SI]

mov ES:[BX+DI],AX

Кэш-память – сверхоперативная память, обращение к которой намного быстрее, чем к оперативной и в которой хранятся наиболее часто используемые участки последней. При обращении к памяти сначала нужные данные ищутся в кэш-памяти. При отсутствии производится обращение к оперативной памяти, в результате общее время доступа к памяти сокращается.

Состав типичных систем команд. Комплексный набор команд и RISC – процессоры.

Программно доступные ресурсы процессора. Управление последовательностью операций. Условные и безусловные переходы. Понятие о механизме прерываний.

В процессоре, как правило, программно доступными являются большинство регистров – ячеек памяти, расположенных непосредственно на процессоре. В 8086 недоступным для непосредственного чтения и изменения является только счетчик команд IP. Остальные регистры 8088, а также 8 регистров сопроцессора доступны программисту. Изменение последовательности выполняемых операций осуществляется при выполнениии команд условного и безусловного перехода. Команды условного перехода передают управление по адресу, заданному операндом, в зависимости от состояния отдельных битов флагового регистра, кроме команды JCXZ, которая проверяет состояние регистра СХ. Модификацию флагов можно произвести как непосредственно, так и выполнив команду сравнения CMP, которая установит флаги по результату операции. Примеры команд условного перехода: JA, JE, JNE, JB, JZ, JL. Команда безусловного перехода JMP передает управление по указанному адресу.

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

Прерывания бывают 2 типов –

а)аппаратные (генерируются схемами ПК в ответ на какое-либо действие, например, при нажатии клавиши на клавиатуре генерируется прерывание 9). Иногда аппаратные прерывания генерируются устройством в случае некорректной работы программы, например деление на 0.

б)программные – генерируются программой для вызова различных подпрограмм из ОЗУ и ПЗУ.

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

Классификация объектных данных в программах на языках высокого уровня. Агрегатныеданные: векторы, массивы, структуры, множества и их отображение на реальную ОП.

Большинство современных ЯВУ определяет понятие типа данных. Оно применяется ко всем объектам данных и определяет набор физический набор свойств и операций присущих данным этого типа. Различают языки со строгой типизацией (PASCAL) и со свободной (ASSEMBLER). Тип данных определяется как рекурсивное использование базовых предопределенных типов + агрегатирование. Агрегатирование – включает в себя описание массивов, структур, множеств, объединений.

Базовые типы

Перичислимый тип – объект данного типа может принимать одно из перечисленных заранее значений. Целые числа, действительные числа, символьные данные, битовые данные, указатель (типизированный и нетипизированный).

Агрегатирование

Массив – каждому элементу ставится в соответствие его индекс. Необходимо иметь возможность переводить индекс в адрес памяти. Для одномерных массивов проекция элементов на ОП выглядит как @A[i]=@A[0]+i*l, где l-длина элемента массива. Для многомерного есть 2 случая – размещение по строкам и по столбцам. Для двумерного массива прекция элемента @A[i,j]=@A[0]+i*lстр+j*lэл-та, где lстр – длина строки, а lэл-та – размер элемента. Если ЯВУ позволяет массивы переменной длины, то к массиву должен быть приписан скрытый элемент данных, наз. дополнительным вектором. Он должен содержать информацию о последних измененных размерностях для правильной индексации.

Структура – совокупность элементов различных типов. Длина структуры равна сумме длин всех ее членов. Чтобы обратиться к структуре по памяти, надо знать, где расположена структура, и смещение элемента внутри структуры.

Объединение – похоже на структуру, но все члены объединения расположены на одном участке памяти.Описывает одни и те же данные “с разных точек зрения”. Размер объединения совпадает с размером самого большого члена объединения.

Множество – представление набора элементов. Могут быть ограниченные и динамические. Представлены в виде битовых полей – 1 означает наличие элемента, 0 – отсутсвие. Длина равна числу элементов разделить на 8 и дополнена до кратности 8 в большую сторону. Доступ – через логические операции.

Указатели и динамические структуры данных: стеки, списки, очереди, деревья.

Указатель – тип данных, хранящих адрес в памяти других данных. В зависимости от типизации указатель может быть нетипизированным (содержать просто адрес в памяти) и типизированным (указывать только на элемент определенного типа).

Стек – хранилише данных однородного типа с дисциплиной “последним пришел-первым вышел” (LIFO).

- SP

Над стеком определены операции PUSH, POP (затолкнуть, извлечь).