Основы программирования микропроцессоров



Download 1,87 Mb.
bet23/119
Sana23.02.2022
Hajmi1,87 Mb.
#139915
TuriКонтрольные вопросы
1   ...   19   20   21   22   23   24   25   26   ...   119
Bog'liq
Системное программирование

Контрольные вопросы


  1. Опишите структуру команды на языке ассемблера.

  2. Приведите примеры объявления числовых и символьных данных на языке ассемблера.

  3. Перечислите допустимые операции над адресами.

  4. Приведите примеры адресных выражений.

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

4.1. Сегментирование адресов


Для работы с оперативной памятью используются шина адреса и шина данных. Физически память устроена таким образом, что возможна адресация как 16-битовых слов, так и отдельных байтов памяти. Ширина шины адреса определяет максимальный объём физической памяти, непосредственно адресуемой процессором. Из рассмотрения формата машинной команды становится понятно, что большой объем оперативной памяти ведет к увеличению размера команд. Для их уменьшения поступают следующим образом.
Оперативную память разделяют на логические участки – сегменты. Причем начальные адреса сегментов могут быть любыми, но размер любого сегмента не должен превосходить 2m ячеек (m < k, k – разрядность шина адреса). Тогда абсолютный (физический) адрес некоторой ячейки памяти A можно представить в виде суммы:



где B – база сегмента, к которому относится ячейка A, disp – относительный адрес ячейки, отсчитанный от начала сегмента (адреса В) или смещение (displacement).


В результате большая часть адреса A будет приходиться на базу В. Если в команде требуется указать абсолютный адрес А, то большее слагаемое В сохраняется в ре­гистре, а в команде указывается регистр и меньшее слагаемое disp. Записав в регистр адрес сегмента, далее, не меняя значение регистра, можно использовать его для доступа ко всем ячейкам данного сегмента.
Размер памяти в вычислительной системе на базе микропроцессора 8086 составляет 1 Мб, т.е. 220 байтов (адреса 20-разрядные, k=20), а размер сегмен­тов не должен превышать 64 Кб, т.е. 216 байтов (сме­щения 16-разрядные адреса, m=16). Адреса принято записывать в шестнадцатеричной форме, поэтому физические адреса для 20-разрядной шины адреса находятся в пределах:

00000h  [физический адрес]  FFFFFh


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


В качестве сегментных регистров можно использовать регистры CS, DS, SS и ES. Начальные адреса сегментов памяти можно хранить и в других регистрах, однако использовать их для сегментирования адресов не удастся.
На начальные адреса сегментов накладываются ограничения. В связи с тем, что абсолютные адреса 20-разрядные, а сегментные регистры 16-разрядные, адрес сегмента должен быть кратен 16 (последние 4 бита нулевые, что в шестнадцатеричной форме имеет вид xxxx0h). В результате в сегментных регистрах хранятся первые 16 битов начального адреса сегмента (рис. 16).

Рис. 16. Схема формирования физического адреса.


Например, если адресом начала сегмента является число 12340h, то в сегментном регистре будет храниться величина 1234h. Процессор учитывает такую особенность и при сегментировании адреса к содержимому сегментного регистра добавляет справа 0 и затем прибавляет смещение, указанное в команде. Поскольку добавление справа нуля к шестнадцатеричному числу эквивален­тно умножению числа на 16, то формула вычисления абсолютного адреса по адресной паре CS:disp имеет вид:



При записи ко­манд на ассемблере конструкция вида:




<сегментный регистр>:<адресное выражение>

называется адресной парой (или логическим адресом) и указывает, что адрес, являю­щийся значением выражения, должен быть просегментирован по указанному ре­гистру.


Логический адрес может находиться в пределах:

0000h:0000h <= [логический адрес] <= FFFFh:000Fh


На рис. 17 изображено все доступное адресное пространство оперативной памяти. Показан некоторый сегмент (он может относиться к сегменту кода, данных, стека или к дополнительному сегменту), расположенный по адресу 0010h. В самом сегменте указан адрес с помощью смещения 0120h. Таким образом, логический адрес 0010h:0120h соответствует физическому адресу 00120h.


Рис. 17. Соответствие физического адреса логическому.


Запись вида CS:, DS:, SS: и ES: принято называть префиксом сегментного регистра. Префикс указывается перед адресом, который должен быть просегментирован. С помощью префикса замены сегмента можно обратиться к операнду с использованием любого из четырёх сегментных регистров. Функциональное распределение сегментных регистров следующее (рис. 18).
Ре­гистр CS всегда должен указывать на начало сегмента команд. Адрес очередной подлежащей выполнению команды, указы­вается регистровой парой CS:IP. Указатель команд IP содержит смещение команды, отсчитанное от начала сегмента команд. Регистр DS должен указывать на начало сегмен­та данных, а SS – на начало сегмента стека. Регистр ES (а также позднее введенные FS и GS) может указывать на любой сегмент памяти. Например, инструкция MOV AX, [BP] загружает в регистр AX содержимое слова памяти по адресу SS:BP, однако, инструкция MOV AX, ES:[BP] загрузит содержимое слова по адресу ES:BP.

Рис. 18. Распределение памяти с помощью сегментных регистров.


Коды сегментных префиксов приведены в табл. 5. Вместо сегментного регистра DS может использоваться любой сегментный регистр, для чего необходимо задать соответствующий префикс замены сегмента. Доступ к стековой памяти с использованием указателя стека SP всегда подразумевает использование только сегментного регистра SS.
Табл. 5. Сегментные префиксы.


Download 1,87 Mb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   119




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish