Алфавит языка Ассемблера, данные, адресное пространство

Алфавит языка Ассемблер содержит:

1. 26 букв латинского алфавита от А до Z.

2. Цифры от 0 до 9.

3. Знаки # .,%;=()"+-&! и пробел.

4. Управляющие символы формата: ВК (возврат каретки), ПС (перевод строки), ПФ (перевод формата) и ГТ (горизонтальная табу­ляция).

МикроЭВМ «Электроника-60» является двухадресной ЭВМ, по­строенной на базе шестнадцатиразрядного микропроцессора серии К581. Внутреннее представление чисел, адресов и команд выполнено в восьмеричной системе счисления. Слово состоит из двух байтов, причем старший 15-й разряд является знаковым (рис. 27).

Старший байт Младший байт байт    

 

Рисунок 27 – Представление чисел в микроЭВМ

Если в 15-м разряде записан 0, то знак числа в слове «+», если , то «-»• Отрицательные числа представляются в дополнительном коде. Команды записываются в одном, двух или трех последовательно ^доложенных словах (в зависимости от формата команды). Команды расширенной арифметики, т.е. операции над словами двойной длины (умножение, деление, сдвиги) и операции с плавающей запятой ис­пользуют двойные слова, т.е. 32-разрядные целые числа.

 

Адресное пространство, доступное программисту, показано на рис. 28. Оно состоит из восьми РОН, регистра состояния RS, входящих в состав микропроцессора и ОЗУ или ПЗУ.

 

RS   ОЗУ или ПЗУ (28К слов) Регистры пе­риферийных устройств (4К слов)   160000-177777
РОН RO
R1
R2 Векторы прерыва­- ния   000-377 Данные и программы     400-157777
R3
R4
R5
R6 (SP)
R7 (PC)

Рисунок 28 – Распределение адресного пространства

Полный объем адресного пространства, исключая РОН и RS, со­ставляет 216=64Kбaйт или 32К слов. Из них первые 28К являются ОЗУ или ПЗУ (от 0 до 157777g), начальные 256 адресов которого (от О до 377g) хранят исходные данные для прерывающихся программ (системная область памяти), а последние 4К слов отведены для адре­сации регистров состояний и данных периферийных устройств.

Система команд

Система команд микроЭВМ «Электроника-60» содержит более 80 команд, полный список которых приведен в литературе. В таблице 10 сведены основные команды «Электроника-60», используя которые, можно освоить программирование на языке Ассемблер как для ЭВМ СМ-4, так и для других ЭВМ различных типов, поскольку принципы программирования для всех ЭВМ одинаковы.



 

Таблица 10 – Основные команды

Фор­мат Мнемо­код Восьмерич­ный код Признаки Содержание команды
N z V с
MOV 01SSDD + + - (D)->(S) - передача слова
MOVB 11SSDD + + о - (D)->(S) - передача байта
СМР 02SSDD + + + + (S) - (D) - сравнение слов
СМРВ 12SSDD + + + + (S) - (D) - сравнение байтов
ADD 06SSDD + + + + ((S) + (D))->(D) – сложение
SUB 16SSDD + + + + ((S) - (D))->(D) – вычита­ние
MUL 070RSS + + + (RxS) - умножение (старшие ряды в R1, младшие - в Rу1)
DIV 071RSS + + + + (RuRv1)/(S) – деление (частное в R1, остаток –в Rу1)
SWAB 0003DD + + Перестановка байтов
CLRB 1050DD Очистка
COMB 1051DD + + Инвертирование
INCB 1052DD + + + - Прибавление единицы
DECB 1053DD + + + - Вычитание единицы
NEGB 1054DD + + + + Дополнение кода
ASRB 1062DD + + + + Арифметический сдвиг вправо
ASLB 1063DD + + + + Арифметический сдвиг влево
JMP 0001DD - - - - Засылка (D) в СК
JSR 004RDD - - - - Обращение к подпрограмме
RST 00020R - - - - Возврат из подпрограммы
SOB 077RKK - - - - Счет циклов
MARK 0064KK - - - - Восстановление указателя стека
NOP - - - - Нет операции
HALT - - - - Останов
WAIT - - - - Ожидание прерываний
RTI + + + + Возврат из прерывания
BPT + + + + Прерывание для отладки
IOT + + + + Прерывание по вводу-выводу
RTT + + + + Возврат из программы прерывания
TRAP 104400+E + + + + Командное прерывание
ВР 000400+E - - - - Безусловный переход
BNE 001000+E - - - - Условный переход по # 0
BEQ 001400+E - - - - // по = 0
BGE 002000+E - - - - —//— по > 0
BLT 002400+E - - - - —//— по < 0
BGT 003000+E - - - - —//— по > 0
BLE 003400+E - - - - —//— по <. 0
BPL 100000+E - - - - —//— по плюсу
BMI 100400+E - - - - —//— по минусу

 

