36228

Адресация памяти ЭВМ. Организации памяти и адресации

Доклад

Информатика, кибернетика и программирование

Адресация памяти ЭВМ Организации памяти и адресации. Для того чтобы адресовать к такому количеству ячеек необходим 20разрядный указатель. Начальный адрес сегмента может быть установлен прикладной программой и всегда должен начинаться с 16байтовых границ. Базовый адрес сегмента получается делением действительного физического адреса начальной ячейки сегмента на 16.

Русский

2013-09-21

149 KB

35 чел.

15. Адресация памяти ЭВМ

Организации памяти и адресации.

МП I8008 имеет мегабайтовую память. Для того чтобы адресовать к такому количеству ячеек, необходим 20-разрядный указатель. Поскольку указатель команд IP, также как и все остальные регистры – указатели BX, SI, DI, BP и SP имеет 16 разрядов, МП не имеет прямого доступа сразу ко всей памяти. Эта задача решается с помощью сегментирования.

Организация сегмента.

Каждый сегмент памяти содержит до 64 кб(65536 байт). Начальный адрес сегмента может быть установлен прикладной программой и всегда должен начинаться с 16-байтовых границ. Базовый адрес сегмента получается делением действительного физического адреса начальной ячейки сегмента на 16. Эти базовые адреса содержаться в сегментных регистрах, так что МП одновременно может до четырёх однозначно определяемых сегментов. На расположение сегмента не накладывается никаких специальных ограничений, кроме одного: он должен быть на границы 16 байт (т. е. физический адрес начальной ячейки должен делиться на 16). Сегменты могут быть смежными, разделёнными, перекрываться частично или полностью. После того как сегмент определён, регистры- указатели могут быть использованы для адресного обращения к любому байту или слову в пределах этого сегмента. При такой организации адресации МП имеет прямой доступ только к 64 кб памяти, а к миллиону байтов может адресоваться лишь при помощи регистров-сегментов.

Так как МП I8088 имеет четыре регистра сегментов, в его памяти одновременно выделяются четыре адресуемых сегмента: командный сегмент, сегмент данных, дополнительный сегмент и стековый сегмент.

 

        

                      

       

Командный

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

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

Дополнительный сегмент обеспечивает дополнительные 64 Кб памяти.

Стековый сегмент содержит стековую структуру емкостью до 64 Кб.

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

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

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

Мегабайтовую память МП I8088 можно рассматривать как последовательность байтов, начинающуюся с физического адреса 00000Н, заканчивающуюся адресом FFFFFH.

Команды и программные данные могут быть записаны побайтно или словами в любой из этих адресов. Для запоминания 16 – битового слова или 32 – битового двойного слова используется следующее соглашение:

16 – битовое слово всегда заносится в память так, что старший байт находится в ячейке с большим номером. Например, если шестнадцатеричное число 0235Н записано в ячейку 2800Н, то при этом сама ячейка 2800Н содержит число 35Н, а число 02Н записывается в ячейку 2801Н.

2. 32 – битовое двойное слово может быть использовано в качестве указателя для адресации байта или слова в любом сегменте памяти ЭВМ. Младшее слово адреса указывает перемещаемый адрес, а старшее слово – начальную ячейку (базовый адрес) сегмента. Два байта каждого слова заносятся в память согласно условию записи 16 - битового слова. Так как физический адрес определяется 20 – битовым кодом, то УС генерирует действительный адрес, соответствующий адресу в сегменте, сдвигал базовый адрес (старшее слово) влево на 4 разряда и прибавляя к нему 16 – битовый перемещаемый адрес (младшее слово). 32- битовый указатель заполнен 16 – ричным числом 04854000Н, которое задет физический адрес 08В50Н (сегмент 04В5Н, сдвинутый на 4 разряда влево), что дает 4В50Н, плюс перемещаемый адрес (4000Н).

Режимы адресации.

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

Регистровые операнды.

Команды, содержащие только регистровые операнды, являются наиболее компактными и выполняются быстрее всех остальных типов команд. Это происходит вследствие того, что все операции с регистровыми операндами реализуются в ИУ ЦП без обращения к памяти ЭВМ. Регистры общего назначения могут быть источниками операндов, их приемниками или теми и другими одновременно. Сегментные регистры могут использоваться только либо как источники, либо как приемники операндов. Например, машинная команда 20D0 (AND AL, DL) выполняет операцию логического умножения AND содержимого регистров AL и DL и помещает результаты в регистр AL. Регистр DL является источником операнда, а регистр AL – приемником. Эта команда содержит только два байта и выполняется ЦП за 3 такта.

