Лекция 5. Используется при работе со стеком при вызове подпрограммы

РЕГИСТР УКАЗАТЕЛЯ СТЕКА (SP->Stack Pointer)

Используется при работе со стеком при вызове подпрограммы.

РЕГИСТРЫ ИНДЕКСА

SI->Source Index

Используется в паре с регистром DS для работы над строками.

DI->Destination Index

Также используется для работы со строками,массивами использует регистр ES.

ОЗУ

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

СЕГМЕНТНАЯ ОРГАНИЗАЦИЯ ПАМЯТИ

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

При загрузке выполняемой программы в памяти ОС инициализирует как минимум 3 сегментных регистра: CS->команды,DS->данные,SS->стек. Для выполняемой программы обязательно имеют сегмент.CODE (CS).

МОДЕЛИ ПАМЯТИ

ТАБИЛЦА

Tiny используется для создания программы в виде.СОМ файла.

Остальные модели используется для создания.ЕХЕ файлов.

Модель Huge преодолевает ограничение длины сегмента 64 кб.

Формирование исполнительного адреса в реальном режиме

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

1. логический(виртуальный) адрес

2. Линейный адрес

3. Физический адрес

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

Процессор узнает адрес следующей выполняемой команды анализируя содержимое 2х регистров: CS и IP. Сегменты жестко не привязываются к определенным адресам памяти. А смещение для каждой команды величина строго постоянная. Содержимое регистра IP видно из анализа листинга. При загрузке программы адрес сегмента выравнивается на границу параграфа(16 байт). Т.е. адрес параграфа должен быть четным числом кратным 16 и в 16м коде заканчиваться на 0.

Пример:

Пусть содержимое CS следующее:

<CS>=3DA0h

Пусть содержимое <IP>=11FAh

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

Вариант 1:

Адресная шина 20-и разрядная

Выравнивание на параграф:

3DA00h

CS+IP=3EBFAh

Вариант 2:

Адресная шина 24-и разрядная

3DA000h

CS+IP=3DB1FA


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: