Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Способы адресации. Под адресацией понимается обращение к памяти (регистрам РОН, ОЗУ или ПЗУ) для произведения над их содержимым (операндами) каких-либо операций




Под адресацией понимается обращение к памяти (регистрам РОН, ОЗУ или ПЗУ) для произведения над их содержимым (операндами) каких-либо операций. Адресация производится с помо­щью команд, в которых кодируются как вид операции, так и способ обращения к операндам.

Различают четыре основных способа адресации: непосредствен­ную, регистровую, прямую и косвенную. При непосредственной адре­сации адрес ячейки, в которой находится операнд, содержится в са­мой команде. Команда состоит из двух машинных слов.

В мнемокоде команда с непосредственной адресацией имеет конструкцию КО # К, RM (где КО - код операции, # - символ, озна­чающий «номер», «число»; К - регистр памяти с операндом, указы­ваемый во втором слове команды; R - регистр РОН; М - номер R), восьмеричном коде записывается как КО 27 D К, где 27 - восьмеричный код непосредственной адресации.

Пример.

MOV # 425, RO или 012700 000425. Команда в мнемокоде читается как «передать» (MOV) содержимое регистра ОЗУ или ПЗУ номер д25 в регистр RO, или в восьмеричном коде для первого машинного слова: 01 - код операции MOV (табл. 9), 27 - код непосредственной адресации первого операнда (S), 00 - код регистра 0; для второго ма­шинного слова: 000425 - восьмеричный код регистра памяти номер 425, в котором записан операнд.

Регистровая адресация используется только для операций меж­ду регистрами РОН.

Команда с регистровой адресацией имеет конструкцию КЛ RM, RM, где операнд-источник S и операнд-приемник D строятся одина­ково в виде RM, или в кодах КО: ОМ ОМ.

 

Пример.

СМР R5, RQ или 02 0500, т.е. сравнить содержимое реги­стров общего назначения R5 и RO (02 - код операции СМР из табл. 9, 05 и 00 - адреса РОН R5 и R0).

 

Рисунок 30 – Структурная схема CAP привода станка с ЧПУ

 

Команда занимает одно машинное слово.

 

 

Рисунок 31 – Алгоритм расчета CAP

 

 

Рассмотрим программу расчета управляющего воздей­ствия системы автоматического регулирования (CAP) приводом одной из координат станка с ЧПУ (рис. 30). Он производится по формуле

 

,

где

П - заданное перемещение координат станка;

U - фактическое переме­щение;

ДОС - датчик обратной связи.

 

Алгоритм расчета приведен на рисунке 31.

Распределение памяти:

П - ячейка номер 400;

U - ячейка номер 401;

DU - РОН R0.

Счетчик команд организует с ячейки ОЗУ номер 500, т.е. на­чальное значение СК=500. В левой части программы (табл. 11) приве­дено мнемоническое описание команд, в правой - в восьмеричных ко­дах. В первой и второй командах (блоки 2 и 3 алгоритма) производит­ся подача содержимого ячеек ОЗУ номеров 400 и 401 (т.е. П и U) в регистры РОН RO и R1. Команды используют непосредственную адре­сацию.

Программа представлена в табл. 11.

 

Таблица 11 – Команды адресации

Метки КО Операнды PC Команда
1 слово 2 слово
МО MOV #400, RO      
  MOV #401, R1      
  SUB R1, R0      
  BNE МО     (т.е. Е=-6)
  HALT        

 

Третья команда SUB и блок 4 определяют разность П-U с запи­сью результата в RO. Команда использует регистровую адресацию.

Четвертая команда BNE - условный переход, если результат (содержимое RO) не равен 0. Если условие выполнено, программа пе­реходит на начало, к метке МО, т.е. на шесть слов назад (в кодах ко­манды BNE: 001000-000006=000772). Величина перехода определяется как сумма машинных слов от кода команды перехода (включая его) по начальное слово команды, к которой производится переход, или по формуле Рснач=Рскон+2байтаЕ), где РСнач и РСкон - начальное и ко­нечное содержимое PC, т.е. 500=510+2Е, откуда Е=12 байт или шесть слов.

Если условие не выполнено (1=0), выполняется следующая ко­манда HALT - останов, конец программы. Счетчик команд PC получа­ет приращение в два байта, если команда занимает одно машинное слово, и в четыре байта - если два машинных слова.

