Реферат: Системы адресации в Мини- и МикpоЭВМ - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Системы адресации в Мини- и МикpоЭВМ

Банк рефератов / Радиоэлектроника

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 73 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

22 21 МОСКОВСКИЙ ОРДЕНА ТРУДО ВОГО КРАСНОГО ЗНАМЕНИ ЭКОНОМИКО- СТАТИС ТИЧЕСКИЙ ИНСТИТУ ?Т КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ М ?АШИН КУРСОВАЯ РАБОТА на тему : Сравнительны й анализ разл ичных систем адресации , используе мых в мини и микроЭВМ. Дата г отовности работы : Студент : Козлов А. В. Руководитель ра боты : Ч ?ерняк Н. Г. Защи щена “ ____” “ _________” 1994 г. Москва 1994 г. МОСКОВСКИЙ ОРДЕН ?А ТРУДОВОГО К ?РАСНОГО ЗНАМЕНИ ЭКОНОМИКО- СТАТИСТИЧ ЕСКИЙ ИНСТИТУТ КАФЕДРА ВЫЧИСЛИТ ?ЕЛЬНЫХ МАШИН ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ группа ДП -101 курс ? 1 Студент : Коз лов А. В. Тема : С ?равнительный анализ различных си стем адресации , используемых в мини и микроЭВМ. Основ ?ные разделы к ?урсовой работы : 1. Введение . Отличия мини - и микроЭВМ. 2. Системы адресации , ис пользуемые в мини- ЭВМ .( На примере СМ ЭВМ ). 3. Системы адресации , ис пользуемые в ПЭВМ .( На приме ре конкретной ПЭВМ ). 4. Заключени ?е . Сравнительный анализ систем адресации ис пользуемых в мини - и персон альных ЭВМ. Рекомендуемая ли ?тература : 1. Малые ЭВМ высокой производительности . Архитектура и программирование . Москва " Рад ио и связь " 1990. 2. Д. Брам м , П. Брамм . Процессор 80386 и е ?го программирование . " Мир " 1990. 3. Шагурин , В. Б . Броди н , Г. П . Мозг овой . Описание и система команд . МП " Малип " 1992. Дата выдачи задания “ ____” “ _________” 1994 г. Срок представлен ?ия работы на кафедру " " " " 1994 г. Руководитель кур ?совой работы : Черняк Н. Г. 1. ОТЛИЧИЯ МИНИ - И МИКРОЭВМ. В конце 60- х годов началс я серийный вы пуск сравнительно небольших и дешевых ми ни- ЭВМ . Их предназначали дл ?я предприятий и организаций , где установк а высокопроизводите льных ЭВМ был а экономически невыгодной . В их задачу первоначально вх ?одила автоматизация профессиональной работы в различных органи ?зациях , работа на предприятиях в качест в ?е проблемноориентир ованных ЭВМ . В 1977-78 году был начат выпуск семейства малых ЭВМ ( СМ ЭВМ ). Их час ?то называли у ?правляющими вычисли тельными комплексам и , так как они чаще в ?сего использовались в системах управления р азличного рода . Однако , СМ 3- ей очереди, разработанные в последние го ды относятся уже к ЭВМ четвертого покол ?ения и имеют большую прои зводительность , поэт ому круг их применения р езко расширился , и их актив ?но используют в качестве автоматизированных рабочих мест , объединяют в вычислительные с ?истем ы , и поручают им р асчет экономических и статистиче ских задач . С появлением б ольших интегральных схем связано развитие дру гого класса м ашин - микроЭВМ , и , как дост ?ижение этого направления - появ ?ление мощных профессиональных ПЭВМ , которые используются на раб очих м ?естах для авт ?оматизации труда , несложных ра счетов и разл ичного рода п роектирования . Основ ным отличием мини - от микро ЭВМ несомненно является ориента ?ция . Машины СМ ? ЭВМ выпускал ?ись как пробл ?емно ориентированны е ЭВМ и поддерживались б ?ольшим количеством различных мо дулей определяющих их специализ ацию , в то время как ПЭВМ - это у ?ниверсальные ЭВМ , рассчитанные помимо применени ?я в профессио ?нальной деятельност и еще и на применение в качестве обучающих и бытовых ЭВМ . По функциона льным возможностям мини - и мик роЭВМ име ющие примерно один и тот ? же уровень не отличаютс я друг от друга , как это должно быть для м ?ашин разного класса , т. е . учитывая что мини- ЭВМ с ?читается более мощной чем микроЭВМ , а в частности ПЭВМ . Для с ?равнения возьмем супермини- ЭВМ СМ 1700 и с ?оврем енную перс ональную ЭВМ на базе 32- разря дного процессора. СМ 1700 AMD 80386 DX 40Mhz Производитель- ность , млн. оп ./ с 3 9.6 Разрядность 32 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 = 00000010 R3 = 00001000 Тогда ? после они будут выгляд еть так : R2 = 00000010 R3 = 00000010 Как видно из примера , содержимое регис ?тра R2 было скоп ?ировано в R3. 2.2 КОСВЕННО- РЕГИСТРОВЫЙ РЕЖИ ?М В этом режиме содержимое р егистра является адресом опер анда . Мнемоника н а ассемблер е (Rn), где (Rn) являет ся регистром содержащим либо адрес операнда источника MOVL (R2),R3 л ?ибо адрес опе ?ранда приемника MOVL R2,(R3) . В качестве примера опять приведем инс трукцию пересылки двойного сло ва MOVL R2,(R3). Код опера ?ции останется тот же , а операнды буд ут представлены как 52 63, где 63 - э ?то уже косвен ?ная адресация с использованием ? 3 го регистра . При том же содержимом регистров , чт о и в п редыдущем примере , будем иметь : До операции MOVL R2,(R3): R2 = 00000010 R3 = 000 01000 (00001000) = 00000200 (R3) После... R2 = 00000010 R3 = 00001000 (00001000) = 00000010 После операции пересылки зн ачение ячейки памяти , адрес которой содержал ?ся в R3 (00001000) измени лся с 000000200 на 000 00010. 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) = 000000AC (R3) (00001050) = 00000000 (R2) После ... R0 = 00001000 R2 = 00001054 < — — Увеличило сь на 4 (00001000) = 000000AC (00001050) = 000000AC Как видно произо шла пересылка числа из я ?чейки 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 (00000FFF) = 0000001A (000001000) = 0000001A (R5) После ... R5 = 00000FFF < — — уменьшилось на 1 (00000FFF) = 0000001A (R5) (000001000) = 00000000 < — — 0 Измен ?ения хорошо в ?идны . Ячейка 00001000, на которую первоначально ук ?азывал регистр R5 очистилась ( CLRB - CLeaR Byte - очи ?стить байт ), зн ?ачение регистра R5 уменьшил ось на 1 и теперь указывает на ячейку памят и расположенную перед ячейкой 00001000, т. е . 00000FFF. 2.5 КОСВЕННЫ Й РЕЖИМ С АВТОУВЕЛИЧЕНИЕМ В этом режиме содержимое в ыбранного регистра является адр есом адреса о перанда , а пос ле выполнения операции произво ?ди тся увеличени е содержимого этого регистра на 4, независим о от размера операнда . Это определяется тем , что ре ?гистр содержит адрес адреса ( т. е . адрес ячейки , содержимо ?е которой в свою очередь используется как адрес для получения действительного операнда ), а адрес всегда представляется как двойное слово. Для примера возьмем операцию ? очистки байт ?а , мнемоника к ?оторой на асс ?емблере будет выглядеть как CLRB @(R5)+. Символ '@' ( зюх а ) означает ис пользование не просто режима с автоувелич ением , а именн о косвенног о . Представление эт ?ой операции в ? памяти будет ? 94 95, где 94 - код операции , 95 - означа ет использование регистра R5 и косвенной ад ресации с авт оувеличением ( цифра 9). До операции CLRB @(R5)+ R5 = 00001000 (00001000) = 000000AC (R5) (000000AC) = 0A (00001000) После ... R5 = 00001004 < — — увеличилось на 4 (00001000) = 000000AC (000000AC) = 00 < — — 0 В результате выпол ?нения этой ко ?манды содержимое ячейки 000000AC, адре с которой 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 < — — 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 = 00000400 (00001000) = 00000100 (R5) (00001004) = 00000200 (00001008) = 00000300 (R5)+8 (00000300) = AAAA @(R5)+8 (00000400) = 0000 (R2) После... R5 = 00001000 R2 = 00000400 (00001000) = 00000100 (R5) (00001004) = 00000200 (00001008) = 00000300 (R5)+8 (00000300) = AAAA (00000400) = AAAA Как видно из примера в ячейку 00000400 было занесено содержи ?мое ячейки 00000300. А ?дрес 0000300 был выч ислен как сод ержимое R5 ( 00001000 ) плюс 8 т. е. 00001008. Эта ячейка , как видно , действител ?ьно содержит адрес 00000300. 2.8 РЕЖИМ КОРОТКОГО ЛИ ТЕРАЛА Так как многие литералы ( чис ла ), используемые в программах , имеют небольшой размер , то в СМ 1700 п ?редусмотрен специал ьный режим ад ресации , называемый режимом коро ткого литерала . В этом реж ?име константа содержится непос ?редственно в самом спецификат ?оре операнда . Любой спецификат ?ор операнда , д ?ва старших ра ?зряда которого равны нулю содержит литерал ?ьную константу в младших шести разрядах. 00 ?????? < — — байт спецификатор опе ?ранда литерал С помощью литерала ? в инструкции ? могут быть представлены целые числа в диапазоне от 0 до 63. Мне моника на асс емблере S^#n, где n - литерал . Рассмотрим инструкцию MOVL S^#18,R3 которая в памяти будет представлена в виде D0 18 53. Здесь D0 - код инструкц ?ии , 18 - литерал , 53 - р ?егистр R3 при пр ?ямой адресации. До операции MOVL S^#18,R3 R3 = 00001234 После... R3 = 00000018 Из примера видно , что литерал был занесен в регистр 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 = 00000002 (00001000) = 00 (R0) (00001001) = 01 (00001002) = 02 (R0)+[R4]*1 После... R0 = 00001000 R4 = 00000002 (00001000) = 00 (R0) (00001 001) = 01 (00001002) = 00 < — — 0 Пример доказывае ?т абсолютную идентичность эти ?х инструкций. 2.10 РЕЖИМЫ АДРЕС ?АЦИИ С ИСПОЛЬ ?ЗОВАНИЕМ СЧЕТЧИКА ИНСТРУКЦИЙ. Одни м из неудобст в описанных в ыше способов адресации является то , что во всех ни ?х требуется п ?редварительная загр узка одного и з регистров о бщего назначения . Только после того , как регистр загружен ? , содержимое е ?го может быть ? использовано в качестве указателя начала ? массива , адре ?са элемента и ? т. д . При однократном обращении к п роизволь ной ячей ?ке такой спос ?об является н ?еудобным и не ?эффективным , так как требует по сути вы ?полнения двух операций вместо одной - предва рительной загрузки адреса в регистр и собственно обращ ?ение к памяти ? через этот регистр с помощью одно го из режимов адресации. Од нако эту опер ацию можно ре ализовать гораздо проще , если использовать счетчик инструкц ?ий . Регистр R15 я вляется счетчиком инструкций , и одновременно регистром общего ? назначения , т ?о есть доступ ?ен программисту для использовани ?я в качестве базового рег истра и т. д ? . Это очень упрощает жиз нь программисту , однако требует повышенной в нимательности, так как использовани ?е этого регис ?тра например при адресации с автоуменьш ением приведет к непредсказуемо ?му результату . Фактически со счетчиком ин струкций используют ся тол ько четыре режима адресации : с автоувеличением , косвенный с автоувеличением , смещения и косвенный см ещения . Это да ет с точки зрения прогр аммиста ( но не аппаратно ) че тыре дополнительных режима адрес ации : непосредственн ый , абсолютный , относительный и косве нно- отн осительный . Рассмотрим алго ритм выполнения режима с а ?втоувеличением при использовании счетчика инструк ?ций в качеств ?е регистра об ?щего назначения . По определению режима с автоувеличением операция произво ?дится над опе ?рандом , на кот ?орый указывает выбр анный ре гистр . Если мы используем с четчик инструкций , то он в этот момент будет указыв ать на ячейку непосредственно следующую за спецификатором операнда . Таким образом опер анд оказывается непосредственно в потоке и ?нструкций . После выборки операнда ? содержи мое счетчика увеличи ?тся на размер ? операнда , опр ?еделяемый кодом операции . Длина константы до лжна соответствоват ь типу инстру кции , даже есл и ее фактичес кий размер ме ньше , только т огда после ав тоувеличения содерж имого счетчика инструкций он будет содерж ать пр авильный адрес следую щей команды . Д ля примера ра ссмотрим инструкцию MOVB #10,(R2) До операции MOVB #10,(R2) 00000305 : 90 КОП 00000306 : 8F < — — — представл ение '(R15)+' 00000307 : 10 < — — — константа 00000308 : 62 < — — — представл ение '(R2)' R2 = 00001000 R15 = 00000305 (00001000) = FF (R2) После... R2 = 00001000 R15 = 00000309 (00001000) = 10 (R2) При компиляции и нструкция MOVB #10,(R2) была заменена на MOVB (R15)+(R2), а константа ? была помещен ?а в поток инструкций , и была успешно адресована и скопирована по адресу (00001000). Если использова ть косвенный режим с автоу величением , то по определению режима содер жимое счетчика инстру кций я вляется не ад ресом операнда , а адресом адреса операнда , а после выполнения инстр ?укции значение счетчика увеличи ?тся на 4, так как мы передаем 32- разрядн ?ые адреса . Так ?им образом мы ? имеем возмож ?ность задать прямо в ко ?де инструкции абсолютный адрес ? опера нда . Если в пре ?дыдущем примере использовать это ?т пример , то по адресу (00001000) будет занес ено не число 10, а значение ячейки 10. На ассемблере т акая инструкция будет иметь мнемонику MOVB @#10,(R2): До операции MOVB @#10,(R2) 00000305 : 90 КОП 00000306 : 9F < — — — представл ение '@(R15)+' 00000307 : 10 00000308 : 00 00000309 : 00 0000030A : 00 0000030B : 62 < — — — представл ение '(R2)' R2 = 00001000 R15 = 00000305 (00000010) = 00 (00001000) = FF (R2) После... R2 = 00001000 R15 = 00000309 (00000010) = 00 (00001000) = 00 < — — — 0 Есть определенный класс програм м , которые называются позиц ?ионно- независимыми . Они могут быть загружены и запущены в любой области памяти без перетран сляции , перелинковки или модифика ции адресов о перандов . При перемещении в памяти программы ? , использующей косвенно- регистровы й режим адрес а ции адрес адресуемой ячейк ?и не изменяет ?ся . Если данны ?е в памяти перемещаются вместе с п ?рограммой , как это чаще в ?сего бывает , т ?о адресоваться будут совсем не те данн ?ые , которые до ?лжны бы . Что делать в таких случаях ? Рассмотрим к ак использовать счетчик инст рукций в режи ме со смещени ем . Содержимое регистра счетчик ?а инструкций складывается со смещением , ко торое расположено непосредственно в потоке инструкций . Получ ?енная сумма я ?вляется адресом операнда . Очевидн ?о , что в этом случае данные будут адресоваться пра ? вильно , так как если п ?одобрать смещение равное разни це между адре сом операнда и адресом тек ущей команды , то эта разнос ть всегда буд ет постоянной . Этот режим адресации называ ?ется относительным и на а ссемблере записывае тся просто ка к Addr, где Addr - адрес о перанда . Рассмотрим выпол ?нение инструкции MOVB 10,(R2) До операции MOVB 10,(R2) 00000305 : 90 КОП 00000306 : CF < — — — представл ение '@(R15)' 00000307 : 07 отрицательное смещение (309-10), 00000308 : FD представленное в доп . коде 00000309 : 62 < — — — представл ение '(R2)' R2 = 00001000 R15 = 00000305 (00000010) = 00 (00001000) = FF (R2) После... R2 = 00001000 R15 = 0000 030A < — — — + 5 (00000010) = 00 (00001000) = 00 < — — — 0 Отме тим , что смеще ние в данном примере отри цательное и п редставлено в дополнительном к ?оде . Длина сме ?щения и соотв ?етствующий конкретн ый код режима вычисл яется автоматически на ? этапе компил ?ирования . Если использовать сче ?тчик инструкций в косвенном режиме со смещением , то получим еще один способ адресации , которы ?й называется косвенно- относитель ным . Здесь сум ма содержимого счетчика инструк ?ций складывается со смещением и рассматрив ается как адр ес адреса опе ранда . Для про граммиста этот режим является просто режим ом косвенной адресации с и спользованием произ вольной ячейки для хранения адреса . Как и в предыд ?ущем примере смещение должно быть равно разнице межд у адр есом данной ячейки и текущим положением и нструкции . На ассемблере этот режим обозначает ?ся @Addr, где Addr - адре с ячейки , в которой нахо дится адрес о перанда . Рассмотрим инструкцию MOVB @10,(R2): До операции MOVB @10,(R2) 00000305 : 90 КОП 00000306 : CC < — — — представл ение '@W^FD7(R15)' 00000307 : 07 отрицательное смещение (309-10), 00000308 : FD представленное в доп . коде 00000309 : 62 < — — — представл ение '(R2)' R2 = 00001000 R15 = 000 00305 (00000000) = EE (00000010) (00000010) = 00 (00001000) = FF (R2) После... R2 = 00001000 R15 = 0000030A < — — + 5 (00000000) = EE (00000 010) = 00 (00001000) = EE < — — EE 2.11 АДРЕСАЦИ Я ПЕРЕХОДОВ. После ?дний способ а ?дресации , который будет рассмо трен - это адре сация переходов . Вот формат инструкции услов ?ного перехода : 7 0 КОД ОПЕРА ЦИИ СМЕЩЕНИЕ Адрес ?а ция в эт их инструкциях отличается от всех рассмат риваемых тем , что здесь нет спецификатора операнда . Каждая инструкция у словного перехода состоит из кода операци и и следующег о за ним байтного смещени ?я со знаком . При формиров ании адреса п ерехода смещение ск ладывается с содержимым счетчика инс трукций подобно тому , как э ?то делалось п ?ри относительной адресации . По чему всего 128 ба ?йт ? Это обусло ?влено тем , что ? большинство переходов адресо ?ваны к ячейка ?м , находящимся на небольшом расстоянии от самой инстру кции пер ехода . Лишь в некоторых случая ?х требуется и ?спользование более эффективных режимов адресации. 3. СИСТЕМЫ АДРЕСАЦИИ ИС ПОЛЬЗУЕМЫЕ В ПЭВМ Сист емы адресации используемые в персональных ЭВМ будут рассмотрены на примере 32- разр ядного процессора 80386 фирмы Intel. В се что касает ся этого проц ессора , системы его команд и способов адресации можно так же отнести к 386- ым процессорам фирм Cyrix и AMD (Advanced Micro 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. Если микропроцес ?сор работает в режиме о ?бработки 3 2- разряд ных данных ( за щищенный режим ), то 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 = 50 3.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 < — — — 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 < — — 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 < — — (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 PTR ES:[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 < — — 99h Адрес ? ячейки ES:000Fh был посчитан как содержимое DI п люс 2 = F. Число 99h из р егистра AX успешно скопиров ?ано в эту ячейку памяти. 3.7 БАЗОВО- ИНДЕКСНАЯ АДРЕСА ?ЦИЯ. При использовании этого способа относительный адрес образуется ? путем сложен ?ия содержимых базового ( BX,BP ) и индексного ( SI,DI ) реги ?стров . Например для операции MOV AX,[BP+SI] мы получим : Регистры до выполнения MOV AX,[BP+SI] AX = 00AAh BP = 0100h SI = 0050h DS:0100h = 0001h (bp) DS:0150h = 0002h (bp+si) После... AX = 0002h < — — 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 зависит от размера данных . Для примера рассмотрим и нструкцию MOV EAX,[EAX+EAX]. Регистры до выполнения MOV EAX,[EAX+EAX] EAX = 0010h DS:0010h = 000Ah (eax) DS:0020h = 000Bh (eax+eax) После... EAX = 000Bh < — — 0Bh DS:0010h = 000Ah DS:0020h = 000Bh Базов ?ый адрес бере ?тся из EAX, склад ывается со см ещением из EAX и двойное слов о по адресу DS:0020h заносится в EAX. 3.9 ИНДЕКСНА Я АДРЕСАЦИЯ С МАСШТАБИРОВАНИЕМ При использовании этого способа адресации от носительный адрес формируется при сложении масштабированного и ндекса ( содержимого индексного р егистра ) и 32- раз ?рядного смещения . Поясним идею масштабирования индекса : соде ржимое индексного регистра умн ожается на ма сштабный коэфф иц ?иент , чтобы пр ?авильно адресовать данные разме ром более одн ого байта . Для примера расс мотрим фрагмент программы , осущес ?твляющей работу с цепочкой двойных- слов. Start: jmp Begin Var dd 5 dup (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,ED X,ESI или EDI. П ?риведем пример такой адресации данных : Инстр укция MOV [EAX+EDI*4],666h поместит число 666h по адресу EAX плюс учетверенное сод ?ержимое EDI. Регистры до выполнения MOV [EAX+EDI*4],666h EAX = 0100h EDI = 0002h DS:0100 h = 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 < — — 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 0f000h push 0ffffh ret Коман ?да RET берет из стека значен ия сегмента и смещения , а потом делает межсегментный переход . Представ ?им себе , выпол ?нение подобного кода без в ?озможности помещать на вершину стека непоср едственное значе ?ние : mov ax,0f000h push ax mov ax,0ffffh push ax ret Как видим , выгляд ит это не слишком компактн ?о , в сравнении ? с предыдущим ? примером , и можете быть уверены , что выполняется это на нескол ько тактов до льше . Это самы й простой при мер применен ия непосредственной адресации , на самом деле ее применени е гораздо шир е , особенно ес ли интенсивно используются раб ?ота с операци ?онной системой , где все зн ?ачения , адреса и параметры стандартизированы и в основн ?ом заранее из ?вестны . На СМ 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. Литература.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Талант – это от Бога: один открывает теорию относительности, а другой может выпить бутылку водки из горла, не отрываясь.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по радиоэлектронике "Системы адресации в Мини- и МикpоЭВМ", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru