p align="left">3) Прямая адресация - в этом случае в адресной части команды указывается адрес ячейки памяти Иа , при этом Аи = Ак. Этот способ наиболее часто использовался в ЭВМ первого и второго поколения. Недостаток - с ростом объёма памяти пишутся длинные команды mov al,[10abf002h] 4) Регистровая адресация. При регистровой адресации в адресной части указывается адрес регистра хранящего операнду - наиболее экономичный способ адресации. При регистровой адресации длинна адресной части получается коротко т.к. номер регистра является его адресом, занимает длину пол байта в случае sub cx,bx. При регистровой адресации благодаря короткой длине команд экономится память при размещении программы в ОП, кроме того такие команды уменьшают число обращений к ОП, что повышает быстродействие. 5) Косвенная адресация. В этом случае в команде указывается не адрес операнда, а адрес регистра или ячейки памяти содержащий адрес операнда. Не адресация операнды, а адресация памяти. Косвенная адресация предполагает как минимум 2 обращения к ОП , если адрес операнда хранится в ОП. Допускается использование многоступенчатой косвенной адресации. В этом случае в команде указывается адрес первой ячейки и кратность адресации, а операнд располагается в последней адресной ячейке. В современных ЭВМ допускается 68 кратная адресация, но как правило косвенная адресация однократна. В малых и микро ЭВМ с короткой длинной длиной машинного слова, косвенная адресация позволяет обойти проблемы возникающие при адресации ячеек памяти, адреса которых имеют большую длину. В этом случае адрес ячейки памяти записывается в регистр. В команде указываться адрес регистра хранящего адрес операнда. add cz,[bx] или mov eax,[ecx] На наличие косвенной адресации в команде может указываться либо код операции команды, либо специальный бит отводимый в коде команды для указания на способ адресации. Если этот бит 1 - адресация косвенная, иначе нет. 26. Относительная и индексная адресация В этом случае адрес операнда задается относительно некоторого базового адреса (Аб). Для хранения Аб выделяется специал. регистр, который называется базовым регистром. Это может быть один из РОН. Будем в дальнейшем обозначать такой регистр В, а его содержимое (В); D-смещение. При относительной адресации в адресной части команды указывается номер базового регистра и смещение: Принцип относительной адресации поясняется схемой: Схема, поясняющая формирование Аи, показана на рис.: При реализации оптимальной адресации процессор по номеру базового регистра В, содержащегося в команде находит в РОН базовый регистр передает его содержимое на сумматор СМ, куда поступает также D. На выходе сумматора формируется исполнительный адрес Аи. Выполнение операции сложения требует определенных затрат времени, поэтому в некоторых случаях для повышения быстродействия формирование Аи осуществляется путем совмещения базового адреса В и смещения D. В этом случае младшие биты В должны содержать нули. Количество нулевых бит должно быть равно длине смещения. Схема формирования Аи имеет вид: Одно из основных достоинств относительной адресации возможность перемещения программы в ОП. Для этого достаточно изменить содержимое базового регистра. При использовании этой адресации в ассемблерных программах адрес операнда представляется в виде записи регистр + смещение, который помещается в []. Sub AX,[EBX+8] Индексная адресация. Используется при обработке массивов и организации циклов. Массив - упорядоченная совокупность элементов одинакового типа. Различные элементы массива имеют одинаковую длину и располагаются последовательно в ОП. Положение элементов внутри массива задается с помощью индексов. Для хранения индекса при индексной адресации среди РОН выделяется индексный регистр. Значение Аи=(В)+(Х)+Р, где Х - индексный регистр, (Х) - его содержимое. Схема формирования Аи приведена на рис.: При выполнении команды по номерам базового и индексного регистров, содержащимся в команде, процессор обращается к соответствующим регистрам, извлекает их содержимое и передает на сумматор, куда поступает также смещение D. На выходе сумматора формируется Аи элемента массива. При индексной адресации одна и та же команда без изменения отдельных ее частей может многократно выполнятся в цикле. При этом автоматически происходит изменение содержимого индексного регистра Х путем увеличения автоинкримента на 1, либо наоборот при каждом прохождении цикла. В ассемблерных командах имя Х указывается в [] : MOV AX,[EBХ][EDX]. В современных 32 битных микропроцессорах допускается масштабирование Х, если операнды являются 32-битовыми. Но заключаются в умножении содержимого Х на значения 2, 4, 8. Такой прием удобен при организации обработки элементов массива, имеющих длину 2, 4, 8 байт. В этом случае ассемблерная команда: MOV AX,[EBХ][EDX*8], где [EDX*8] индексный регистр. 28. Стековая адресация Используется при работе со стековой памятью и представляет собой один из безадресных (подразумеваемых) способов адресации. Это связано с тем, что в стековой памяти запись и чтение информации осуществляется через одну и ту же ячейку памяти. Называемую вершиной стека. Этот процесс иллюстрируется следующей схемой: При работе со стековой памятью обычно используют указатель вершины стека, в котором хранится адрес последней, заполненной стековой памятью ячейки. При записи/чтении из стека содержимое указателя стека (УС) изменяется автоматически. При записи увеличивается, при чтении уменьшается, поэтому отпадает необходимость в командах указывать адреса ячеек стековой памяти. В командах, использующих стековую память указываются только номера регистров, либо номера ячеек ОП, в которых хранятся операнды, используемые в операциях со стековой памятью. Операции со стековой памятью широко используются в современных ЭВМ для организации работы с подпрограммами. 29. Алгоритм работы процессора. Рабочий цикл процессора 1.вычисление адреса ком-ды 2.выборка ком-ды 3.декодирование ком-ды 4.вычисление адресов операндов 5.выборка операндов 6.исполнение операции 7.запись результата Для хранения адреса ком-ды используется содержимое указателя ком-ды IP(счетчик ком-д). При выполнении текущей ком-ды, адрес которой хранится в программном счетчике ПС, процессор определяет длину этой ком-ды в байтах и прибавляет к содержимому ПС, таким образом, уже на этапе выполнения данной ком-ды процессор формирует адрес следующей ком-ды. Такой порядок вычисления адреса ком-ды имеет место при выполнении программы в естественном порядке следования ком-д. При наличии в программе ком-д переходов в ПС загружается адрес перехода, содержащийся в этих ком-дах. Выборка осуществляется контроллером шинного интерфейса по адресу, хранящемуся в ПС. Выбираемую ком-ду контроллер помещает в очередь ком-д. В современных процессорах осуществляется не поком-дная выборка, а выборка ком-д в виде блока длиной в 16 байт, который может содержать более одной ком-ды. Такая выборка называется опережающей. Блоки из ОП выбираются выровненными, то есть их младший байт имеет адрес, содержащий нули в четырех младших битах. Опережающая выборка ком-д сочетается с опережающим декодированием. Декодирование ком-д делится на первичное и вторичное. При первичном декодировании определяется тип ком-ды и ее адрес. Знание типа ком-ды позволяет упростить алгоритм обработки ком-д, так как ком-ды одного типа выполняются одинаковым образом. Это позволяет уменьшить длину адресного кода. Вторичное декодирование осуществляется после вычисления адресов операндов и их выборки. Производится только для адресных ком-д и зависит от типа адресации операндов в ком-де. Первым вычисляется адрес операнда-источника, то есть такого операнда, который не изменяет своего значения в процессе выполнения ком-ды. Вторым вычисляется адрес операнда-приемника, то есть операнда, изменяющего свое значение и по адресу которого располагается результат выполнения операции. Процесс вычисления адресов операндов сочетается с выборкой, то есть после вычисления адреса операнда-источника, затем он выбирается из ОП, а потом вычисляется адрес приемника. На этапе вычисления адресов операндов используется содержимое базовых, индексных и регистров смещения: Aи=(B)+(I)+D, где D-смещение, с использованием сумматора контроллера шинного интерфейса. Вычисленный адрес помещается в регистр адреса РА. В случае безадресных ком-д выборка не производится. Эти ком-ды выполняются сразу же после первичного декодирования. В случае ком-д пересылки выборка операнда-приемника заменяется операцией записи операнда-источника по адресу операнда-приемника. По отношению к интерфейсу процессора выборка операндов сводится к последовательности операций: ввод - пауза - вывод. Пауза необходима для выполнения операций, предписываемой ком-дой. Исполнение операции осуществляется в зависимости от типа операции, определяемой ком-дой. В арифметико-логических операциях УУ процессора вырабатывает последовательность сигналов для АЛУ. Операнды подключаются к АЛУ, результат записывается по адресу операнда-приемника. В ком-де безусловного перехода адрес перехода, содержащийся в ком-де, загружается в ПС. В ком-дах условного перехода предварительно перед загрузкой адреса, в ПС анализируется условие. Если оно не выполняется, содержимое ПС сохраняется, если выполняется - в ПС загружается адрес перехода. Ком-ды управления являются безадресными и выполняются после первичного декодирования. Действия этих ком-д сводятся к изменению внутренних регистров процессора, содержащих управляющую информацию. Ком-ды ввода/вывода обеспечивают обмен информацией между процессором и внешними ПУ. Этот процесс аналогичен операции пересылки информации, поэтому для его реализации используются ком-ды пересылки, в которых в качестве операндов источника и приемника используются регистры портов ввода/вывода и ПУ. Этим регистрам присваиваются определенные адреса из адресного пространства ЭВМ. 30. Программная модель процессора (регистры общего назначения и сегментные регистры) Набор программно доступных регистров, имеющихся в составе процессора, определяет его программную или регистровую модель. Эти регистры определяют те ресурсы, которые предоставляются пользователю при программировании процессора. В разработке программных моделей процессора существуют 2 подхода: В первом подходе все регистры считаются универсальными, то есть могут участвовать в одних и тех же операциях. Во втором подходе, характерном для МП Intel, регистры являются специализированными, то есть могут участвовать в определенных операциях, в которых за ними закрепляются специальные функции. В программную модель 32-битовых МП входит 31 регистр, которые делятся на 16 регистров прикладного программиста (пользовательские регистры) и 15 системных регистров. Основные пользовательские регистры: Они делятся на 8 регистров РОН, 6 сегментных регистров, на ПС-регистр и регистр флагов. РОН имеет длину 32 бита: (см. рис) Первые 4 РОН допускают адресацию двойных слов так называемые расширенные регистры EAX, EBX, EDX, ECX (32 бита). AX, BX, CX, DX (16 бит). Допускается адресация только младшей половины регистров (биты 0 - 15), а 16 - 31 биты не допускают адресации. В младшей половине регистров допускается адресация старшего и младшего байтов: AH BH DH CH (биты 8 - 15) AL BL DL CL (биты 0 - 7) Такая адресация первых 4 РОН позволяет легко оперировать при программировании на ассемблере байтами, словами и двойными словами. Все РОН могут использоваться в различных операциях, но существуют операции, в которых эти регистры выполняют специальные функции. Отсюда происходит и название регистров: EAX/ AX/ AL - регистр-аккумулятор. Используется в арифметических и логических операциях, операциях ввода/вывода и др. в операциях деления и умножения в этих регистрах хранятся делимое и множимое, в него же помещается результат. Причем используется подразумеваемая адресация. EBX/ BX/ BL - базовый регистр, используется для хранения базового адреса при относительной адресации операндов. EDX/ DX/ DL - регистр данных, используется для хранения данных в арифметических и логических операциях, операциях пересылки и пр. В операциях ввода/вывода с использованием портов в этом регистре хранится адрес порта ввода/вывода. ECX/ CX/ CL - регистр-счетчик циклических операций над цепочками бит, байт, слов и двойных слов. ESP/ SP - используется в стековых операциях. Имя этого регистра неявно полагается в операциях PUSH и POP, применяется для хранения адреса вершины стека в данном сегменте памяти. EBP/ BP - указатель базы, используется для указания базового адреса при строковых операциях. ESI/ SI - индекс источника. EDI/ DI - индекс приемника. оба эти регистра используются для хранения индексов при выполнении цепочных операций.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
|