Прямая адресация используется, если все данные (операнды) расположены в ячейках памяти. Ассемблер микроЭВМ «Электроника-60» располагает развитой системой способов прямой, а также косвен­ной адресации. Способы отличаются как объемом используемой памя­ти, так и скоростью обмена данными. Прямая адресация в Ассемблере реализуется пятью способами: абсолютной, относительной, автоин­крементной, автодекрементной и индексной адресациями.

При абсолютной прямой адресации команда имеет вид:

КО @#К, @#К, где К - номера ячеек в памяти, или в кодах:


 

1-е слово 2-е слово 3-е слово

КО 37 37, К К

где 37 - код абсолютной адресации.

Пример.

1-е слово 2-е слово 3-е слово

MOV @ # 676, @ # 672 или 013737 000676 000672

т.е. переслать операнд ячейки ОЗУ номер 676 в ячейку номер 672, или в кодах: первое слово - КО = 01, S = 37, D = 37 (т.е. адреса­ция абсолютная), второе слово - 000676 - номер абсолютного адреса первого операнда, третье слово - 000672 номер абсолютного адреса второго операнда. Таким образом, команда занимает в памяти ЭВМ три машинных слова.

Составим программу (табл.12) суммирования импульсов, посту­пающих от датчика перемещения стола фрезерного станка с ЧПУ по какой-либо координате. Переход каждого импульса соответствует пе­ремещению стола на один элементарный шаг (дискрету). При этом используем абсолютную адресацию. Алгоритм приведен на рисунке 32.

 

Рисунок 32. Алгоритм расчета перемещения стола станка с ЧПУ

Распределение памяти:

№ 500=П - заданное переме­щение стола станка;

№ 501=AL - ячейка памяти, в которую поступают от датчика им­пульсы перемещения;

№ 502=L - текущее переме­щение стола, , начальное значение ячейки - 0;

№ 503=0 - служебная ячейка, в которую записывается ноль;

№ 400=РС - начальный ад­рес.

В первой и второй командах (блок 2 алгоритма) сравнивается состояние ячейки 501 с нулем ячейки 503. Если импульс перемещения пришел, программа переходит к третьей команде, если нет - опять проверяет поступление импульса от датчика. По третьей команде им­пульсы складываются и накапливаются в ячейке 502 (блок 3), по чет­вертой (блок 4) - их сумма L сравнивается с конечным значением пе­ремещения П, если ПL (команда 5), счет продолжается (возврат к метке Ml), если нет - останов.

 

 

Таблица 12

Метки КО Операнды PC Команда
1-е слово 2-е слово 3-е слово
Ml: СМР @#501, @#503        
    BEQ Ml     (т.е. E=-38)
    ADD @#501, @#502        
    СМР @#500, @#502        
    BGT Ml     (т.е. Е=-1110 = -138)
    HALT                

 

В команде 5 величина Е должна вычисляться в восьмеричной системе счисления, так как необходимо вернуться на 11 слов назад к метке Ml, а в восьмеричной системе 1110=138, тогда для кода команды BGT (исходный код 003000) получим 0030008 - 0000138 = 002765.

Относительная адресация названа так потому, что в ней вместо абсолютных адресов используются их приращения относительно зна­чения PC, т.е. адрес операнда формируется сложением значения PC и приращения адреса. Команда с относительной адресацией имеет вид

КО К, К, где К - обозначения операндов (в кодах - приращения их адресов или в кодах)

 

1-е слово 2-е слово 3-е слово

КО 67 67 К К

Приращения указываются в команде на месте второго и третьего слов (S и D), причем для определения их значений необхо­димо учесть, что после считывания очередного слова команды содер­жимое PC автоматически увеличивается на 2 (указывает, какое слово считывается следующим).

Пример.

Первые три команды программы (рис. 32) в относительной адре­сации запишутся как (табл. 13):

 

 

Таблица 13

Метки     Операнды     Команда
1-е слово 2-е слово 3-е слово
Ml: CMP DL, Ф        
  BEQ Ml        
  ADD DL, L        

Первая команда сформирована следующим образом:

- в 1-м слове 026767 код 02 означает операцию сравнения (см. табл. 10), коды 67 на позициях операндов S и D указывают на относи­тельную адресацию в команде;