Непосредственные операнды.

Непосредственные операнды – это постоянные данные, определяемые как часть машинной команды. Данные могут быть 8 – или 16 – битовыми. Непосредственные операнды могут быть выбраны достаточно быстро, так как ЦП может получить их прямо из очереди команд без обращения к памяти ЭВМ. Непосредственные операнды могут быть заданы только как так называемые операнды – источники. Машинная команда более компактна, если приемник операнда – аккумулятор (регистр AL или AX).

Например, машинная команда 3С02 (СНР AL, 02) сравнивает содержимое регистра AL с шестнадцатеричным числом 02 и устанавливает определенные флаги в соответствии с результатом сравнения. Непосредственным операндом в этой команде является шестнадцатеричная константа 02. Эта команда занимает только два

Исполнительный адрес EA.

Перемещаемый адрес внутри сегмента, который ЦП вычисляет для операнда в памяти, называется исполнительным адресом ЕА операнда. Так как сегмент памяти содержит до65536 однобайтовых ячеек, перемещаемый адрес может быть представлен 16-ти разрядным двоичным числом без знака, что обеспечивает возможность доступа к каждому байту сегмента. В тех случаях, когда для определения операнда в памяти в коде машинной команды требуются два байта, группа битов второго байта команды сообщает ЦП, как вычисляется 16-ти битовый адрес необходимых операндов.

байт

слово

Reg=

000

AL

AX

Rm=

000

BX + SI

BX + SI + смещение

AL

AX  

001

CL

CX

001

BX +DI

BX + DI + смещение

СL

CX

010

DL

DX

010

BP+ SI 

BP + SI + смещение

DL

DX

011

BL

BX

011

BP + 05

BP +DI + смещение

BL

BX

100

AH

SP

100

SI

SI + смещение             

AH

SP

101

CH

BP

101

DI

D  + смещение

СH

BP

110

DH

SS

110

Direct

BP + смещение

DH

SI

111

BH

DS

111

BX

BX+ смещение

BH

DI

Поле Mod используется для того, чтобы различить, соответствуют ли операнды команд регистрам ЦП или ячейкам памяти. Величина XX имеет четыре возможных двоичных значения:00, 01, 10, 11. Значение11 в поле Mod указывает на то, что операндами машинных команд являются регистровые операнды. Двоичные значения 00, 01, и 10 задают типы адресам соответственно с нулевым, одно- или двухбайтовым смещением. Смещение может быть 8-ми битовым числом со знаком или 16-ти битовым без знака, которое включается в машинную команду, как ее часть и используется при вычислении исполнительного адреса.

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

Три бита ZZZ формируют поле Rm. Вместе с полем Mod  оно используется для идентификации определенного типа адресации. В команде допустима любая комбинация в полях Mod и Rm, что обеспечивает многообразие регистров адресации в МП.

Прямая адресация.

Простейшим типом адресации является простая; Она не использует не каких регистров. Исполнительный адрес ЕА берется непосредственно из 16-ти битового поля смещения машинной команды. Этот прямой адрес однозначно определяет байт или слова памяти, расположенные внутри сегмента.

Прямая адресация обычно используется для работы с простыми переменными или константами. В МП должно соблюдаться условие, согласно которому прямой адрес не выходит за пределы сегмента данных. Поскольку в программах прямой адрес может определяться относительно любого из четырех доступных сегментов, для его модификации возможно применение префиксных команд. При использовании прямой адресации в поле Mod содержится число 00, а в поле Rm- число 110.

Пусть, например, в программе, написанной на языке ассемблера, регистр сегмента данных DS содержит 04В5H, а байт 1400H текущего сегмента данных – символическое имя LOCI. Машинная команда C606001402 (MOV LOC1.02) предписывает заполнить по перемещаемому адресу 1400H сегмента данных шестнадцатеричное число 02. После смешения команды содержит число 1400H и интерпретируется как исполнительный адрес ЕА. Действительный физический 20-ти битовый адрес, определяемый YC, в этом случае соответствует 05F50H (4B50H+1400H).

