домашняя библиотека
Поиск в библиотеке
Навигация по предметам
Последние добавленные новости
Реклама

Архитектура и организация ЭВМЛекции по дисциплине - Архитектура и организация ЭВМ

Тема 3. Сегменты и сегментные регистры

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

Команды компьютерных программ, представленные в двоичной или шестнадцатеричной системах счисления называются машинными кодами.

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

Информация о содержимом ячеек сегмента выводится на экран монитора в виде блока, который называется Дамп. Дамп содержит 16 строк, которые называются Параграфы. В каждом параграфе отображается содержимое 16 ячеек памяти в шестнадцатеричном формате. В каждой ячейке хранится 1 Байт информации, поэтому содержимое ячейки отображается двумя шестнадцатеричными цифрами.

1. Сегмент команд.

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

Начальный адрес сегмента команд, в котором размещаются команды программы, загружается в регистр CS процессора. Внутри сегмента все адреса ячеек памяти относительны к началу сегмента. Такие адреса называются относительными адресами или смещением от начала сегмента. Относительный адрес размещается в регистре IP. Двухбайтовое смещение может находится в пределах от 0000Н до FFFFH.

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

Лекции по дисциплине - Архитектура и организация ЭВМ

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

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

2. Сегмент данных.

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

Начальный адрес сегмента данных, в котором размещаются константы, загружается в регистр DS процессора. Внутри сегмента все адреса ячеек памяти относительны к началу сегмента. Если процессор, выполняя конкретную команду, считывает данные из сегмента данных то относительный адрес ячейки-источника определяется в регистре SI. Если процессор, выполняя конкретную команду, записывает данные в сегмент данных то относительный адрес ячейки-приемника определяется в регистре DI. Физический адрес ячейки сегмента команд определяется по одной из формул:

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

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

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

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

3. Сегмент стека.

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

Начальный адрес сегмента стека, в котором размещается стековая память, загружается в регистр SS процессора. Внутри сегмента все адреса ячеек памяти относительны к началу сегмента. Относительный адрес определяется только для одной ячейки стека – вершины стека. Относительный адрес вершины стека размещается в регистре SP. Физический адрес вершины стека определяется по формуле:

ФА = SS.0 + BP + SP

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

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

4. Дополнительный сегмент.

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

Начальный адрес дополнительного сегмента загружается в регистр ES процессора. Относительные адреса ячеек внутри дополнительного сегмента определяются аналогично как и в сегменте данных, с помощью регистров SI и DI. Физический адрес ячейки дополнительного сегмента определяется по одной из формул:

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

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

   
 
  • Добавлен: 30-06-2011, 23:18 | Просмотров: 11888

    support: admin@sdb.su