- 2-е слово (операнд S), т.е. приращение, рассчитывается по правилу: текущее значение РС==400 после считывания первого слова PC станет равным 402, после считывания приращения операнда AL значение PC будет равным 404. Так как операнд DL записан по адре­су 501, то величина приращения должна быть 501 - 404 = 97, т.е. 2-е слово имеет вид 000097;

- 3-е слово (операнд D) формируется аналогично: значение PC после его считывания составит 406, следовательно, приращение равно 503 - 406 = 97.

Для третьей команды получим: приращение DL = 501 - 412 = 89, приращение L = 502 - 414 = 88.

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

Команда с автоинкрементной адресацией имеет вид:

КО (RM)+, или в кодах: КО 2М.

После считывания операнда (RM)+ содержимое регистра R с номером М (т.е. RM) автоматически наращивается на 1 при операциях с байтами и на 2 при операциях со словами.

Пример.

MOV (R5)+, R1 или в кодах: 012501, т.е. выбрать адрес операнда из R5, затем содержимое R1 увеличивается на 2, или в кодах: 01 = КО MOV, 25 = 2М, 01 + R1.

Команда с автодекрементной адресацией имеет вид КО - (RM), Или в кодах: КО 4М, при ее выполнении сначала уменьшается содер­жимое РОН RM (на 1 при операциях с байтами и на 2 при операциях go словами), а затем считывается операнд.

Пример.

СМР R5, - (R1) или 020541, т.е. сравнить содержимое РОН R5 содержимым РОН R1 после его уменьшения на 2 байта.

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

Команда с индексной адресацией имеет вид:

КО К (RM), S или в кодах: К06МК, применяется для обработки массивов, при этом содержимое RM является индексом, т.е. изменяе­мой частью адреса, константа К - базовым адресом, исполнительный адрес равен сумме содержимого R1 и константы К. S является опе­рандом-источником. Индексная адресация удобна при обращении к массивам и таблицам. Они объединяют функции ряда команд с ко­мандами INC (прибавление 1) и DEC (вычитание 1), повышая тем са­мым быстродействие работы программы и уменьшая объем занимае­мой ею памяти. Вместе с командами INC и DEC в циклических про­граммах часто применяется команда SOB (счет циклов в РОН), кото­рая должна быть последней в программе. Если число циклов РОН равно 0, счет прекращается, если нет - происходит возврат к началу цикла (не более чем на 63 слова назад).

Косвенная адресация характерна тем, что в команде указывает­ся не операнд или адрес памяти с операндом, а код регистра, в кото­рый помещен адрес операнда. Косвенную адресацию можно разделить на косвенно-регистровую, косвенно-автоинкрементную, косвенно-автодекрементную, косвенно-индексную и косвенно-относительную.

Косвенно-регистровая адресация в командах записывается как:

КО @ RM или КО (RM), в кодах: КО 1М.

Пример.

MOV @ Rl, @RO или 011110

СМР (RO), (R1) или 021011

Таблица 14 – Адресация в командах

Метки КО Операнды PC Команда  
1-е слово. 2-е слово
  MOV #540, RO      
  MOV #538, Rl      
  MOV #40, R2      
  BR МО      
М2: СМР @RO, -(Rl)      
  BGT Ml      
М0: MOV @R1, @R2      
Ml: SOB R2, M2      
  HALT        
             

 

Рисунок 33 – Алгоритм поиска наибольшего элемента массива

 

Рассмотрим программу (табл. 14) поиска наибольшего элемента массива с использованием авто­декрементной, косвенно-регистровой адресации и команды SOB. Алгоритм показан на рисунке 33. Распределение памяти:

Массив А (40) занимает ячейки с номера 500 по номер 539;

540 - ячейка памяти резуль­тата;

RO - РОН результата;

R1 = 539 - адрес ячейки по­следнего элемента массива А (40);

R2 = 40 - размерность мас­сива (количество элементов);

PC = 400 - начальное значе­ние PC.

В программе Команда 7 напи­сана с косвенно-регистровой ад­ресацией, команда 5 сочетает кос­венно-регистровую и автодекре­ментную адресации. В ней срав­ниваются значения ячеек теку­щего массива с адресом, меньшим на 2 байта.




Поделиться с друзьями:


Дата добавления: 2015-04-29; Просмотров: 1013; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.052 сек.