Для прямой адресации используется два специальных вида адресации: относительную и абсолютную.

При относительной адресации поле смещения представляется 8-ми битовым числом со знаком. Исполнительный адрес ЕА при этом определяется в результате сложения содержимого поля смещения и регистра указателя команду IP (рис. 9, В).

Относительную адресацию используют для команд условных переходов, таких, как JE (переход по равенству), JO (переход по переполнению). При использовании относительной адресации байт адресации (Mod /Reg/ Rm) не требуется.

При абсолютной адресации часть команд представляет собой 32- битовый указатель, определяющий физический адрес в памяти МП. Младшее слово указателя рассматривается при этом как перемещаемый адрес сегмента, базовым адресом которого является старшее слово указателя (рис 9, с). При абсолютной адресации байт адресации (Mod/Reg/ Rm) также не требуется.

Косвенная адресация

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

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

При косвенной адресации существует одно исключение: для команды JMP (переход) и CALL ( вызов процедур) В качестве исполнителя может выступать содержимое любого из 16-битовых регистров общего назначения (AX, BX, CX, DX, SJ, DJ, BP, SP)/

Пусть, например, в программе на языке ассемблера регистр DS содержит число 14С5H. Если содержимым регистра SJ является число 28FFH, команда CG0410 (MOV [SI], 10H) заполняем шестнадцатеричное число10 в байте 28FFH сегмента данных. В этом случае содержимое регистра SJ служит исполнительным адресом. Действительный физический 20-битовый адрес памяти, соответствующий перемещаемому адресу 28FFH , при этом равен 1754FH (14C50H+28FFH).

Косвенная адресация со смещением.

При такой адресации используемый адрес ЕА определяется как сумма величины смещения и содержимого одного из регистров - базового или индексного(BX, BP, SJ, DJ) (рис.11).

Величина смещения может быть 8-битовым числом без знака. При использовании регистров BX, SJ или DJ за исполнительный адрес принимается перемещаемый адрес текущего сегмента данных, базовый адрес которого определяется регистром сегмента данных DS. При использовании регистра BP за исполнительный адрес принимается перемещаемый адрес текущего стекового сегмента, базовый адрес которого содержится в регистре сегмента стека SS. Поскольку в прикладных программах могут быть использованы префиксные команды, существует возможность переприсвоения исполнительных адресов относительно других сегментов памяти.

При использовании адресации денного типа поле Mod содержит двоичное число 01 и 10 в зависимости от того, является ли смещение 8-ми 16-битовым числом. Поле Rm представляется двоичным числом 100, 101, 110 или 111 в зависимости от того, какой используется регистр SJ, DJ, BP или BX соответственно.

Рассмотрим пример, в котором регистр сегмента содержит код 04В5Н. Если регистр ВР содержит число FF10Н, машинная команда С6870245 (MOV [BP+02],45H) запоминает шестнадцатеричное число 45 в байте FF12Н стекового сегмента. Величиной смещения является 8-битовое число со значением (02), занимающее в команде третий байт. Исполнительный адрес ЕА вычисляется в результате сложения величины смещения с содержимым регистра ВР (FF10Н+02Н). Это соответствует физическому адресу 14А62Н (4В50Н+FF12Н) памяти, который определяется УС. Поскольку при использовании регистра ВР описанная адресация обеспечивает доступ к стековому сегменту, это очень удобно для работы с конструкциями данных, использующих стек.

Базово-индексная адресация.

При такой адресации исполнительный адрес определяется в результате сложения содержимого базового регистра (ВХ или ВР) и индексного регистра (SJили DJ).

Благодаря возможности в процессе выполнения программы содержимого базового и индексного регистров, базово-индексная адресация является очень гибким средством доступа к самым различным участкам памяти. При использовании регистра ВХ исполнительный адрес определяется относительно сегмента данных с базовым адресом, содержащимся в регистре РS. При использовании регистра ВР исполнительный адрес определяется относительно сегмента стека, базовый адрес которого содержится в регистре SS. Прикладные программы могут включать префиксные команды, дающие возможность переприсвоить исполнительный адрес относительно других сегментов памяти компьютера.