В таблице 10 приняты обозначения:

SS – адресация операнда-источника (S), символ S записан два­жды, так как операнд S в команде занимает два восьмеричных (или шесть двоичных) разряда;

DD – тип адресации операнда-приемника (D), символ D записан дважды, так как операнд D занимает в команде два восьмеричных (или шесть двоичных) разряда;

КК – восьмеричная константа (число);

Е – смещение PC;

R – один из РОН;

V – дизъюнкция (логическое ИЛИ).

Действие над признаками N, Z, V, С:

«+» - формируется по результату операции;

«- » - не изменяется;

«О» - очищается;

«I» - устанавливается.

Взятие в скобки означает, что в команде используется не сам операнд, например D, а адрес, в котором расположен операнд D, т.е. (D).

Все команды микроЭВМ двухбайтовые, т.е. занимают в памяти одно машинное слово.

б)

В системе команд используются четыре формата.

 

г)

Рисунок 29 – Форматы команд микроЭВМ «Электроника-60»

 

На рисунке 29 приняты обозначения:

 

КО – код операции, записывается в четырех разрядах (12-15) т.е. имеет всего 24=16 комбинаций, из них используются в виде кодов 14 комбинаций, коды 0001-0111 и 1001-1111, а коды 0000 и 1000 ука­зывают на принадлежность команды к 2, 3 или 4-му форматам и совместно с другими разрядами образуют расширенные коды операций;

S – адрес первого операнда, занимает шесть двоичных разрядов (6-11);

D – адрес второго операнда (он же адрес результата) занимает шесть двоичных разрядов (0-5).

Адреса S и D определяют способы адресации операндов. Формат 1 используется для оформления операций с плавающей запятой и операций расширенной арифметики. Он имеет вид, пред­ставленный на рисунке 29, а.

Формат 2 используется для одноадресных арифметических и логических операций (рис. 29, б).

Код операции занимает 10 разрядов, адрес операнда D – шесть двоичных разрядов.

Формат 3 используется для безадресных команд изменения признаков N, Z, V, С и команд управления работой процессора и пе­риферийных устройств. КО занимает все 16 разрядов (рис. 29, в).

Формат 4 используется для команд ветвления (рис. 29, г). КО и Е занимают по восемь разрядов.

Смещение Е – это приращение счетчика команд. Максимальное приращение составляет ±127, т.е. число, равное ±27 слов. Если усло­вие перехода выполнено, то к значению PC прибавляется два байта и еще ±Е слов, т.е. выполняется команда с адресом (РС+2байта ±Е). Ес­ли условие перехода не выполнено, то выполняется следующая, с ад­ресом (РС+2байта), команда.

Способы адресации

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

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

В мнемокоде команда с непосредственной адресацией имеет конструкцию КО # К, 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 байта.








Дата добавления: 2019-02-07; просмотров: 943;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.074 сек.