МОСКОВСКИЙ ОРДЕНА ТРУДОВОГО КРАСНОГОЗНАМЕНИЭКОНОМИКО-СТАТИСТИЧЕСКИЙ ИНСТИТУТ КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ МАШИНКУРСОВАЯ РАБОТАна тему Сравнительный анализ различных системадресации, используемых в мини и микроЭВМ. Дата готовности работы Студент Козлов А.В. Руководитель работы Черняк Н.Г. Защищена 1994 г.Москва 1994 г. МОСКОВСКИЙ
ОРДЕНА ТРУДОВОГО КРАСНОГОЗНАМЕНИЭКОНОМИКО-СТАТИСТИЧЕСКИЙ ИНСТИТУТ КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ МАШИНЗАДАНИЕ НА КУРСОВУЮ РАБОТУгруппа ДП-101 курс 1Студент Козлов А.В. Тема Сравнительный анализ различных системадресации, используемых в минии микроЭВМ. Основные разделы курсовой работы 1. Введение. Отличия мини- и микроЭВМ.2.
Системы адресации, используемые в мини-ЭВМ. На примере СМ ЭВМ .3. Системы адресации, используемые в ПЭВМ. На примере конкретной ПЭВМ .4. Заключение. Сравнительный анализ систем адресации используемых в мини- и персональных ЭВМ.Рекомендуемаялитература 1. Малые ЭВМ высокой производительности. Архитектура и программирование.
Москва Радио и связь 1990.2. Д.Брамм, П.Брамм. Процессор 80386 и его программирование. Мир 3. Шагурин, В.Б. Бродин, Г.П. Мозговой. Описание и система команд. МП Малип 1992.Дата выдачизадания 1994 г.Срок представленияработы на кафедру 1994 г.Руководитель курсовой работы Черняк Н.Г.1. ОТЛИЧИЯМИНИ- И МИКРОЭВМ. В конце60-х годов начался серийный выпуск сравнительно небольших и дешевых мини-
ЭВМ. Ихпредназначали для предприятий и организаций, где установка высокопроизводительныхЭВМ была экономически невыгодной. В их задачу первоначально входила автоматизацияпрофессиональной работы в различных организациях, работа на предприятиях в качествепроблемноориентированных ЭВМ. В 1977-78 году был начат выпуск семейства малых ЭВМ СМ ЭВМ . Их часто называли управляющими вычислительными комплексами, так как оничаще всего использовались
в системах управления различного рода. Однако, СМ 3-ейочереди, разработанные в последние годы относятся уже к ЭВМ четвертого поколенияи имеют большую производительность, поэтому круг их применения резко расширился,и их активно используют в качестве автоматизированных рабочих мест, объединяют ввычислительные системы, и поручают им расчет экономических и статистических задач.С появлением больших интегральных схем связано развитие другого класса машин - микроЭВМ,и, как достижение
этого направления - появление мощных профессиональных ПЭВМ, которыеиспользуются на рабочих местах для автоматизации труда, несложных расчетов и различного рода проектирования. Основным отличием мини- от микроЭВМнесомненно является ориентация. Машины СМ ЭВМ выпускались как проблемно ориентированныеЭВМ и поддерживались большим количеством различных модулей определяющих их специализацию,в то время как
ПЭВМ - это универсальные ЭВМ, рассчитанные помимо применения в профессиональнойдеятельности еще и на применение в качестве обучающих и бытовых ЭВМ. По функциональнымвозможностям мини- и микроЭВМ имеющие примерно один и тот же уровень не отличаютсядруг от друга, как это должно быть для машин разного класса, т.е. учитывая что мини-ЭВМсчитается более мощной чем микроЭВМ, а в частности ПЭВМ. Для сравнения возьмем супермини-ЭВМСМ 1700 и современную персональную
ЭВМ на базе 32-разрядного процессора.СМ 1700 AMD 80386 D40MhzПроизводитель-ность, млн.оп. с 9.6Разрядность 32Емкость ОЗУМбайт 5-15 1-128 Все данные по процессору AMD386 взяты из документации наAli 386 MINI ISA System Board. Как видно с развитием элементной базы ПЭВМ, задуманныекак менее мощные, чем мини-ЭВМ персональные компьютеры обогнали их по производительности.
2. СИСТЕМЫАДРЕСАЦИИ ИСПОЛЬЗУЕМЫЕ В МИНИ-ЭВМ В этой главебудут рассмотрены способы адресации данных, используемые в мини-ЭВМ на примере СМ1700.Это первый представитель 32-разрядных ЭВМ семейства СМ. Вычислительный комплексСМ1700 представляет собой универсальную ЭВМ. Одна из основных целей его создания- это расширение виртуального адресного пространства по сравнению с 16-разряднойСМ4. Хотя некоторые инструкции вычислительного комплекса
СМ1700 имеют сходство синструкциями СМ4, СМ1700 представляет собой полностью новую архитектуру. Аппаратныесредства СМ1700 ориентированы на реализацию языков высокого уровня и системных программ,которые используются операционной системой и компилятором. Система команд СМ1700в настоящее время включает 304 инструкции и более 20 режимов адресации операндов.Все это дает возможность программисту составлять эффективные по объему и временивыполнения программы.
Какие же способы адресации предусмотрены в СМ1700? Мы рассмотримнесколько способов адресации, которые в общем можно поделить на регистровые, косвенные,индексные и специальные.2.1 Рассмотрим инструкцию MOVL R2,R3. Для СМЭВМ характерно, что приемником всегда является второй операнд
для двух- и третийдля трех-операндных инструкций. Поэтому инструкция MOVL R2,R3 пересылает содержимоерегистра R2 в регистр R3, а не наоборот, как было бы с аналогичной инструкциейMOV AX,BX из набора команд процессоров cемейства 8086 фирмы Intel. Приведем примериспользования этого способа адресации на примере инструкции
MOVL R2,R3. Ее машиннаязапись будет выглядеть, как D0 52 53, где D0 - код инструкции, а 52 и 53 - прямаяадресация, 2ой регистр и прямая адресация, 3ий регистр соответственно. Пусть содержимоерегистров до операции было R2 010R00001000Тогда послеони будут выглядеть так R2 010R3 010Как видноиз примера, содержимое регистра
R2 было скопировано в R3.2.2 КОСВЕННО-РЕГИСТРОВЫЙ РЕЖИМ В этом режимесодержимое регистра является адресом операнда. Мнемоника на ассемблере Rn , где Rn является регистром содержащим либо адрес операнда источника MOVL R2 ,R3 либо адрес операнда приемника MOVL R2, R3 . В качестве примера опять приведеминструкцию пересылки двойного слова
MOVL R2, R3 . Код операции останется тот же,а операнды будут представлены как 52 63, где 63 - это уже косвенная адресация сиспользованием 3го регистра. При том же содержимом регистров, что и в предыдущемпримере, будем иметь До операцииMOVL R2, R3 R2 010 R3 00001000 00001000 0200 R3 После R2 010 R3 00001000 00001000 010 После операциипересылки значение ячейки памяти, адрес которой содержался в R3 00001000 изменилсяс 0200 на 010.2.3
РЕЖИМ С АВТОУВЕЛИЧЕНИЕМ Специальнодля обработки массивов данных в CM1700 предусмотрена адресация с автоувуличением.В этом режиме содержимое выбранного регистра является адресом операнда, как и прикосвенно-регистровой адресации, однако после выполнения операции содержимое регистраувеличивается на N, в зависимости от типа операнда N 1, если операндомявляется байт,N 2, если операндомявляется слово,
N 4, если операндомявляется двойное слово,N 8, если операндомявляется учетверенное слово или слово с плавающей запятой,N 16, если операндом является целое слово длиной 128 разрядовили двойное слово с плавающей запятой. Рассмотримэтот режим адресации используя команду MOVL R0 , R2 . В памяти инструкция будетпредставлена как D0 60 82, где 60 - как уже говорилось косвенная адресация с регистромR0, а 82 - косвенная адресация
с использованием регистра R2 и автоувеличение. Восьмеркав последнем случае как раз и означает данный режим адресации.До операцииMOVL R0 , R2 R0 00001000 R2 00001050 00001000 0AC R3 00001050 0 R2 После R0 00001000 R2 00001054 lt Увеличилось на 4 00001000 0AC 00001050 0AC Как видно произошла пересылка числа из ячейки 00001000 в00001050 и значение регистра
R2 увеличилось на 4. Инструкция MOVL пересылает двойныеслова. Об этом говорит суффикс L - Long - длинное или двойное слово. ПоэтомуR2 увеличился на 4. Вообще предусмотрены операции работающие с байтами, словами,двойными словами и иногда с учетверенными словами и имеющие суффиксы B,W,L и Q соответственно. 2.4 РЕЖИМ С АВТОУМЕНЬШЕНИЕМ
Этот режимидентичен режиму с автоувеличением, однако здесь после выполнения операции следуетне увеличение, а уменьшение операнда по тем же правилам. Для примера рассмотримкоманду CLRB - R5 , которая в памяти будет выглядеть как 94 75. Здесь 94 - код операции,а 75 - значит использовать регистр R5 ?5 и произвести уменьшение после исполнения 7? .
До операцииCLRB - R5 R5 00001000 0FFF 01A 01000 01A R5 После R5 0FFF lt уменьшилось на 1 0FFF 01A R5 01000 0 lt 0 Изменения хорошо видны. Ячейка 00001000, на которую первоначальноуказывал регистр R5 очистилась CLRB - CLeaR Byte - очистить байт ,значение регистраR5 уменьшилось на 1 и теперь указывает на ячейку памяти расположенную перед ячейкой00001000, т.е.
0FFF.2.5 КОСВЕННЫЙ РЕЖИМ С АВТОУВЕЛИЧЕНИЕМ В этом режимесодержимое выбранного регистра является адресом адреса операнда, а после выполненияоперации производится увеличение содержимого этого регистра на 4, независимо отразмера операнда. Это определяется тем, что регистр содержит адрес адреса т.е.адрес ячейки, содержимое которой в свою очередь используется как адрес для получениядействительного операнда , а адрес всегда представляется как двойное слово. Для примеравозьмем операцию очистки байта, мнемоника
которой на ассемблере будет выглядетькак CLRB R5 . Символ зюха означает использование не просто режима с автоувеличением,а именно косвенного. Представление этой операции в памяти будет 94 95, где 94 -код операции, 95 - означает использование регистра R5 и косвенной адресации с автоувеличением цифра 9 .До операцииCLRB R5 R5 00001000 00001000 0AC R5 0AC 0A 00001000
После R5 00001004 lt увеличилось на 4 00001000 0AC 0AC 00 lt 0В результате выполнения этой команды содержимое ячейки0AC, адрес которой cодержался в ячейке 00001000, на которую указывал регистрR5 обнулилось, а значение регистра R5 увеличилось на 4. 2.6 РЕЖИМ СМЕЩЕНИЯ В этом режимесодержимое выбранного регистра складывается с содержимым байта, слова или двойногослова, следующего непосредственно за спецификатором операнда. Полученная сумма являетсяадресом операнда. Мнемоники на ассемблере для 3ех случаев имеют вид
B X Rn ,W X Rn , L X Rn , где X смещение, относительно Rn . Возможность задавать размерностьсмещения предусмотрена для экономии памяти. Рассмотримэтот способ адресации на примере команды CLRB B 2 R4 , которая очистит 3ий байтбайтового массива, адрес которого содержится в регистре R5. Ее машинное представлениевыглядит как 94 A4 02, где 94 - код операции,
A4 - регистр R4 и смещение представленобайтом для слова и двойного слова было бы C4 и E4 соответственно, а третье полепредставляло бы смещение как слово или двойное слово , а 02 собственно смещение, представленное в видебайта.До операцииCLRB B 2 R4 R4 00001000 00001000 00 R4 00001001 01 00001002 02 R4 2После R4 00001000 00001000 00 R4 00001001 01 00001002 00 lt 0В результате выполнения команды действительно
произошло очищениеячейки 00001002, заданной начальным адресом 00001000 и смещением 2. Этот режим адресациипозволяет легко обращаться к отдельным элементам массивов, что очень удобно.2.7 КОСВЕННЫЙ РЕЖИМ СМЕЩЕНИЯ В этом режимесодержимое выбранного регистра складывается со смещением байт, слово или двойноеслово следующее непосредственно за спецификатором операнда и полученная сумма рассматриваетсякак адрес двойного слова, которое является адресом операнда.
Мнемоническое представлениена ассемблере B X Rn , W X Rn и L X Rn для смещения X в байт, слово или двойноеслово соответственно. Rn - это регистр,используемый в данном способе адресации. В качествепримера возьмем инструкцию MOVW B 8 R5 , R2 , которая должна занести в память поадресу R2 число, на которое указывает двойное слово, по адресу
получаемому присложении содержимого регистра R2 со смещением 8. На машинном языке эта инструкциябудет иметь вид B0 B5 08 62, где В0 - код инструкции, B5 - регистр R5 и байтовое смещение, 08 - смещение и 62 - косвенная адресацияс использованием регистра R2.До операцииMOVW B 8 R5 , R2 R5 00001000 R2 0400 00001000 0100
R5 00001004 0200 00001008 0300 R5 8 0300 AAAA R5 8 0400 0000 R2 После R5 00001000 R2 0400 00001000 0100 R5 00001004 0200 00001008 0300 R5 8 0300 AAAA 0400 AAAAКак видно из примера в ячейку 0400 было занесено содержимоеячейки 0300. Адрес 0000300 был вычислен как содержимое R5 00001000 плюс8 т.е. 00001008. Эта ячейка, как видно, действительно содержит адрес 0300.2.8
РЕЖИМ КОРОТКОГО ЛИТЕРАЛА Так как многиелитералы числа , используемые в программах, имеют небольшой размер, то в СМ1700предусмотрен специальный режим адресации, называемый режимом короткого литерала.В этом режиме константа содержится непосредственно в самом спецификаторе операнда.Любой спецификатор операнда, два старших разряда которого равны нулю содержит литеральнуюконстанту в младших шести разрядах. 00 lt байт спецификатороперанда литералС помощью литерала в инструкции могут
быть представлены целыечисла в диапазоне от 0 до 63. Мнемоника на ассемблере S n, где n - литерал. Рассмотриминструкцию MOVL S 18,R3 которая в памяти будет представлена в виде D0 18 53. Здесь D0 - код инструкции, 18 - литерал,53 - регистр R3 при прямой адресации.До операцииMOVL S 18,R3 R3 00001234После
R3 018Из примеравидно, что литерал был занесен в регистр R3 2.9 ИНДЕКСНЫЙ РЕЖИМ Одним изнаиболее мощных средств адресации в СМ1700 является использование регистров общегоназначения для определения индекса элемента в массива данных. Вот формат спецификаторакоманды 15 11 7 3 0 КБРА НБР КИР НИРгде КБРА -код базового режима адресации,
НБР - номер базового регистра, КИР - код индексного режима 0100 , НИР - номер индексного регистра. Как видно разряды 15 - 8 содержат второй спецификатор операнда,который называется базовым. Он может определять любой режим адресации, кроме регистрового,короткого литерала и индексного. Если базовый спецификатор требует расширения, тоэто расширение следует непосредственно за спецификатором.
Спецификатор обычно определяетадрес начала массива, а в индексном регистре Rx содержится номер элемента массива.При определении эффективного адреса операнда сначала вычисляется базовый адрес массиваили таблицы. Затем содержимое индексного регистра умножается на 1, 2, 4 или 8, взависимости от размера операнда и прибавляется к базовому адресу. Используя этотрежим адресации совместно с уже описанными можно получить следующие режимы адресации 1.
Косвенно-регистровый индексный, Rn Rx .2. С автоувеличением индексный, Rn Rx .3. Косвенный с автоувеличкнием индексный, Rn Rx .4. С автоуменьшением индексный Rn Rx .5. Смещения индексный, N X Rn Rx , где N может принимать значения B, W, L.6. Косвенный смещения индексный, N X Rn Rx При работе со структурами данных индексный режим гораздо удобнее,
чем просто режим смещения. Во-первых, здесь имеется мощный режим задания начальногоадреса массива с помощью одного из основных режимов адресации, что позволяет легкомодифицировать этот адрес. Во вторых, программист в индексном регистре Rx указываеттолько номер элемента, а необходимое смещение вычисляется автоматически из контекстаоперанда. Так, инструкция CLRB B 2 R4 , реализующая режим смещения пункт 2.6 может выглядеть как
CLRB R0 R4 и если в R0 находится адрес массива, а в R4смещение, то она аналогично первой инструкции очистит 3ий элемент массива.До операцииCLRB R0 R4 R0 00001000 R4 02 00001000 00 R0 00001001 01 00001002 02 R0 R4 1После R0 00001000 R4 02 00001000 00 R0 00001001 01 00001002 00 lt 0 Пример доказываетабсолютную идентичность этих инструкций.
2.10 РЕЖИМЫ АДРЕСАЦИИ С ИСПОЛЬЗОВАНИЕМ СЧЕТЧИКА ИНСТРУКЦИЙ. Одним изнеудобств описанных выше способов адресации является то, что во всех них требуется предварительная загрузкаодного из регистров общего назначения. Только после того, как регистр загружен,содержимое его может быть использовано в качестве указателя начала массива, адресаэлемента и т.д. При однократном обращении к произвольной ячейке такой способ являетсянеудобным и неэффективным, так
как требует по сути выполнения двух операций вместоодной - предварительной загрузки адреса в регистр и собственно обращение к памятичерез этот регистр с помощью одного из режимовадресации. Однако эту операцию можно реализовать гораздо проще, если использоватьсчетчик инструкций. Регистр R15 является счетчиком инструкций, и одновременно регистромобщего назначения, то есть доступен программисту для использования в качестве базовогорегистра и т.д.
Это очень упрощает жизнь программисту, однако требует повышеннойвнимательности,так как использование этого регистра например при адресации с автоуменьшениемприведет к непредсказуемому результату. Фактически со счетчиком инструкций используютсятолько четыре режима адресации с автоувеличением, косвенный с автоувеличением,смещения и косвенный смещения. Это дает с точки зрения программиста но не аппаратно четыре дополнительных режима адресации непосредственный, абсолютный, относительныйи косвенно-относительный.
Рассмотрималгоритм выполнения режима с автоувеличением при использовании счетчика инструкцийв качестве регистра общего назначения. По определению режима с автоувеличением операцияпроизводится над операндом, на который указывает выбранный регистр. Если мы используемсчетчик инструкций, то он в этот момент будет указывать на ячейку непосредственноследующую за спецификатором операнда. Таким образом операнд оказывается непосредственно в потоке инструкций.
После выборки операнда содержимое счетчика увеличится на размер операнда, определяемыйкодом операции. Длина константы должна соответствовать типу инструкции, даже еслиее фактический размер меньше, только тогда после автоувеличения содержимого счетчикаинструкций он будет содержать правильный адрес следующей команды. Для примера рассмотриминструкцию MOVB 10, R2 До операцииMOVB 10, R2 0305 90 КОП 0306 8F lt представление
R15 0307 10 lt константа 0308 62 lt представление R2 R2 00001000 R15 0305 00001000 FF R2 После R2 00001000 R15 0309 00001000 10 R2 При компиляции инструкция MOVB 10, R2 была заменена наMOVB R15 R2 , а константа была помещена в поток инструкций, и была успешно адресованаи скопирована по адресу 00001000 . Если использоватькосвенный режим с автоувеличением, то по определению
режима содержимое счетчикаинструкций является не адресом операнда, а адресом адреса операнда, а после выполненияинструкции значение счетчика увеличится на 4, так как мы передаем 32-разрядные адреса.Таким образом мы имеем возможность задать прямо в коде инструкции абсолютный адресоперанда. Если в предыдущем примере использовать этот пример, то по адресу 00001000 будет занесено не число 10, а значение ячейки 10. На ассемблере такаяинструкция будет иметь мнемонику
MOVB 10, R2 До операцииMOVB 10, R2 0305 90 КОП 0306 9F lt представление R15 0307 10 0308 00 0309 00 030A 00 030B 62 lt представление R2 R2 00001000 R15 0305 010 00 00001000 FF R2 После R2 00001000 R15 0309 010 00 00001000 00 lt 0 Есть определенныйкласс программ, которые называются позиционно-независимыми. Они могут быть загруженыи запущены в любой области памяти без перетрансляции, перелинковки
или модификацииадресов операндов. При перемещении в памяти программы, использующей косвенно-регистровыйрежим адресации адрес адресуемой ячейки не изменяется. Если данные в памяти перемещаютсявместе с программой, как это чаще всего бывает, то адресоваться будут совсем нете данные, которые должны бы. Что делать в таких случаях ? Рассмотрим как использоватьсчетчик инструкций в режиме со смещением. Содержимое регистра счетчика инструкций складывается со смещением, которое расположенонепосредственно
в потоке инструкций. Полученная сумма является адресом операнда.Очевидно, что в этом случае данные будут адресоваться правильно, так как если подобратьсмещение равное разнице между адресом операнда и адресом текущей команды, то этаразность всегда будет постоянной. Этот режим адресации называется относительными на ассемблере записывается просто как Addr, где Addr - адрес операнда. Рассмотримвыполнение инструкции
MOVB 10, R2 До операцииMOVB 10, R2 0305 90 КОП 0306 CF lt представление R15 0307 07 отрицательное смещение 309-10 , 0308 FD представленное в доп. коде 0309 62 lt представление R2 R2 00001000 R15 0305 010 00 00001000 FF R2 После R2 00001000 R15 030A lt 5 010 00 00001000 00 lt 0 Отметим,что смещение в данном примере отрицательное
и представлено в дополнительном коде. Длина смещения и соответствующийконкретный код режима вычисляется автоматически на этапе компилирования. Если использоватьсчетчик инструкций в косвенном режиме со смещением, то получим еще один способ адресации,который называется косвенно-относительным. Здесь сумма содержимого счетчика инструкцийскладывается со смещением и рассматривается как адрес адреса операнда. Для программистаэтот режим является просто режимом косвенной адресации с использованием произвольнойячейки
для хранения адреса. Как и в предыдущем примере смещение должно быть равноразнице между адресом данной ячейки и текущим положением инструкции. На ассемблереэтот режим обозначается Addr, где Addr - адрес ячейки, в которой находится адресоперанда. Рассмотрим инструкцию MOVB 10, R2 До операцииMOVB 10, R2 0305 90 КОП 0306 CC lt представление W FD7 R15 0307 07 отрицательное смещение 309-10 ,
0308 FD представленное в доп. коде 0309 62 lt представление R2 R2 00001000 R15 0305 0 EE 010 010 00 00001000 FF R2 После R2 00001000 R15 030A lt 5 0 EE 010 00 00001000 EE lt EE2.11 АДРЕСАЦИЯ ПЕРЕХОДОВ. Последний способ адресации, который будет рассмотрен - этоадресация переходов. Вот формат инструкцииусловного перехода 7 0КОД
ОПЕРАЦИИСМЕЩЕНИЕАдресация в этих инструкциях отличается от всех рассматриваемыхтем, что здесь нет спецификатора операнда. Каждая инструкция условного переходасостоит из кода операции и следующего за ним байтного смещения со знаком. При формированииадреса перехода смещение складывается с содержимым счетчика инструкций подобно тому,как это делалось при относительной адресации. Почему всего 128 байт ? Это обусловленотем, что большинство переходов адресованы к ячейкам, находящимся
на небольшом расстоянииот самой инструкции перехода. Лишь в некоторых случаях требуется использование болееэффективных режимов адресации.3. СИСТЕМЫ АДРЕСАЦИИ ИСПОЛЬЗУЕМЫЕ В ПЭВМ Системы адресациииспользуемые в персональных ЭВМ будут рассмотрены на примере 32-разрядного процессора80386 фирмы Intel. Все что касается этого процессора, системы его команд и способовадресации можно так же отнести
к 386-ым процессорам фирм Cyrix и AMD AdvancedMicro Devices , которые полностью совместимы с I80386. МП 80386 представляет собойвысокопроизводительный 32-разрядный микропроцессор, выполняющий 3-4 МОПС MIPS . Он отличается полной 32-разрядной архитектурой с физическим адресным остранством4 Гбайт и встроенными средствами страничной виртуальной памяти, МП 80386 может адресовать64 Тбайт виртуальной памяти.
Система команд МП 80386 содержит 9 категорий команд пересылки данных, арифметических, сдвига, обработки строк, обработки битов, передачиуправления, поддержки языков высокого уровня, поддержки операционной системы и управленияпроцессором. Длина команды в среднем составляет 2-3 байта. Операнды могут иметьдлину 8,16 или 32 разряда. МП 80386реализует сегментную организацию памяти, при которой физический адрес ячейки вычисляетсяпутем сложения базового адреса сегмента и относительного
адреса ячейки внутри сегмента.Базовый адрес определяется содержимым 16-разрядного сегментного регистра и зависит от режима работы микропроцессора.Если микропроцессор работает в режиме обработки 16-разрядных данных режим реальныхадресов или режим виртуального процессора 8086 , то 20-разрядный базовый адрес формируетсяпутем сдвига содержимого сегментного регистра на четыре разряда влево. Т.е. еслив сегментном регистре содержится число 45F7, то базовый адрес будет 45F70.
Еслимикропроцессор работает в режиме обработки 32-разрядных данных защищенный режим , то 32-разрядный базовый адрес содержится в дескрипторе, выбор которого из таблицыдескрипторов осуществляется с помощью селектора - содержимого соответствующего сегментногорегистра. В зависимости от типа обращения к памяти производится выбор сегментногорегистра и способа определения относительного адреса. Для некоторых способов обращения к памяти возможныварианты выбора сегментных
регистров. Эти варианты могут быть выбраны с помощьюпрефикса замены сегмента SEG. На мнемонике ассемблера это выглядит просто какDS ES CS FS ? и т.д. В качестве относительного адреса используетсясодержимое регистров EIP IP , ESP SP ,ESI SI , EDI DI или эффективный адрес EA, который формируется в соответствии сзаданным способом адресации косвенный, индексный и т.д 1.
Выборка команд. Сегментный регистр CS Code Segment Относительный адрес EIP IP Instruction Pointer 2. Обращение к стеку. Сегментный регистр SS Stack Segment Относительный адрес ESP SP Stack Pointer 3. Адресация операнда. Сегментный регистр DSили CS,SS,ES,FS,GS Относительный адрес EA 4. Адресация элемента строки-источника.
Сегментныйрегистр DS или CS,SS,ES,FS,GS Относительный адрес ESI SI 5. Адресация элемента строки-приемника. Сегментный регистр ES Относительный адрес EDI DI 6. Адресация операнда с использованием в качествебазового регистра EBP BP или ESP SP . Сегментный регистр SSили CS,DS,ES,FS,GS Относительный адрес EAЭффективный адрес операнда
EA является 16- или 32-разрядными формируется в зависимости от значения определенных полей в представлении команды.В общем случае EA образуется путем сложения трех компонент содержимого базового регистра EBP BP или EBX BX содержимого индексного регистра ESI SI или EDI DI 8 16- или 32-разрядного смещения, заданного непосредственно в команде.В разных случаях для формирования EA используются либо вселибо часть этих слагаемых.
Теперь рассмотрим конкретные способы адресации.3.1 НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ. В качествеоперанда используется один, два или четыре последних байта команды. Такой способ адресации реализуетсяпри выполнении ряда команд пересылки MOV, PUSH , арифметических операциях ADD, ADC, SUB, SBB, CMP, IMUL , и логических AND, OR, XOR, TEST .
Рассмотрим простойпример - умножение содержимого регистра на константу Регистрыдо выполнения IMUL AX,5 AX 10После AX 503.2 РЕГИСТРОВАЯ АДРЕСАЦИЯ. При этомспособе адресации операндом берется содержимое регистра. Например для операции занесения на стек реализация регистровогоспособа адресации будет выглядеть как PUSH DS.Регистрыдо выполнения PUSH DS DS 5678h SP FFFEh
SS FFFE 0000hПосле DS 5678 SP FFFDh SS FFFD 5678 SS FFFE 0000Как видноиз примера значение регистра DS было занесено на стек.3.3 КОСВЕННО-РЕГИСТРОВАЯ АДРЕСАЦИЯ. При такойадресации относительный адрес содержится в индексном SI, DI, ESI, EDI или базовом BX, BP, EBX, EBP регистрах или в регистрах общего назначения EAX, ECX, EDX. Адресоперанда вычисляется как сегмент смещение.
Смещение представлено эффективным адресом. Для примерарассмотрим команду MOV EBX, EDI , котораяпересылает содержимое ячейки DS EDI в регистр EBX. В качестве размера операндаберется двойное слово - 4 байта.Регистрыдо выполнения MOV EBX, EDI EBX 5678h EDI 0100h DS 0100h 1221h edi После EBX 1221h lt 1221h
EDI 0100h DS 0100h 1221hПример вкомментариях не нуждается. Число, адрес которого DS EDI было успешно занесено врегистр EBX. Регистр DS использовался по умолчанию. 3.4 ПРЯМАЯ АДРЕСАЦИЯ. При этомспособе адресации смещение в сегменте до операнда задано в виде слова или двойногослова в коде команды. Для примера возьмем операцию MOV EAX,
1994h , пересылающуюдвойное слово по адресу DS 1994 в регистр EAX.Регистрыдо выполнения MOV EAX, 1994h EAX 0000h DS 1994h 5000hПосле EAX 5000h lt 5000h DS 1994h 5000h Из примера видно, что число, прямо адресованное какds 1994h было скопировано в заданный регистр.3.5 БАЗОВАЯ АДРЕСАЦИЯ. Относительныйадрес операнда формируется при сложении содержимого базового регистра
с непосредственнымсмещением. Смещение может быть представлено словом или двойным словом. Рассмотриминструкцию ADD AX, BP 10h , которая к содержимому регистра AX прибавляет число,адрес которого DS BP 10h Регистрыдо выполнения ADD AX, BP 10h AX 0067h BP 0100h DS 0100h 0000h bp DS 0101h 0001h DS 0109h 0009h DS 0110h 0010h bp 10h
После AX 0077h lt 67h 10h 77h BP 0100h DS 0100h 0000h DS 0101h 0001h DS 0109h 0009h DS 0110h 0010hКак видно из примера, к содержимому BP было добавлено 10hи получилось смещение 110h, по которому и было взято число, прибавленное к AX. 3.6 ИНДЕКСНАЯ АДРЕСАЦИЯ. Примернотоже самое, что и базовая адресация, однако здесь и используются индексные регистры SI,DI и смещение заданное байтом или словом.
При формировании 32-разрядных адресов,в качестве базового или индексного может использоваться любой из регистров EAX,ECX, EDX, EBX, EBP, ESI, EDI Для примера возьмем инструкцию MOV WORD PTRES DI 2 ,AX, которая по адресу ES DI 2 зашлет слово из AX.Регистрыдо выполнения MOV WORD PTR ES DI 2 ,AX AX 0099h DI 000Dh ES 000Dh 0000h di ES 000Fh 0000h di 2 После
AX 0099h DI 000Dh ES 000Dh 0000h ES 000Fh 0099h lt 99hАдрес ячейки ES 000Fh был посчитан как содержимое DI плюс2 F. Число 99h из регистра AX успешно скопировано в эту ячейку памяти.3.7 БАЗОВО-ИНДЕКСНАЯ АДРЕСАЦИЯ. При использованииэтого способа относительный адрес образуется путем сложения содержимых базового BX,BP и индексного SI,DI регистров. Например для операции
MOVAX, BP SI мы получим Регистрыдо выполнения MOV AX, BP SI AX 00AAh BP 0100h SI 0050h DS 0100h 0001h bp DS 0150h 0002h bp si После AX 0002h lt 02h BP 0100h SI 0050h DS 0100h 0001h DS 0150h 0002hАдрес ячейки DS 0150h получен путем сложения значений регистровBP и
SI, после чего число из этой ячейки памяти был загружен в регистр AX.3.8 БАЗОВО-ИНДЕКСНАЯ АДРЕСАЦИЯ СО СМЕЩЕНИЕМ. Это вариантбазово индексной адресации, при котором к относительному адресу прибавляется 8-или 16-разрядное смещение. Дополнительные способы адресации реализуются при использовании32-разрядных адресов, когда задано специальное поле SIB в коде команды. Тогдавозможны конструкции типа
EAX EBX , EAX EAX , ECX EDX , В качестве индексногорегистра можно использовать любой регистр кроме ESP. Содержимое этого регистра умножаетсяна масштабный коэффициент F т.е. сдвигается влево на число разрядов 0,1,3 или4. Значение F зависит от размера данных. Для примера рассмотрим инструкцию MOVEAX, EAX EAX .Регистрыдо выполнения MOV EAX, EAX
EAX EAX 0010h DS 0010h 000Ah eax DS 0020h 000Bh eax eax После EAX 000Bh lt 0Bh DS 0010h 000Ah DS 0020h 000BhБазовый адрес берется из EAX, складывается со смещением изEAX и двойное слово по адресу DS 0020h заносится в EAX.3.9 ИНДЕКСНАЯ АДРЕСАЦИЯ С МАСШТАБИРОВАНИЕМ При использованииэтого способа адресации относительный адрес формируется при сложении
масштабированногоиндекса содержимого индексного регистра и 32-разрядного смещения. Поясним идеюмасштабирования индекса содержимое индексного регистра умножается на масштабныйкоэффициент, чтобы правильно адресовать данные размером более одного байта. Дляпримера рассмотрим фрагмент программы, осуществляющей работу с цепочкой двойных-слов. Start jmp Begin Var dd 5dup 0 Begin mov edi,2 1 mov
Var edi 4 ,12345678h 2 Переменная Var представляет собой массив из 5 32-разрядныхслов. В строке 1 мы заносим в индексный регистр 2, имея ввиду обработку второгоэлемента массива, а далее в строке 2 мы заносим во второй элемент число 1234567h. На паскале это выглядело-быкак Y 2 1234567 Если бы мы не произвелимасштабирование, то число 1234567h было-бы занесено по адресу Y 2 , а при масштабированииреальный адрес был вычислен как
Y 2 4 т.е. Y 8 и число попало по адресу .Использование масштабирования имеет огромную роль при работе с массивами слов идвойных слов, избавляя программиста от необходимости дополнительного индексированияпеременных и работы с удвоенными и учетверенными индексами элементов. Все это занего выполняет процессор, сокращая и размер кода и скорость его выполнения.3.10 БАЗОВО-ИНДЕКСНАЯ АДРЕСАЦИЯ С МАСШТАБИРОВАНИЕМ Относительныйадрес формируется сложением масштабированного
индекса и базы, в качестве которойиспользуется содержимое одного из регистров EAX,EBX,ECX,EDX,ESI или EDI. Приведемпример такой адресации данных Инструкция MOV EAX EDI 4 ,666h поместит число666h по адресу EAX плюс учетверенное содержимое EDI. Регистрыдо выполнения MOV EAX EDI 4 ,666h EAX 0100h EDI 0002h DS 0100h 000Ah eax
DS 0104h 000Bh DS 0108h 000Ch eax edi 4 После EAX 0100h EDI 0002h DS 0100h 000Ah eax DS 0104h 000Bh DS 0108h 0666h lt 666h Масштабирование позволило адресовать именно 2-е 32-разрядноеслово, а не записать число 666h по адресу EAX 2 т.е. 102h, который попадает по серединедвух элементов массива. 3.11 БАЗОВО-ИНДЕКСНАЯ АДРЕСАЦИЯ СО СМЕЩЕНИЕМ И МАСШТАБИРОВАНИЕМ
Этот способадресации рассмотрен в пункте 3.6 при использовании 32-разрядной адресации. Поэтому приведем лишьпример инструкции и опишем ее действия. Инструкция INC EAX EDI 4 12345678h увеличитна единицу число, адрес которого вычисляется, как базовый плюс 32-разрядное смещение12345678h и плюс масштабированный по основанию 4 индекс, содержащийся в регистреEDI.3.12 ОТНОСИТЕЛЬНАЯ АДРЕСАЦИЯ Относительная адресация используетсяв микропроцессоре 80386 при выполнении ряда
команд управления условные и безусловныепереходы, вызовы подпрограмм, управление циклами и т.д. , чтобы адресовать ячейкупамяти, содержащую следующую команду. При этом способе адрес формируется как суммасодержимого регистра EIP IP instruction pointer - указатель инструкции , соответствующеготекущей команде, и 8 16- или 32-разрядного смещения, определяющего положение следующей команды, относительно текущей.
Например рассмотрим операцию безусловного перехода в приведенном фрагменте . . mov ax,5 jmp 1 sub ax,ax 1 mov bx,ax . . Безусловный переход будет представлен как JMP 02, т.е. на2 байта вперед, после инструкции. SUB AX,AX занимает в памяти слово, значит переходбудет передан на команду MOV BX,AX т.е. по адресу CS IP 2. Это немного упрощенныйпример внутрисегментного перехода.
На самом деле при переходах менее чем на 128байт используется короткий переход EB 90, где - это размер кода который надопропустить 1 байт. Дополнительный байт прибавляется за счет кода 90h следующегоза смещением. Этот код представляет собойкод инструкции NOP no operation , присутствие его абсолютно бесполезно, но сложилосьисторически, и больше не исправлялось.
Байт - это байт со знаком, так что переходвозможен как вперед, так и назад. А вотпри переходах более чем на 127 байт используется команда E9 , описанная выше .4. ЗАКЛЮЧЕНИЕ.СРАВНИТЕЛЬНЫЙ АНАЛИЗ СИСТЕМ АДРЕСАЦИИ ИСПОЛЬЗУЕМЫХ В CM1700 И В ПЭВМ НА БАЗЕ ПРОЦЕССОРА 80386. В двух предыдущихразделах мы привели примеры и описали основные способы адресации,
используемые вмашинах двух разных семейств - мини- и микроЭВМ. Конечно это не все, что можно сказатьо системах адресации для компьютеров этих семейств, тем не менее основные способызадания адресов и адресации операндов были рассмотрены и можно попытаться проанализировать,сравнить и привести примеры использования тех способов адресации, которые были описаны. Для начала,рассмотрим самые простые способы адресации, такие как регистровая, прямая, непосредственнаяи
короткого литерала. Про регистровую адресацию трудно написать больше, чем ужебыло написано. Естественно, что этот способ адресации поддерживается и на СМ1700и 80386 процессором, как впрочем вообще всеми процессорами семейства 80х86 и многимидругими процессорами, которые имеют регистровую память. Несмотря на простоту этогоспособа адресации, он достаточно часто используется для манипуляции регистрами,их очистки, модификации их содержимого.
Регистровая память отличается очень большойскоростью, и поэтому большинство вычислений, особенно несложных программисты пытаютсяделать в этих регистрах. В них помещают начальные значения, производят вычисления,модификацию и как-то используют полученные результаты. Для всех этих действий естественнымявляется применение именно регистрового способа адресации. Большим подспорьем регистровомуспособу адресации является режим непосредственной адресации.
Конечно в основномон используется для загрузки в регистры начальных значений, заранее известных адресов,сравнения с константой и так далее. Но если копнуть чуть глубже, то этот способадресации дает еще множество удобств. Например для перехода по заранее известномуадресу представленному в виде сегмента со смещением можно использовать такой код push 0f000hpush 0ffffhret Команда RET берет из стека значения сегмента и смещения, апотом делает межсегментный переход.
Представим себе, выполнение подобного кода безвозможности помещать на вершину стека непосредственное значение mov ax,0f000hpush axmov ax,0ffffhpush axretКак видим, выглядит это не слишком компактно, в сравнениис предыдущим примером, и можете быть уверены, что выполняется это на несколько тактовдольше. Это самый простой пример применения непосредственной адресации, на самомделе ее применение гораздо шире, особенно если интенсивно используются работа соперационной системой, где все значения, адреса
и параметры стандартизированы ив основном заранее известны. На СМ 1700 режим непосредственной адресации реализуетсяпрограммно, с использованием счетчика инструкций, а в машинах на базе i386 он реализуетсяаппаратно. Трудно сказать что лучше, однако в СМ 1700 предусмотрен еще и режим короткоголитерала, преимущества которого перед обычной непосредственной адресацией данныхменьших чем 64 беспорны.
В 80386 процессоре ничего подобного не предусмотрено, хотяможет быть это лучше - не увеличивает систему команд и следовательно упрощает структурупроцессора. Прямая адресацияэто тоже достаточно простой, но очень часто используемый инструмент. Чаще всегоиспользуется для обращения к одиночным переменным, областям данных операционныхсистем и т.д. Реализован и в i386 процессоре и на СМ 1700, опять же через счетчикинструкций.
Более сложными,однако и более продуктивными являются косвенные способы адресации. Косвенно регистровый,косвенный со смещением, индексные режимы адресации реализованы в полной мере и наСМ 1700 и в ПЭВМ. Они дают наибольший эффект при обработке массивов, таблиц, различногорода списков. Для сравнения приведем таблицу аналогичных по смыслу инструкций СМ1700 и процессора 80386. 1.Косвенно регистровый.
СМ 1700 MOVB R1, R2 i386 MOV EBX ,EAX 2.Смещения. СМ 1700 MOVB W 32769 R4 ,R1 i386 MOV EAX, EDX 32769 3.Косвенный смещения. СМ 1700 MOVW B 8 R5 , R2 i386 MOV ESI, EDI 8 MOV AX, word ptr ESI MOV word ptr EDX ,AX 4. Косвенно регистровый индексный. СМ 1700 MOVB R1 R2 ,R3 i386 MOV CX, BP DI 5. Смещения индексный.
СМ 1700 MOVB B 5 R1 R2 ,R3 i386 MOV EAX, EBX ECX 5 В таблице приведены лишь некоторые режимы адресации, и сейчасмы поясним почему. Если обратить внимание на пункт 3, то видно, что команда, аналогичнаякосвенному режиму смещения заменена на 3 инструкции из набора команд процессора80386. Действительно 386-ой процессор не понимает конструкций типа адрес адреса ,поэтому подобные манипуляции приходится делать с помощью дополнительного регистра.
Более того система адресации процессора 80386 не допускает использования командс обращением память-память. Это опять заставляет использовать дополнительные регистры.Однако в системе команд i386 предусмотрены команды обработки строк. Эти командыво многих случаях позволяют обойтись без подобных проблем. Вот эти команды MOVS B,W,D -переслать строкуSTOS B,
W,D -занести в память из AL,AX,EAX LODS B,W,D -занести из памяти в AL,AX,EAX CMPS B,W,D -сравнить строкиSCAS B,W,D -сканировать строку Все эти команды можно использовать с префиксом повторенияREP. У этого префикса есть и условные модификации REPE, REPZ, REPNE REPNZ и другие,прекращающие повторение по какому-то признаку до исчерпания счетчика.
С помощьюпервых трех команд и реализуется основная работа с памятью. Эти инструкции можноохарактеризовать, как использующие автоувеличение или автоуменьшение, так как онипосле выполнения модифицируют текущее смещение, которое хранится в регистрахESI SI ,EDI DI . В тоже время MOVS реализует адресацию память-память .С первого взгляда этого недостаточно для того, чтобы эффективно использовать напримерподобие косвенного
с автоувеличением индексного режима. Однако эти сложные инструкциилегко заменяются набором инструкций процессора 80386. Например перепишем командуMOVL R1 R3 , R2 для машин на базе i80386. CLD MOV ESI, EAX EBX MOVSDЕсли положить, что EDI R2, то результат будет тем же. ДалееESI и EDI будут увеличены на 4 и для дальнейшей пересылки можно было бы написать
MOV CX,1000 REP MOVSB Что привело бы к пересылке 4000 байт из DS ESI вES EDI . Конечно нужна некоторая предварительная подготовка, к примеру заданиеначальных адресов, установка счетчика в ECX, задание направления CLD STD - прибавлятьили отнимать в ESI и или EDI , однако примерно такие же приготовления необходимыи в первом случае. Таким образом, рассматривая и сравнивая возможные способыадресации на
СМ ЭВМ и персональных ЭВМ на базе процессора i386 можно сформироватьвполне определенное представление о возможностях этих машин. Несомненно СМ 1700является более мощной машиной, рассчитанной на решение достаточно сложных экономическихи других задач. Имея более совершенный набор возможных способов адресации позволяеткачественнее и компактнее записывать задачи ориентированные на работу с большимколичеством различной нформации, по сравнению с возможной реализацией подобных задачна
ПЭВМ.Прямая или косвенная адресация память-память несомненно имеетогромные преимущества, и резко снижает размер кода и количество дополнительных ресурсов регистры, лишние такты и т.д используемых при подобных пересылках. Однако,несмотря на это, перепрограммирование подобных задач для процессора 80386 вполнереально и даже имеет смысл. Благодаря развитию элементной базы, новым архитектурнымрешениям, повышению производительности внутренних и внешних запоминающих устройствобщая производительность современных
ПЭВМ достигает, и часто обходит производительностьтаких классических вычислительных систем, как ВС на основе СМ и ЕС ЭВМ. Поэтому,несмотря на некоторую неприспособленнось машин этого класса для решения сложныхзадач, последнее время очень большой процент подобных вычислений приходится на ПЭВМ. И конечно не последнюю рольздесь играет их относительно небольшая стоимость, глобальное распространение и огромноеколичество прикладных программ, а следовательно и программистов, способных писатьграмотное
ПО для решения экономических задач. КозловА.В.СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ.1. Малые ЭВМ высокой производительности. Архитектура и программирование. Москва Радио и связь 1990.2. Д.Брамм, П.Брамм. Процессор 80386 и его программирование. Мир 1990.3. Шагурин, В.Б. Бродин, Г.П. Мозговой. Описание и система команд.
МП Малип 1992.4. Вычислительные машины, системы и сети. Москва Финансы и статистика 1991.5. ALI 386DX MINI ISA Systеm Board user s manual. Printed in the Taiwan.Edition - August 1993.ОГЛАВЛЕНИЕ 1. Введение. Сравнение мини- и микроЭВМ. 2. Системы адресации используемые в мини-ЭВМ. 1. Регистровый режим адресации.
2. Косвенно регистровый режим адресации. 3. Режим с автоувеличением. 4. Режим с автоуменьшением. 5. Косвенный с автоувеличением. 6. Режим смещения. 7. Косвенный смещения. 8.Режим короткого литерала. 9. Индексный режим. 10. Режимы адресации с использованием счетчикаинструкций. 11. Адресация переходов. 3. Системы адресации используемые в
ПЭВМ. 1. Непосредственная адресация. 2. Регистровая адресация. 3. Косвенно-регистровая адресация. 4. Прямая адресация. 5. Базовая адресация. 6. Индексная адресация. 7. Базово-индексная адресация. 8. Базово-индексная адресация со смещением. 9. Индексная адресация с масштабированием. 10. Базово-индексная адресация со смещением. 11. Базово-индексная адресация со смещениеми с масштабированием.
12. Относительная адресация. 4. Заключение. Сравнительный анализ систем адресациииспользуемых в CM1700 и в ПЭВМ на базе процессора80386. 5. Литература.
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |
Реферат | Кислотно-основное титрование протолитометрия |
Реферат | Немецкое ваяние XVI столетия |
Реферат | Canterbury Essay Research Paper Are there many |
Реферат | Восстание Кастуся Калиновского |
Реферат | История возникновения транзитной рекламы |
Реферат | История государственного финансового контроля в России |
Реферат | Foreign Language Education Essay Research Paper In |
Реферат | Політичні еліти 2 2 |
Реферат | Основные способы словообразования в современном английском языке |
Реферат | НИТ (нетрадиционные источники энергии) и их применение |
Реферат | Die Sehenswurdigkeiten Leipzigs |
Реферат | Виа Гра |
Реферат | Art Is Life Life Is Art Essay |
Реферат | «Азот и фосфор» |
Реферат | О мизанфонии |