КАТЕГОРИИ: Архитектура-(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 – Команды адресации
Третья команда 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
В команде 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-м слове 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 – Адресация в командах
Рисунок 33 – Алгоритм поиска наибольшего элемента массива
Рассмотрим программу (табл. 14) поиска наибольшего элемента массива с использованием автодекрементной, косвенно-регистровой адресации и команды SOB. Алгоритм показан на рисунке 33. Распределение памяти: Массив А (40) занимает ячейки с номера 500 по номер 539; 540 - ячейка памяти результата; RO - РОН результата; R1 = 539 - адрес ячейки последнего элемента массива А (40); R2 = 40 - размерность массива (количество элементов); PC = 400 - начальное значение PC. В программе Команда 7 написана с косвенно-регистровой адресацией, команда 5 сочетает косвенно-регистровую и автодекрементную адресации. В ней сравниваются значения ячеек текущего массива с адресом, меньшим на 2 байта.
Дата добавления: 2015-04-29; Просмотров: 1052; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |