Методы адресации
Определение содержания понятий "исполнительный" и "адресный код". Распространенность различных видов адресации. Способы адресации в командах управления потоком команд. Возможности микропроцессоров по адресации. Изучение методов адресации операндов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 04.01.2023 |
Размер файла | 512,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство по развитию информационных технологии и коммуникации Республики Узбекистан
Ташкентский Университет Информационных Технологий им. Мухаммада Аль-Хорезми
Факультет: «Профессиональное образование в сфере ИКТ»
САМОСТОЯТЕЛЬНАЯ РАБОТА ПО ПРЕДМЕТУ
«ОРГАНИЗАЦИЯ КОМПЬЮТЕРА»
На тему: «Методы адресации»
ВЫПОЛНИЛА: Уч-ся Белая А.М Группа: 065-20 SKAFr
(5350600 - «Информационно-библиотечная деятельность»)
ПРОВЕРИЛА: Старший преподаватель
кафедры «Компьютерные системы» КИМ Е.В.
Ташкент-2022
Содержание
адресация код команда управление
Введение
1. Методы адресации
1.1 Распространенность различных видов адресации
1.2 Способы адресации в командах управления потоком команд
2. Возможности микропроцессоров по адресации
3. Методы адресации операндов
Заключение
Список использованных источников
Введение
Интернет в целом и, в частности, Всемирная Паутина (World Wide Web) имеют стройную систему адресации, обеспечивающую точную идентификацию каждого входящего в Сеть узла путем присвоения ему оригинального адреса, имеющей числовой вид. Подобный код, называется IP-адресом, выглядит как 195.218.218.38 или 193.124.148.65, что позволяет обозначить все параметры, начиная от страны и заканчивая персональным компьютером каждого пользователя. Однако большую известность имеет DNS (Domain Name System - система доменных имен). Ее задача - обеспечить уникальность каждого адреса в Сети, без необходимости запоминания чисел. Именно сервер DNS производит преобразование символьных/буквенных адресов в числовые. Система образования доменных имен также логична и проста. Адрес любого web-сервера начинается с аббревиатуры http, обозначающей вид протокола передаваемых данных, в данном случае это HyperText Transmission Protocol (Протокол передачи гипертекста). Далее следуют двоеточие, две косые черты и латинские буквы www, после которых ставится точка. Затем идет конкретный адрес, содержащий название учреждения, персоны или аббревиатуру и, через точку, - указание на организационную или географическую принадлежность объекта. В течении 90-х годов такая система имен оставалась неизменной. Но к началу 20 века гигантские темпы развития Интернета привели к тому, что адресное пространство в рамках описанной системы было практически исчерпано. Особо "тесно" стало в доменах.com,.net и.org, в которых была разрешена регистрация не только американских, но любых других фирменных или персональных сайтов представителей любой страны мира. Система доменных имен, однако, являет лишь основу системы адресации. Каждый размещенный в Интернет документ имеет собственный адрес, обозначаемый как URL (Uniform Resource Locator) - единый указатель ресурса. URL, помимо указания доменного имени, включает также и указание пути к конкретной странице. Сайты, в большинстве своем, имеют весьма разветвленную иерархическую структуру, каркас которой составляют многочисленные директории, разделяемые косыми чертами - "/". Следует помнить, что при вводе адреса вручную ошибка даже в одном символе критична. По этой причине не рекомендуется переносить (записывать) сложные адреса на бумаге и затем вводить их вручную с клавиатуры - вероятность ошибки в этом случае очень велика. При необходимости сохранить сложный адрес имеет смысл произвести его копирование непосредственно из адресной строки в текстовой файл, а при необходимости обращения к документу - произвести обратный процесс: копирование из текстового файла в адресную строку программы, обеспечивающей работу с Интернет.
1. Методы адресации
Вопрос о том, каким образом в адресном поле команды может быть указано местоположение операндов, считается одним из центральных при разработке архитектуры ВМ. С точки зрения сокращения аппаратурных затрат очевидно стремление разработчиков уменьшить длину адресного поля при сохранении возможностей доступа ко всему адресному пространству. С другой стороны, способ задания адресов должен способствовать максимальному сближению конструктов языков программирования высокого уровня и машинных команд. Все это привело к тому, что в архитектуре системы команд любой ВМ предусмотрены различные способы адресации операндов.
Приступая к рассмотрению способов адресации, вначале определим понятия «исполнительный» и «адресный код».
Исполнительным адресом операнда (Аисп) называется двоичный код номера ячейки памяти, служащей источником или приемником операнда. Этот код подается на адресные входы запоминающего устройства (ЗУ), и по нему происходит фактическое обращение к указанной ячейке. Если операнд хранится не в основной памяти, а в регистре процессора, его исполнительным адресом будет номер регистра.
Адресный код команды (Ак) -- это двоичный код в адресном поле команды, из которого необходимо сформировать исполнительный адрес операнда.
В современных ВМ исполнительный адрес и адресный код, как правило, не совпадают, и для доступа к данным требуется соответствующее преобразование. Способ адресации -- это способ формирования исполнительного адреса операнда по адресному коду команды. Способ адресации существенно влияет на параметры процесса обработки информации. Одни способы позволяют увеличить емкость адресуемой памяти без удлинения команды, но снижают скорость выполнения операции, другие -- ускоряют операции над массивами данных, третьи -- упрощают работу с подпрограммами и т. д. В сегодняшних ВМ обычно имеется возможность приложения нескольких различных способов адресации операндов к одной и той же операции.
Чтобы устройство управления вычислительной машины могло определить, какой именно способ адресации принят в данной команде, в разных ВМ используются различные приемы. Часто разным способам адресации соответствуют и разные коды операции. Другой подход -- это добавление в состав команды специального поля способа адресации, содержимое которого определяет, какой из способов адресации должен быть применен. Иногда в команде имеется нескольких полей -- по одному на каждый адрес. Отметим, что возможен также вариант, когда в команде вообще отсутствует адресная информация, то есть имеет место неявная адресация. При неявной адресации адресного поля либо просто нет, либо оно содержит не все необходимые адреса -- отсутствующий адрес подразумевается кодом операции. Так, при исключении из команды адреса результата подразумевается, что результат помещается на место второго операнда. Неявная адресация применяется достаточно широко, поскольку позволяет сократить длину команды.
Выбор способов адресации является одним из важнейших вопросов разработки системы команд и всей ВМ в целом, при этом существенное значение имеет не только удобство программирования, но и эффективность способа.
В настоящее время используются различные виды адресации, наиболее распространенные из которых рассматриваются ниже.
Непосредственная адресация. При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд (рис. 10.1). Этот способ может применяться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.
Рис. 10.1 Непосредственная адресация
Когда операндом является число, оно обычно представляется в дополнительном коде. При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд размещается в младшей части регистра, а оставшиеся свободными позиции заполняются значением знакового бита операнда.
Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосредственного операнда ограничен длиной адресного поля команды, которое в большинстве случаев меньше длины машинного слова
В 50-60% команд с непосредственной адресацией длина операнда не превышает 8 бит, а в 75-80% -- 16 бит. Таким образом, в подавляющем числе случаев шестнадцати разрядов вполне достаточно, хотя для вычисления адресов могут потребоваться и более длинные константы. Наиболее интенсивно данный вид адресации используется в арифметических операциях и командах сравнения. В то же время загрузка констант в большинстве программ, очевидно, не такая частая операция.
Непосредственная адресация сокращает время выполнения команды, так как не требуется обращение к памяти за операндом. Кроме того, экономится память, поскольку отпадает необходимость в ячейке для хранения операнда.
Прямая адресация. При прямой или абсолютной адресации (ПА) адресный код прямо указывает номер ячейки памяти, к которой производится обращение (рис. 10.2), то есть адресный код совпадает с исполнительным адресом.
Рис. 10.2 Прямая адресация
При всей простоте использования способ имеет существенный недостаток -- ограниченный размер адресного пространства, так как для адресации к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений (во всяком случае, такое изменение не рекомендуется). Это ограничивает возможности по произвольному размещению программы в памяти.
Косвенная адресация. Одним из путей преодоления проблем, свойственных прямой адресации, может служить прием, когда с помощью ограниченного адресного поля команды указывается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда (рис. 10.3). Этот способ известен как косвенная адресация (КА). Запись (Ак) означает содержимое ячейки, адрес которой указан в скобках.
При косвенной адресации содержимое адресного поля команды остается неизменным, в то время как косвенный адрес в процессе выполнения программы можно изменять. Это позволяет проводить вычисления, когда адреса операндов заранее неизвестны и появляются лишь в процессе решения задачи. Дополнительно такой прием упрощает обработку массивов и списков, а также передачу параметров подпрограммам.
Рис. 10.3 Косвенная адресация
Недостатком косвенной адресации является необходимость в двухкратном обращении к памяти: сначала для извлечения адреса операнда, а затем для обращения к операнду. Сверх того задействуется лишняя ячейка памяти для хранения исполнительного адреса операнда.
В качестве варианта косвенной адресации, правда, достаточно редко используемого, можно упомянуть многоуровневую или каскадную косвенную адресацию, когда к исполнительному адресу ведет цепочка косвенных адресов. В этом случае один из битов в каждом адресе служит признаком косвенной адресации. Состояние бита указывает, является ли содержимое ячейки очередным адресом в цепочке адресов или это уже исполнительный адрес операнда. Особых преимуществ у такого подхода нет, но в некоторых специфических ситуациях он оказывается весьма удобным, например при обработке многомерных массивов. В то же время очевиден и его недостаток -- для доступа к операнду требуется три и более обращений к памяти.
Регистровая адресация. Регистровая адресация (РА) напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора (рис. 10.4). Идентификатор регистра в дальнейшем будем обозначать буквой R. Обычно размер адресного поля в данном случае составляет три или четыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения.
Двумя основными преимуществами регистровой адресации являются: короткое адресное поле в команде и исключение обращений к памяти.
Рис. 10.4 Регистровая адресация
К сожалению, возможности по использованию регистровой адресации ограничены малым числом РОН в составе процессора.
Косвенная регистровая адресация. Косвенная регистровая адресация (КРА) представляет собой косвенную адресацию, где исполнительный адрес операнда хранится не в ячейке основной памяти, а в регистре процессора. Соответственно, адресное поле команды указывает не на ячейку памяти, а на регистр (рис. 10.5).
Рис. 10.5 Косвенная регистровая адресация
Достоинства и ограничения косвенной регистровой адресации те же, что и у обычной косвенной адресации, но благодаря тому, что косвенный адрес хранится не в памяти, а в регистре, для доступа к операнду требуется на одно обращение к памяти меньше.
Адресация со смещением. При адресации со смещением исполнительный адрес формируется в результате суммирования содержимого адресного поля команды с содержимым одного или нескольких регистров процессора (рис. 10.6).
Адресация со смещением предполагает, что адресная часть команды включает в себя как минимум одно поле (АК). В нем содержится константа, смысл которой в разных вариантах адресации со смещением может меняться. Константа может представлять собой некий базовый адрес, к которому добавляется хранящееся в регистре смещение. Допустим и прямо противоположный подход: базовый адрес находится в регистре процессора, а в поле АК указывается смещение относительно этого адреса. В некоторых процессорах для реализации определенных вариантов адресации со смещением предусмотрены специальные регистры, например базовый или индексный. Использование таких регистров предполагается по умолчанию,
Рис. 10.6 Адресация со смещением
поэтому адресная часть команды содержит только поле АК. Если же составляющая адреса может располагаться в произвольном регистре общего назначения, то для указания конкретного регистра в команду включается дополнительное поле R (при составлении адреса более чем из двух составляющих в команде будет несколько таких полей). Еще одно поле R может появиться в командах, где смещение перед вычислением исполнительного адреса умножается на масштабный коэффициент. Такой коэффициент заносится в один из РОН, на который и указывает это дополнительное поле. В общем случае адресация со смещением подразумевает наличие двух адресных полей: АК и R.
В рамках адресации со смещением имеется еще один вариант, при котором исполнительный адрес вычисляется не суммированием, а конкатенацией (присоединением) составляющих адреса. Здесь одна составляющая представляет собой старшую часть исполнительного адреса, а вторая -- младшую.
Ниже рассматриваются основные способы адресации со смещением, каждый из которых, впрочем, имеет собственное название.
Относительная адресация. При относительной адресации (ОА) для получения исполнительного адреса операнда содержимое подполя АК команды складывается с содержимым счетчика команд. Таким образом, адресный код в команде представляет собой смещение относительно адреса текущей команды. Следует отметить, что в момент вычисления исполнительного адреса операнда в счетчике команд может уже быть сформирован адрес следующей команды, что нужно учитывать при выборе величины смещения. Обычно подполе АК трактуется как двоичное число в дополнительном коде.
Адресация относительно счетчика команд базируется на свойстве локальности, выражающемся в том, что большая часть обращений происходит к ячейкам, расположенным в непосредственной близости от выполняемой команды. Это позволяет сэкономить на длине адресной части команды, поскольку разрядность подполя АК может быть небольшой. Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти: независимо от текущего расположения программы в адресном пространстве взаимное положение команды и операнда остается неизменным, поэтому адресация операнда остается корректной.
Базовая регистровая адресация. В случае базовой регистровой адресации (БРА) регистр, называемый базовым, содержит полноразрядный адрес, а подполе АС -- смещение относительно этого адреса. Ссылка на базовый регистр может быть явной или неявной. В некоторых ВМ имеется специальный базовый регистр и его использование является неявным, то есть подполе R в команде отсутствует (рис. 10.7).
Рис. 10.7 Базовая регистровая адресация с базовым регистром
Более типичен случай, когда в роли базового регистра выступает один из регистров общего назначения (РОН), тогда его номер явно указывается в подполе R команды (рис. 10.8).
Базовую регистровую адресацию обычно используют для доступа к элементам массива, положение которого в памяти в процессе вычислений может меняться. В базовый регистр заносится начальный адрес массива, а адрес элемента массива указывается в подполе АС команды в виде смещения относительно начального адреса массива. Достоинство данного способа адресации в том, что смещение имеет меньшую длину, чем полный адрес, и это позволяет сократить длину адресного поля команды.
Рис. 10.8 Базовая регистровая адресация
Индексная адресация. При индексной адресации (ИА) подполе АC содержит адрес ячейки памяти, а регистр (указанный явно или неявно) -- смещение относительно этого адреса. Как видно, этот способ адресации похож на базовую регистровую адресацию. Поскольку при индексной адресации в поле АC находится полноразрядный адрес ячейки памяти, играющий роль базы, длина этого поля больше, чем при базовой регистровой адресации. Тем не менее вычисление исполнительного адреса операнда производится идентично (рис. 10.8, 10.9).
Рис. 10.8 Индексная адресация с индексным регистром
Рис. 10.9 Индексная адресация с использованием одного из РОН
Индексная адресация предоставляет удобный механизм для организации итеративных вычислений. Пусть, например, имеется массив чисел, расположенных в памяти последовательно, начиная с адреса N, и мы хотим увеличить на единицу все элементы данного массива. Для этого требуется извлечь каждое число из памяти, прибавить к нему 1 и вернуть обратно, а последовательность исполнительных адресов будет следующей: N, N+ 1, N+ 2 и т. д., вплоть до последней ячейки, занимаемой рассматриваемым массивом. Значение N берется из подполя АC команды, а в выбранный регистр, называемый индексным регистром, сначала заносится 0. После каждой операции содержимое индексного регистра увеличивается на 1.
Так как это довольно типичный случай, в большинстве ВМ увеличение или уменьшение содержимого индексного регистра до или после обращения к нему осуществляется автоматически как часть машинного цикла. Такой прием называется автоиндексированием. Если для индексной адресации используются специально выделенные регистры, автоиндексирование может производиться неявно и автоматически. При задействовании для хранения индексов регистров общего назначения необходимость операции автоиндексирования должна указываться в команде специальным битом.
Автоиндексирование с увеличением содержимого индексного регистра носит название автоинкрементной адресации и может быть описано следующим образом:
В первом варианте увеличение содержимого индексного регистра происходит после формирования исполнительного адреса, и этот способ называется постинкрементным автоиндексированием. Во втором случае сначала производится увеличение содержимого индексного регистра, и уже новое значение используется для формирования исполнительного адреса. Тогда говорят о преинкрементном автоиндексировании.
Здесь также возможны два варианта, отличающиеся последовательностью выполнения операций уменьшения содержимого индексного регистра и вычисления исполнительного адреса: постдекрементное автоиндексирование и предекрементное автоиндексирование.
Интересным и весьма полезным является еще один вариант индексной адресации -- индексная адресация с масштабированием и смещением: содержимое индексного регистра умножается на масштабный коэффициент и суммируется с АC. Масштабный коэффициент может принимать значения 1,2,4 или 8, для чего в адресной части команды выделяется дополнительное поле. Описанный способ адресации реализован, например, в микропроцессорах фирмы Intel.
Следует особо отметить, что система команд многих ВМ предоставляет возможность различным образом сочетать базовую и индексную адресации в качестве дополнительных способов адресации.
Страничная адресация. Страничная адресация (СТА) предполагает разбиение адресного пространства на страницы. Страница определяется своим начальным адресом, выступающим в качестве базы. Старшая часть этого адреса хранится в специальном регистре -- регистре адреса страницы (РАС). В адресном коде команды указывается смещение внутри страницы, рассматриваемое как младшая часть исполнительного адреса. Исполнительный адрес образуется конкатенацией (присоединением) АC к содержимому РАС, как показано на рис. 10.10. На рисунке символ || обозначает операцию конкатенации.
Рис. 10.10 Страничная адресация
Блочная адресация. Блочная адресация используется в командах, для которых единицей обработки служит блок данных, расположенных в последовательных ячейках памяти. Этот способ очень удобен при работе с внешними запоминающими устройствами и в операциях с векторами. Для описания блока обычно берется адрес ячейки, где хранится первый или последний элемент блока, и общее количество элементов блока, заданное числом байтов или ячеек. Вместо длины блока может использоваться специальный признак «конец блока», помещаемый за последним элементом блока.
Стековая адресация. Данный вид адресации был рассмотрен при описании стековой архитектуры системы команд.
1.1 Распространенность различных видов адресации
Частота использования различных способов адресации существенно зависит от типа АСК. Для машин со стековой архитектурой очевидно, что основным способом адресации является стековая адресация. Для ВМ с аккумуляторной АСК главные способы адресации -- это прямая и непосредственная.
Достаточно ясна и ситуация с RISC-архитектурой. Из самой идеи этого подхода вытекает, что преимущественный способ адресации здесь -- регистровая адресация.
Более сложным является вопрос о частоте использования различных видов адресации в регистровых ВМ. В рамках этой архитектуры существует множество машин с самыми разнообразными списками команд и различными сочетаниями способов адресации, в силу чего дать однозначный ответ относительно наиболее распространенных вариантов практически невозможно.
1.2 Способы адресации в командах управления потоком команд
Основными способами адресации в командах управления потоком команд являются прямая и относительная.
Для команд безусловного и условного перехода (ветвления) наиболее типична относительная адресация, когда в адресной части команды указывается смещение адреса точки перехода относительно текущей команды, то есть смещение относительно текущего содержимого счетчика команд. Использование данного способа адресации позволяет программе выполняться в любом месте памяти -- программы становятся перемещаемыми. Среди команд безусловного перехода доля относительной адресации составляет около 90%.
Для команд перехода чрезвычайно важно, насколько далеко адрес перехода отстоит от адреса команды перехода, иными словами, какова типичная величина смещения. Длина смещения в основном не превышает 8 бит, что соответствует смещению в пределах ±128 относительно команды ветвления. В подавляющем большинстве случаев переход идет в пределах 3-7 команд относительно команды перехода.
В среднем 75% переходов происходит в направлении увеличения адреса. Из переходов в сторону уменьшения адреса около 90% связаны с выполнением циклов.
2. Возможности микропроцессоров по адресации
Одной из важнейших архитектурных характеристик МП является перечень возможных способов обращения к памяти или видов адресации. Возможности МП по адресации существенны с двух точек зрения.
Во-первых, большой объем памяти требует большой длины адреса, так как n-разрядный адрес позволяет обращаться к памяти емкостью 2n слов. Типовые 8-разрядные слова МП дают возможность непосредственно обращаться только к 256 ячейкам памяти, что явно недостаточно. Если учесть, что обращение к памяти является наиболее часто встречающейся операцией, то очевидно, что эффективность использования МП во многом определяется способами адресации к памяти большого объема при малой разрядности МП.
Во-вторых, для удобства программирования желательно иметь простую систему формирования адресов данных при работе с массивами, таблицами и указателями. Рассмотрим способы решения этих проблем.
Если адресное поле в команде является ограниченным и недостаточным для непосредственного обращения к любой ячейке памяти, то память в таких случаях разбивают на страницы, где страницей считается 2n ячеек памяти.
Для согласования адресного поля команды малой разрядности с памятью большого объема (для решения “страничной” проблемы) в МП применяются различные виды адресации:
Прямая адресация к текущей странице. При такой адресации программный счетчик разбивается на два поля; старшие разряды указывают номер страницы, а младшие - адрес ячейки на странице. В адресном поле команды размещается адрес ячейки на странице, а адрес страницы должен быть установлен каким-то другим способом, например с помощью специальной команды.
Прямая адресация с использованием страничного регистра. В МП должен быть предусмотрен программно доступный страничный регистр, загружаемый специальной командой. Этот регистр добавляет к адресному полю команды несколько разрядов, необходимых для адресации ко всей памяти.
Прямая адресация с использованием двойных слов. Для увеличения длины адресного поля команды под адрес отводится дополнительное слово (а если нужно, то и два).
Адресация относительно программного счетчика. Адресное поле команды рассматривается как целое со знаком, которое складывается с содержимым программного счетчика для формирования исполнительного адреса. Такой способ относительной адресации создает плавающую страницу и упрощает перемещение программ в памяти.
Адресация относительно индексного регистра. Исполнительный адрес образуется суммированием содержимого индексного регистра и адресного поля команды, рассматриваемого как целое со знаком. Индексный регистр загружается специальными командами.
Косвенная адресация. При косвенной адресации в адресном поле команды указывается адрес на текущей странице, по которому хранится исполнительный адрес. В поле команды при этом требуется дополнительный разряд - признак косвенной адресации. Исполнительный адрес может храниться не в ячейке памяти, а в регистре общего назначения. В этом случае косвенная адресация называется регистровой.
3. Методы адресации операндов
Операнд - объект, над которым выполняется машинная команда.
Операнды ассемблера описываются выражениями с числовыми и текстовыми константами, метками и идентификаторами переменных с использованием знаков операций и некоторых зарезервированных слов.
Операнды могут комбинироваться с арифметическими, логическими, побитовыми и атрибутивными операторами для расчета некоторого значения или определения ячейки памяти, на которую будет воздействовать данная команда или директива.
Способы адресации операндов
Под способами адресации понимаются существующие способы задания адреса хранения операндов:
· операнд задается на микропрограммном уровне (операнд по умолчанию);
· операнд задается в самой команде (непосредственный операнд);
· операнд находится в одном из регистров (регистровый операнд);
· операнд располагается в памяти;
· операндом является порт ввода-вывода
· операндом является счетчик команд;
· операндом является запись;
· структурный операнд.
Операнд задается на микропрограммном уровне (операнд по умолчанию): в этом случае команда явно не содержит операнда, алгоритм выполнения команды использует некоторые объекты по умолчанию (регистры, признаки и т.д.).
mul ebx ; eax = eax*ebx, неявно использует регистр eax
Операнд задается в самой команде (непосредственный операнд): операнд является частью кода команды. Для хранения такого операнда в команде выделяется поле длиной до 32 бит. Непосредственный операнд может быть только вторым операндом (источником). Операнд-получатель может находиться либо в памяти, либо в регистре.
mov eax, 5 ; eax = 5;
add ebx, 2 ; ebx = ebx + 2;
Операнд находится в одном из регистров (регистровый операнд): в коде команды указываются именами регистров. В качестве регистров могут использоваться:
· 32-разрядные регистры ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ESP, EBP;
· 16-разрядные регистры АХ, ВХ, СХ, DX, SI, DI, SP, ВР;
· 8-разрядные регистры АН, AL, BH, BL, CH, CL, DH, DL;
· сегментные регистры CS, DS,,SS, ES, FS, GS.
add eax, ebx ; eах = eax + ebх dec esi ; esi = esi -- 1
Операнд располагается в памяти. Данный способ позволяет реализовать два основных вида адресации:
· прямую адресацию;
· косвенную адресацию.
Прямая адресация: эффективный адрес определяется непосредственно полем смещения машинной команды, которое может иметь размер 8, 16 или 32 бита.
mov eax, sum ; eax = sum
Ассемблер заменяет sum на соответствующий адрес, хранящийся в сегменте данных (по умолчанию адресуется регистром ds) и значение, хранящееся по адресу sum, помещает в регистр eax.
Косвенная адресация в свою очередь имеет следующие виды:
· косвенная базовая (регистровая) адресация;
· косвенная базовая (регистровая) адресация со смещением;
· косвенная индексная адресация;
· косвенная базовая индексная адресация.
Косвенная базовая (регистровая) адресация. При такой адресации эффективный адрес операнда может находиться в любом из регистров общего назначения, кроме sp/esp и bp/ebp (это специфические регистры для работы с сегментом стека). Синтаксически в команде этот режим адресации выражается заключением имени регистра в квадратные скобки [].
mov eax, [esi] ; eax = *esi; *esi значение по адресу esi
Данный способ адресации позволяет динамически назначить адрес операнда для некоторой машинной команды и применяется при организации циклических вычислений и при работе со структурами данных, массивами.
Косвенная базовая (регистровая) адресация со смещением предназначена для доступа к данным с известным смещением относительно некоторого базового адреса, используется для доступа к элементам структур, когда смещение элементов известно заранее, на стадии разработки программы, а базовый (начальный) адрес структуры должен вычисляться динамически, на стадии выполнения программы. Модификация содержимого базового регистра позволяет обратиться к одноименным элементам различных экземпляров однотипных структур данных.
mov eax, [esi+4] ; eax = *(esi+4)
Косвенная индексная адресация. Для формирования эффективного адреса используется один из регистров общего назначения, но обладает возможностью масштабирования содержимого индексного регистра.
mov eax, mas[esi*4]
Значение эффективного адреса второго операнда вычисляется выражением mas+(esi*4) и представляет собой смещение относительно начала сегмента данных.
Наличие возможности масштабирования существенно помогает в решении проблемы индексации при условии, что размер элементов массива постоянен и составляет 1, 2, 4 или 8 байт.
Данный вид адресации также может использоваться со смещением.
Косвенная базовая индексная адресация. Эффективный адрес формируется как сумма содержимого двух регистров общего назначения: базового и индексного. В качестве этих регистров могут применяться любые регистры общего назначения, при этом часто используется масштабирование содержимого индексного регистра.
mov eax, [esi][edx]
Эффективный адрес второго операнда формируется как esi+edx. Значение по этому адресу помещается в регистр eax.
В случае использования косвенной базовой индексной адресация со смещением эффективный адрес формируется как сумма трех составляющих: cодержимого базового регистра, cодержимого индексного регистра и значения поля смещения в команде.
Операндом является порт ввода-вывода.
Помимо адресного пространства оперативной памяти микропроцессор поддерживает адресное пространство ввода-вывода, которое используется для доступа к устройствам ввода-вывода. Объем адресного пространства ввода-вывода составляет 64 Кбайт. Для любого устройства компьютера в этом пространстве выделяются адреса. Конкретное значение адреса в пределах этого пространства называется портом ввода-вывода. Физически порту ввода-вывода соответствует аппаратный регистр (не путать с регистром микропроцессора), доступ к которому осуществляется с помощью специальных команд ассемблера in и out.
in al,60h ; ввести байт из порта 60h
Регистры, адресуемые с помощью порта ввода-вывода, могут иметь разрядность 8, 16 или 32 бит, но для конкретного порта разрядность регистра фиксирована. В качестве источника информации или получателя применяются регистры-аккумуляторы eax, ax, al. Выбор регистра определяется разрядностью порта. Номер порта может задаваться непосредственным операндом в командах in и out или значением в регистре dx. Последний способ позволяет динамически определить номер порта в программе.
mov dx,20h ; записать номер порта 20h в регистр dx
mov al,21h ; записать значение 21h в регистр al
out dx,al ; вывести значение 21h в порт 20h
Счетчик адреса - специфический вид операнда. Он обозначается знаком $. Специфика этого операнда в том, что когда транслятор ассемблера встречает в исходной программе этот символ, он подставляет вместо него текущее значение счетчика адреса (регистр EIP). Значение счетчика адреса представляет собой смещение текущей машинной команды относительно начала сегмента кода, адресуемого сегментным регистром CS. При обработке транслятором очередной команды ассемблера счетчик адреса увеличивается на длину сформированной машинной команды. Обработка директив ассемблера не влечет за собой изменения счетчика. В качестве примера использования в команде значения счетчика адреса можно привести следующий фрагмент:
jmp $+3 ;безусловный переход на команду mov
nop ; длина команды nop составляет 1 байт
mov al,1
При использовании подобного выражения для перехода нельзя забывать о длине самой команды, в которой это выражение используется, так как значение счетчика адреса соответствует смещению в сегменте кода данной, а не следующей за ней команды. В приведенном выше примере команда jmp занимает 2 байта. Длина этой и некоторых других команд может зависит от того, какие в ней используются операнды. Команда с регистровыми операндами будет короче команды, один из операндов которой расположен в памяти. В большинстве случаев эту информацию можно получить, зная формат машинной команды.
Приоритет |
Оператор |
|
1 |
length, size, width, mask, ( ), [ ], < > |
|
2 |
. |
|
3 |
: |
|
4 |
ptr, offset, seg, this |
|
5 |
high, low |
|
6 |
+, -- (унарные) |
|
7 |
*, /, mod, shl, shr |
|
8 |
+, -, (бинарные) |
|
9 |
eq, ne, lt, le, gt, ge |
|
10 |
not |
|
11 |
and |
|
12 |
or, xor |
|
13 |
short, type |
Структурные операнды используются для доступа к конкретному элементу сложного типа данных, называемого структурой.
Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи. Для доступа к битовому полю записи используется директива RECORD.
Операторы в языке ассемблера
Операнды являются элементарными компонентами, из которых формируется часть машинной команды, обозначающая объекты, над которыми выполняется операция. В более общем случае операнды могут входить как составные части в более сложные образования, называемые выражениями. Выражения представляют собой комбинации операндов и операторов, рассматриваемые как единое целое. Результатом вычисления выражения может быть адрес некоторой ячейки памяти или некоторое константное (абсолютное) значение.
Выполнение операторов ассемблера при вычислении выражений осуществляется в соответствии с их приоритетами. Операции с одинаковыми приоритетами выполняются последовательно слева направо. Изменение порядка выполнения возможно путем расстановки круглых скобок, которые имеют наивысший приоритет.
Характеристика основных операторов.
Арифметические операторы. К ним относятся унарные операторы + и --, бинарные + и --, операторы умножения *, целочисленного деления /, получения остатка от деления mod. Например,
size equ 48 ;размер массива в байтах
el equ 4 ;размер элемента
;вычисляется количество элементов
mov ecx, size / el ;оператор /
Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов. Например,
msk equ 10111011 ; константа
mov al, msk shr 3 ; al=00010111 /
Операторы сравнения (возвращают значение истина или ложь) предназначены для формирования логических выражений. Логическое значение истина соответствует логической единице, а ложь - логическому нулю. Логическая единица - значение бита равное 1, логический ноль - значение бита, равное 0.
size equ 30 ;размер таблицы
…
mov al, tab_size ge 50 ;al = 0
cmp al, 0 ;если size < 50, то
je m1 ;переход на m1
…
m1: …
Если значение size больше или равно 50, то результат в аl равен 1, в противном случае -- 0. Команда cmp сравнивает значение аl с нулем и устанавливает соответствующие флаги в EFLAGS. Команда je на основе анализа этих флагов передает или не передает управление на метку m1.
Назначение операторов сравнения приведено в таблице
Оператор |
Условие |
|
eq |
== |
|
ne |
!= |
|
lt |
< |
|
le |
<= |
|
gt |
> |
|
ge |
>= |
Логические операторы выполняют над выражениями побитовые операции. Выражения должны быть константными. Например,
L1 equ 10010011
…
mov al, L1
xor al, 01h ;al=10010010
Индексный оператор [ ]. Транслятор воспринимает наличие квадратных скобок как указание сложить значение выражения за [] со значением выражения, заключенным в скобки. Например,
mov eax, mas[esi] ;eax=*(mas+(esi))
Наличие индексного оператора указывает транслятору, что необходимо получить значение по вычисленному адресу.
Оператор переопределения типа ptr применяется для переопределения или уточнения типа метки или переменной, определяемых выражением. Тип может принимать одно из следующих значений.
Тип |
Пояснение |
Назначение |
|
byte |
1 байт |
переменная |
|
word |
2 байта |
переменная |
|
dword |
4 байта |
переменная |
|
qword |
8 байт |
переменная |
|
tword |
10 байт |
переменная |
|
near |
ближний указатель |
функция |
|
far |
дальний указатель |
функция |
Например,
str1 db «Привет», 0
…
lea esi, str1
cmp byte ptr[esi], 0 ; [esi]==0?
В примере для сравнения значения по адресу esi с константой необходимо явно указать, данные какого типа будут сравниваться.
Оператор переопределения сегмента: (двоеточие) вычисляет физический адрес относительно конкретно задаваемой сегментной составляющей, в качестве которой могут выступать:
· имя сегментного регистра,
· имя сегмента из соответствующей директивы SEGMENT
· имя группы.
Для выборки на выполнение очередной команды микропроцессор анализирует содержимое сегментного регистра CS, в котором содержится физический адрес начала сегмента кода. Для получения адреса конкретной команды микропроцессор складывает промасштабированное (умноженное на 16) значение сегментного регистра CS с содержимым регистра EIP. Запись CS:EIP содержит адрес текущей выполняемой команды. Аналогично обрабатываются операнды в машинных командах.
Оператор именования типа структуры. (точка) также заставляет транслятор производить определенные вычисления, если встречается в выражении.
Оператор получения сегментной составляющей адреса выражения seg возвращает физический адрес сегмента для выражения, в качестве которого могут выступать метка, переменная, имя сегмента, имя группы или некоторое символическое имя.
Оператор получения смещения выражения offset позволяет получить значение смещения выражения в байтах относительно начала того сегмента, в котором выражение определено. Например,
.data
str1 db «Привет»,0
.code
mov esi, offset str1
mov al, [esi] ; al = `П'
Оператор определения длины массива length возвращает число элементов, определенных операндом dup. Если операнд dup отсутствует, то оператор length возвращает значение 1.Например,
tabl dw 10 dup(?)
…
mov edx, length tabl ; edx=10
Оператор type возвращает число байтов, соответствующее определению указанной переменной:
fldb db ?
tabl dw 10 dup(?)
…
mov eax, type fldb ;eax = 1
mov eax, type tabl ;eax = 2
Оператор size возвращает произведение длины length и типа type и используется при ссылках на переменную с операндом dup.
Для предыдущего примера
mov edx, size tabl ;edx = 20 байт
Оператор short -модификация атрибута near в команде jmp, если переход не превышает границы +127 и -128 байт. Например,
jmp short метка
В результате ассемблер сокращает машинный код операнда от двух до одного байта. Эта возможность оказывается полезной для коротких переходов вперед, так как в этом случае ассемблер не может сам определить расстояние до адреса перехода и резервирует два байта при отсутствии оператора short.
Оператор width возвращает размер в битах объекта типа RECORD или его поля.
Назад
Заключение
Что можно сказать о системах адресации для компьютеров этих семейств, тем не менее основные способы задания адресов и адресации операндов были рассмотрены и можно попытаться проанализировать, сравнить и привести примеры использования тех способов адресации, которые были описаны.
Для начала, рассмотрим самые простые способы адресации, такие как регистровая, прямая, непосредственная и короткого литерала. Про регистровую адресацию трудно написать больше, чем уже было написано. Естественно, что этот способ адресации поддерживается и на СМ1700 и 80386 процессором, как впрочем вообще всеми процессорами семейства 80х86 и многими другими процессорами, которые имеют регистровую память. Несмотря на простоту этого способа адресации, он достаточно часто используется для манипуляции регистрами, их очистки, модификации их содержимого. Регистровая память отличается очень большой скоростью, и поэтому большинство вычислений, особенно несложных программисты пытаются делать в этих регистрах. В них помещают начальные значения, производят вычисления, модификацию и как-то используют полученные результаты. Для всех этих действий естественным является применение именно регистрового способа адресации. Большим подспорьем регистровому способу адресации является режим непосредственной адресации. Конечно в основном он используется для загрузки в регистры начальных значений, заранее известных адресов, сравнения с константой и так далее. Но если копнуть чуть глубже, то этот способ адресации дает еще множество удобств
Прямая адресация это тоже достаточно простой, но очень часто используемый инструмент. Чаще всего используется для обращения к одиночным переменным, областям данных операционных систем и т.д. Реализован и в i386 процессоре и на СМ 1700, опять же через счетчик инструкций.
Более сложными, однако и более продуктивными являются косвенные способы адресации. Косвенно регистровый, косвенный со смещением, индексные режимы адресации реализованы в полной мере и на СМ 1700 и в ПЭВМ. Они дают наибольший эффект при обработке массивов, таблиц, различного рода списков. Для сравнения приведем таблицу аналогичных по смыслу инструкций СМ 1700 и процессора 80386.
Список использованных источников
1. Нешумова К.А. Электронные вычислительные машины и системы. М.: Высш.шк., 1989, 366 с.
2. Вычислительные машины, системы и сети /А.П. Пятибратов и др.;Под ред. А.П. Пятибратова. М.: Финансы и статистика,1991,400 с.
3. Каган Б.М. Электронные вычислительные машины и системы -
4. https://www.sinref.ru/razdel/02200informatika/03/89926.htm
5. https://ronl.org/samostoyatelnyye-raboty/informatika/870664/
6. https://studrb.ru/works/entry12644
7. «Микропроцессоры в радиотехнических системах» Ю. М. Казаринов.
8. Агальцов В.П. Информатика для экономистов: учебник / В. П. Агальцов, В. М. Титов.
9. Горюнов Микропроцессоры: учеб. пособие /А. Г. Гуров
10. Леонтьев В.П. Новейшая энциклопедия
Размещено на Allbest.ru
...Подобные документы
Изучение базовых команд ПК на базе МП i286 и их форматов. Изучение прямых способов адресации данных. Наработка практических навыков работы с командами. Разработка регистровой модели выполнения операций передачи данных. Программа реализации команд.
контрольная работа [42,2 K], добавлен 12.03.2011Краткий обзор процессоров фирмы intel. Основные характеристики i80286: режим реальной адресации, режим защиты, сопроцессор i80287, условия программирования i80287. Основные характеристики i80386: 32-битная архитектура, способы адресации.
курсовая работа [29,9 K], добавлен 23.06.2007Алгоритм обработки при работе с массивом, типизированным файлом и динамическим списком. Применение для массивов и типизированных файлов произвольной адресации элементов, для динамических списков - последовательной адресации. Блок-схема и текст программы.
реферат [63,5 K], добавлен 24.05.2013Возникновение и функции интернета. Системы адресации и протоколы передачи данных. Структура иерархической базы данных. Формирование базы данных учета сотрудников организации, создание таблиц с тремя видами запросов на выборку, конструктор отчетов.
контрольная работа [885,8 K], добавлен 10.11.2010Изучение архитектуры персонального компьютера на примере микропроцессора фирмы Intel. Регистры общего назначения. Оперативная память; форматы данных и команд. Команд пересылки с различными способами адресации операндов. Структура программы на Ассемблере.
курс лекций [506,4 K], добавлен 03.05.2014Архитектура ЭВМ - совокупность принципов организации аппаратно-программных средств, их основные характеристики, определяющие функциональные возможности ЭВМ при решении заданных задач. Формат команд обработки данных, методы прямой и косвенной адресации.
контрольная работа [772,4 K], добавлен 06.06.2012Разработка устройства управления процессора для выполнения команд сложения, вычитания и поразрядного логического "или", с использованием способов адресации операндов: регистр-регистр, регистр - непосредственно операнд, регистр - прямая адресация памяти.
курсовая работа [72,8 K], добавлен 21.11.2011Назначение, особенности, структура и функционирование различных моделей микроконтроллеров. Средства их отладки и программирования. Способы адресации и система команд. Набор периферийных устройств. Порты ввода/вывода. Модуль формирования ШИМ-сигналов.
курсовая работа [201,9 K], добавлен 25.12.2014Ассемблер как символический аналог машинного языка. Архитектура микропроцессора: организация памяти, способы адресации операндов, правила использования регистров. Текст программы. Этапы программирования на ассемблере, алгоритмы выполнения задач.
контрольная работа [515,1 K], добавлен 20.01.2016Порядок составления программ копирования строки символов в рядом расположенную область памяти в обратном порядке и напрямую. Определение адресов источника и получателя. Организация адресации операндов, строк и циклов посредством промежуточного регистра.
контрольная работа [20,6 K], добавлен 09.11.2010Организация центрального процессора. Подключение интерфейсных программируемых БИС. Методы адресации и примеры команд. Программирование таймера и контроллера прерываний. Программная модель микропроцессорной системы. Программирование на языке ассемблера.
реферат [82,6 K], добавлен 05.12.2010Комплексные характеристики возможностей микропроцессора, базовая структура системы. Понятие архитектуры микропроцессора. Классификации микропроцессоров по типу архитектуры. Особенности программного и микропрограммного управления, режимы адресации.
реферат [100,7 K], добавлен 20.09.2009Структурная и функциональная схема операционной части блока обработки команд. Совмещение регистрового и относительного с базированием и индексированием режимов адресации. Синтез самопроверяемой схемы встроенного контроля для комбинационной схемы.
контрольная работа [21,2 K], добавлен 02.03.2014Типы системной памяти. ОЗУ (оперативное запоминающее устройство), ПЗУ (постоянное запоминающее устройство), "энергонезависимая память" (CMOS). Процессор. Основные шины. Адресные данные. Совокупность всех возможных команд - система команд процессора.
контрольная работа [24,3 K], добавлен 30.03.2009Архитектура микроконтроллеров семейства Mega. Организация памяти. Способы адресации памяти данных. Энергонезависимая память данных. Таблица векторов прерываний. Счетчик команд и выполнение программы. Абсолютный вызов подпрограммы. Сторожевой таймер.
дипломная работа [213,9 K], добавлен 02.04.2009Выбор режимов адресации, посредством которых будет осуществлен доступ к данным. Этапы создания программы. Характеристика таблицы символов и полученного файла листинга. Анализ изменения состояния регистра IP при выполнении команд JMP, Jcc, LOOPx.
курсовая работа [4,9 M], добавлен 25.03.2012Интернет и его возможности. Распространенный и недорогой способ подключения к интернет. Схема передачи информации по протоколу TCP/IP. Характеристики адресов разного класса. Поисковые системы, способы поиска и скачивания информации в глобальной сети.
курсовая работа [245,6 K], добавлен 25.09.2013Общий вид вычислительной системы. Начальная последовательность действий. Элементы организации основных блоков ЭВМ. Архитектурная организация процессора ЭВМ. Организация систем адресации и команд ЭВМ. Система внешних устройств. Средства вывода информации.
курсовая работа [39,5 K], добавлен 28.01.2012Строение схемы микропроцессора: все устройства, необходимые для приема из памяти, хранения, и выполнение команд, заданных согласно варианту режима адресации. Описания языка Ассемблера и его функции. Основные функции макропроцессора, варианты построения.
курс лекций [44,1 K], добавлен 06.03.2009Создание и редактирование таблиц в Excel, выполнение сортировки и переименование ячеек. Работа формул массивов и определение адреса ячейки, расположенной на другом листе. Различия относительной и абсолютной адресации. Функции для работы с базой данных.
контрольная работа [786,1 K], добавлен 23.12.2010