При базово-индексной адресации поле Mod представлено числом 00. Поле Rm- двоичным числом 000, 001, 010 или 011 соответственно используемой адресации [BX+SJ], [BX+DJ], [BP+SJ] или [BP+DJ].

Пусть регистр сегмента данных содержит код 04В5Н. Если регистры ВХ и SJ содержат коды 1000Н и 1500Н соответственно, то машинная команда С60015 (MOV[BX+SJ],15Н) запомнит шестнадцатеричное число 15 в байте памяти, имеющим адрес 2500Н в сегменте данных. Исполнительный адрес вычисляется суммированием содержимого регистров BX и SJ (1000Н+1500Н). Этот адрес соответствует действительному физическому адресу памяти 07050Н(4В50Н+2500Н), устанавливаемому УС с шиной.

Базово-индексная адресация со смещением.

При такой адресации исполнительный адрес определяется сложением содержимого базового регистра (ВХ или ВР), индексного регистра (SJили DJ) и величины смещения.

Как отмечалось выше, величина смещения является частью команды и может быть 8-битовым числом со знаком или 16-битовым числом без знака. За исполнительный адрес принимается перемещаемый адрес текущего сегмента данных или стекового сегмента в зависимости от того, какой из регистров используется - ВХ или ВР соответственно. Прикладные программы могут содержать префиксные команды, благодаря которым можно переприсвоить исполнительные адреса относительно других сегментов памяти.

При базово-индексной адресации со смещением поле Mob представляет собой двоичное число 01 или 10 в зависимости от того, определяется ли смещение 8-ми или 16-битовыми числами. Поле Rm представляется точно так же, как и в случае базово-индексной адресации.

Рассмотрим пример, в котором регистр сегмента стека содержит число 04С5Н. Если регистр ВР или SJ содержит соответственно FF00Н и 0010Н, по машинной команде С642200АВ (Mov[BP+SJ+20Н], 0BH) шестнадцатеричное число 0В будет записано в ячейку FF30Н стекового сегмента. Смещением в этом случае является 8-битовое число со знаком (шестнадцатеричное число 20Н). Исполнительный адрес равен сумме величины смещения и содержимого регистров ВР и SJ(FF00H+0010H+20H) и соответствует действительному физическому адресу памяти 14В80Н(4С50Н+FF00Н+001Н+20Н), определяемому УС с шиной.

Адресации строк данных.

Строковые команды такие, как MOVS (переслать строку), CMPS (сравнить строку), LOPS(загрузить строку), CTOS (записать строку) и SCAS(скопировать строку), не используют ни один из рассмотренных выше типов   адресации для выборки своих операндов. Содержимое индексных регистров (SJ и/или DJ) используется для непосредственного указания требуемого участка памяти. Регистр SJ всегда используется как указатель первого байта или слова строки-источника.

Регистр DJ используется как указатель первого байта или слова строки-приемника. Команда LODS предлагает использование регистра SJ в качестве указателя источника. Команды STOS и SCAS используют регистр DJ в качестве указателя приемника. Команды MOVS и СMPS используют оба регистра SJ и DJ. Перемещаемый адрес, находящийся в регистре DJ, всегда относится к текущему дополнительному сегменту. Для команд со строковыми данными могут быть определены и префиксные команды, которые позволяют переприсвоить сегмент данных (для команд LODS, MOVS и CMPS) или дополнительный сегмент (для команды SCAS) другому сегменту, расположенному в любой части памяти. При использовании строковой команды увеличение или уменьшение содержимого регистров SJ или DJ определяется состоянием (нулевое или единичное) флага направления. В зависимости от того, с чем работает команда с байтами или со словами, содержимое индексных регистров увеличивается/уменьшается соответственно на 1 или 2.

Адресация порта ввода-вывода.

Этот тип адресации обеспечивает доступ к устройствам ввода-вывода (в/в), присоединённым в/в области памяти МП.  Область в/в МП I 8088 в дополнение к мегабайтовой памяти содержит ещё 64 КБ.

Эта область в/в не является сегментируемой и может выполняться как отдельно, так и вместе со всей памятью МП. В последнем случае уменьшается мегабайтовая память на 64 КБ, но обеспечивается дополнительная гибкость при программировании, так как все рассмотренные ранее типы адресации могут обеспечить доступ к этой области.

