русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Регистры состояния и управления


Дата добавления: 2014-11-28; просмотров: 2011; Нарушение авторских прав


 

В процессор включены два регистра, постоянно содержащие информацию о состоянии как самого процессора, так и программы, команды которой он в данный момент обрабатывает:

 

1. EIP/IP – Регистр счетчик-команд.

2. EFLAGS/FLAGS – Регистр флагов.

 

С помощью этих регистров можно управлять состоянием процессора.

 

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

Регистр счетчик команд содержит смещение ячейки памяти, в которой находится текущая команда выполняемой программы. Этот регистр непосредственно недоступен программисту. Значение этого регистра может изменяться различными командами управления: командами условных и безусловных переходов, командами вызова процедур и возврата из процедур. Содержимое счетчика команд изменяется так же при возникновении прерываний. Кроме того загрузив программу в ассемблерный отладчик программист может изменять содержимое счетчика команд, изменяя тем самым последовательность выполнения команд и изучая таким образом различные режимы выполнения программы.

 

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

Исходя из особенностей использования, флаги делятся на три группы.

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



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

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

 

Тема 4. Организация памяти

 

В архитектуре IA-32 используется сегментированная модель памяти.

Сегментированная модель памяти.

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

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

Операционная система размещает сегменты программы в оперативной памяти по определенным физическим адресам, после чего помещает значения этих адресов в определенные места. Куда именно, зависит от режима процессора.

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

Формирование физического адреса в реальном режиме.

Максимальный размер одного сегмента составляет 64 Кбайт. Для обращения к конкретному физическому адресу оперативной памяти необходимо определить начальный адрес сегмента (НАС) и относительный адрес ячейки внутри сегмента (Смещение).

НАС имеет размерность 20 бит. Старшие 16 бит размещаются в определенном сегментном регистре. Младшие 4 бита образуются сдвигом адреса влево на 4 бита.

Физический адрес (ФА) образуется в результате сложения НАС и смещения:

 

ФА = НАС + СМЕЩЕНИЕ

 

Смещение размещается в одном из регистров общего назначения.

Физический адрес ячейки сегмента команд определяется по формуле:

 

ФА = CS.0 + IP

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

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

Физический адрес ячейки сегмента команд определяется по одной из формул:

 

ФА = DS.0 + SI , для режима чтения

ФА = DS.0 + DI , для режима записи

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

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

Физический адрес вершины стека определяется по формуле:

 

ФА = SS.0 + BP + SP

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

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

 

Физический адрес ячейки дополнительного сегмента определяется по одной из формул:

 

ФА = ES.0 + SI , для режима чтения

 

ФА = ES.0 + DI , для режима записи

 

Рассмотрим алгоритм этого преобразования при обращении к ячейке сегмента команд:

 

19 ………………..…0
БФА = РА
Расширенный адрес

 

15 …………………………...…..…0
CS = НАС
Начальный адрес сегмента команд

 

 

19 ………………..…0
Сумма адресов
15 ………………..…0
IP = ОА
Относительный адрес

 

 

15 ………………..…0
СШ = ФА
Физический адрес

 

Предположим начальный адрес сегмента команд представлен в шестнадцатеричном коде и имеет значение 1E22H. Начальный адрес сегмента команд размещается в регистре CS = 1E22H. Начальный адрес сегмента имеет размерность 16 бит, т.е. 2 Байта.

Предположим, что текущая команда программы размещается в сегменте команд, в ячейке с относительным адресом 14H. Относительный адрес текущей команды размещается в регистре IP = 14H. Относительный адрес имеет размерность 16 бит, т.е. 2 Байта.

Начальный адрес сегмента поступает в блок формирования адреса, где к нему добавляются 4 нулевых бита справа. Четыре нулевых бита могут быть представлены0000B = 0H. В результате будет получен расширенный адрес 1E220H. Расширенный адрес имеет размерность 20 бит.

Расширенный адрес и относительный адрес поступают на сумматор адресов, который выполняет арифметическое сложение этих адресов.

 

     
    1E220
   
    1E234

 

Полученная сумма 1E234H и будет являться физическим адресом ячейки оперативной памяти, в которой находится текущая команда программы.

 

Тема 5. Двоичные и шестнадцатеричные числа

 



<== предыдущая лекция | следующая лекция ==>
Регистры общего назначения | Представление информации.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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