
- •Микропроцессорные системы
- •Регистры общего назначения
- •Системные регистры мп
- •Недостатки сегментной организации памяти режима реального адреса.
- •Сегментная организация памяти в защищенном режиме.
- •Страничное преобразование адреса
- •Регистр cl3, старшие 20 бит которого называются регистром каталога страниц pdbr. Это единственный физический адрес, который находится в защищенном режиме.
- •Команды работы с цепочками (строковые) данных
- •Копирование строк
Микропроцессорные системы
Мурлин Алексей Григорьевич
Волик Александр Григорьевич
ЦПУ: частота, разрядность.
Краткая историческая справка развития микропроцессоров
7.02.13
В 1971 году был разработан 4-битовый микропроцессор фирмы Intel MP4004. 1973 – появился 8-битовый процессор MP8080. Первый рабочий процессор - 1975 - 16-битный Intel 8086.
Командный поток - извлекает из памяти и выполняет команду. Успеху развития способствовало:
1. использование их IBM для создания нового поколения ПК;
2. разработка фирмой Microsoft 16-разрядной ОС – MS-Dos.
Базовая архитектура 32-разрядного микропроцессора Intel
14.02.13
Архитектура процессора включает в себя набор регистров, которые можно разделить на две группы: пользовательские и системные регистры. Пользовательские регистры доступны всем программам независимо от их уровня привилегий. Системные регистры предназначены для организации работы системных модулей и поддержки работы прикладных программ, напрямую пользовательским программам не доступны.
Регистр – минимальный объем памяти, который находится в самом процессоре.
Память делится на несколько уровней.
Пользовательские регистры микропроцессоров:
1. регистры общего назначения;
2. сегментные регистры;
3. указатель команд (адрес смещения);
4. регистр флагов (разряд 0 или 1).
Регистры общего назначения
Регистр аккумулятор – для хранения промежуточных данных. При этом большинство команд использующих этот регистр выполняются быстрее, чем они использовали бы другой регистр. Все команды умножения и деления обязательно должны использовать регистр аккумулятор. Также используется в командах ввода-вывода.
Базовый регистр. Используются в базовой адресации.
Счетчик используется для указания количества повторений в циклических командах.
Регистр данных. Участвует вместе с аккумулятивным регистром в командах умножения деления, ввода-вывода, используется для хранения номера порта, куда осуществляется вывод.
РОНы:
Esp – указатель стека. Предназначен для хранения вершины стека, для текущего сегмента стека. Используется неявно (по ум.) командами работы со стеком: включение/исключение в/из стек, команды вызова процедур и обработки прерывания.
Ebp – указатель базы. Предназначен для удобного доступа к объектам данных, находящихся в стеке при помощи базовой адресации.
Индексные регистры. Si – индекс источника, di – индекс приемника. Используются в командах работы со строками. Si адресует элемент строки источника, di – элемент строки приемника.
Все регистры общего назначения могут использоваться для хранения данных в соответствии с их размерами.
Сегментные регистры.
Служат для организации доступа к сегментам памяти. Для режима реального адреса содержат базовый адрес для защищенного режима, селектор, позволяющий найти этот базовый адрес.
Cs – сегментный регистр предназначенный для идентификации текущего сегмента, который содержит коды, исполняющихся программ.
Ss – сегментный регистр стека. Позволяет идентифицировать текущий сегмент стека.
Ds – используется для идентификации сегмента данных по умолчанию.
Дополнительные сегментные регистры предназначены для идентификации дополнительных сегментов данных.
Указатель команд
Указатель команд содержит адрес смещения команды, которая будет выполняться в след за текущей. Напрямую указатель команд не указывается и не изменяется.
Регистр флагов содержит флаги управления и флаги состояния.
Флаги состояния сообщают об особенностях результатов обработки данных:
Cf – флаг переноса. Устанавливается в единицу, если при выполнении операции умножения вычитании произошел перенос или займ. В остальных случаях равен 0.
Pf – флаг четности. Устанавливается в 1, если младшие 8 бит результата имеют четное число единичных бит.
Af – флаг дополнительного переноса.
Zf – флаг нуля. Устанавливается в 1, когда результат = 0, в противном случае 0.
Sf – флаг знака. Всегда равен знаковому (старшему) биту результата.
Of – флаг переполнения. Устанавливается в 1, если в арифметической операции со знаковыми операндами результат превысил диапазон предоставляемых чисел.
Iopl – двубитное поле – уровень привилегии ввода-вывода. Позволяет определить минимальный уровень привилегий задачи, на котором ей разрешается выполнять операции ввода-вывода.
Nt – флаг вложенной задачи. Используется в защищенном режиме и устанавливается в единицу, когда в рамках выполнения одной программы вызывается дочерняя задача.
Tf – флаг пошагового выполнения команд. Используется в механизме отладки программ.
If – флаг прерывания. Всегда равен 1 по умолчанию. Разрешает обработку аппаратных прерываний. Есть специальная команда, которая управляет этим процессом.
Df – флаг направления. Задает направление обработки цепочек данных.
Rf – флаг возобновления. Используется в механизме отладки для подавления особых случаев отладки по одной и той же команде. Действует в защищенном режиме.
Vm – флаг виртуального режима. При 0 в режиме реального адреса, в защищенном режиме, при 1 – превращается в высокопроизводительный мп, использующий только режим реального адреса.
Режимы адресации:
При адресации операндов различают:
1. неявная адресация – операнд адресуется неявно, если в команде нет полей для его определения. В команде операнд отсутствует, но команда оперирует данными.
2. регистровая адресация – операнды находятся во внутренних регистрах мп. Наиболее часто для регистровой адресации используют регистры общего назначения, но не во всех командах можно использовать любые регистры.
mov ax, bx – присвоение значения одного операнда другому (второе первому).
3. непосредственная адресация – операнд находится в самой команде и хранится в сегменте кода. При записи программы непосредственный операнд записывается своим изображением.
Mov ax, 1AFBh
4. адресация ввода-вывода. Существует адресное пространство ввода-вывода размером 64 кбайта (номера портов ввода-вывода) – in, out.
In al, 4oh
In al,dx
Out 20h, al
Out dx, al
Адресация операндов памяти:
1. прямая (абсолютная) адресации. При прямой адресации адрес данных содержится в самой команде. Как правило, задается смещение относительно текущего сегмента данных, при этом значение адреса заключается в квадратные скобки.
Mov al, [1234h]
При данном виде адресации часто используют преобразование типов.
Inc word ptr [1fh]
Байт – 1 байт (db)
Word – слово 2 байта (dw)
Dword – двойное слово 4 байта (dd)
Qword – 8 байт (dq)
Tword – 10 байт (dt)
2 директивы, содержащие адреса.
X db 10
Прямая адресация применяется к ячейкам памяти с фиксированными адресами.
2. косвенная регистровая адресация.
При базовой адресации предполагается, что адрес операндов находится в базовом регистре.
Mov al, [ecx]
Dec dword ptr [dx]
Если при использовании в качестве базового регистра используются bp, ebp то идет обращение к сегменту стека, в остальных случаях к сегменту данных.
Базовая адресация со смещением.
Mov al, [ecx+4] – к значению адреса находящемуся в регистре прибавляется константа, при этом в совокупности получается адрес смещения данных, находящихся в памяти.
Индексная адресация.
Mov ax, array [si]
Суммируется адрес array+ индекс в si. – эффективный адрес
Базовая индексная адресация с масштабированием и смещением.
Mov ax, [bx+2] [si*4]
2[bx]