Каждый байт области в/в может быть назначен в качестве адреса однозначно определяемого порта в/в. Данные могут передаваться между накопителем и любым портом в/в, адресуемом внутри 64-килобайтовой области в/в. Регистр AL используется для передачи байта, а регистр АХ – для передачи слова. Для адресации порта в/в существуют команды IN (ввести из порта) и OUT (вывести в порт). Если номер порта находится в пределах 0-255 (десятичных чисел), он может быть определён частью машинной команды; если же номер порта превышает 255, то для его хранения используют регистр DX.


 

А также другие работы, которые могут Вас заинтересовать

22922. Поняття фундаментальної (базисної) системи розв’язків 55.5 KB
  Як показано вище множина M всіх розв’язків однорідної системи лінійних рівнянь утворює підпростір. Фундаментальною базисною системою розв’язків однорідної системи лінійних рівнянь називається базис підпростору всіх її розв’язків. Теорема про фундаментальну систему розв’язків.
22923. Теорема про розв’язки неоднорідної системи лінійних рівнянь 43 KB
  Теорема про розв’язки неоднорідної системи лінійних рівнянь. Нехай дана сумісна неоднорідна система лінійних рівнянь 3 L множина всіх її розв’язків а деякий частковий розв’язок M множина всіх розв’язків відповідної однорідної системи 4. Нехай a=γ1γ2γn і припустимо що b=λ1λ2λn довільний розв’язок системи 3 тобто b є L.
22924. ЛЕМА ПРО ДВІ СИСТЕМИ 37.5 KB
  bk – дві системи векторів кожен вектор першої системи лінійно визначається через другу систему. Якщо m k то перша система лінійно залежна. Нехай а1 а2 аm і b1 b2 bk – дві системи векторів кожен вектор першої системи лінійно виражається через другу систему. Якщо перша система лінійно незалежна то m≤k.
22925. Поняття базису 25.5 KB
  aik лінійно незалежна; Всі вектори системи a1 a2 am лінійно виражаються через ai1ai2. Базисом простору Rn називається система векторів a1 a2 an є Rn така що система a1 a2 an лінійно незалежна; Кожний вектор простору Rn лінійно виражається через a1 a2 an. Звідси α1= α2==αn=0 лінійна коомбінація тривіальна і система лінійно незалежна. Будьякий вектор простору лінійно виражається через e1e2en .
22926. Властивості базисів 33.5 KB
  Оскільки при m n система з m векторів лінійно залежна то m≤n. Якщо m n то за означенням базису всі вектори простору а тому і вектори системи e1e2en лінійно виражаються через базис a1 a2 am .Тоді за лемою про дві системи вектори e1e2en лінійно залежні. Отже В просторі Rn будьяка лінійно незалежна система з n векторів утворює базис простору.
22927. Поняття рангу 47.5 KB
  В довільній системі векторів a1a2am візьмемо всі лінійно незалежні підсистеми. Число векторів в цій фіксованій підсистемі будемо називати рангом системи векторів a1 a2 am . Таким чином рангом системи векторів називається максимальна кількість лінійно незалежних векторів в системі. Зрозуміло що ранг лінійно незалежної системи дорівнює числу всіх векторів в системі.
22928. Поняття рангу матриці 28 KB
  Ранг системи векторів a1 a2 am називається горизонтальним рангом матриці або рангом матриці за рядками і позначається . Стовпчики матриці A можна розглядати як m вимірні вектори b1 b2bn з дійсними координатами елементи простору Rm. Ранг системи векторів b1 b2bn називається вертикальним рангом матриці A або рангом матриці A за стовпчиками і позначається rbA.
22929. Поняття базисного мінору 15.5 KB
  Припустимо Поняття базисного мінору. Припустимо Δr деякий мінор порядку r матриці A r≤mr≤n. Мінор порядку r1 матриці називається оточуючим для мінора Δr якщо його матриця містить в собі матрицю мінору Δr .
22930. Існування базисного мінора 21 KB
  Для мінора Δ1 складаються всі можливі оточуючі мінори. Для цього послідовно до мінора Δ1 дописуються всі можливі рядки і всі можливі стовпчики. Якщо всі оточуючі мінори дорівнюють нулю то за означенням мінор Δ1 базисний і процес закінчується . Для мінора Δ2 складаються всі можливі оточуючі мінори послідовно дописуючи всі можливі рядки і стовпчики.