Поле адреса

Поле адреса в МП Ii.tel 8080 может быть пустым, как например, в командах STC (установить в 1 признак ПЕРЕНОС) или HLT (ОСТАНОВ). Адресное поле может быть определено несколькими способами:

1) как число в шестнадцатиричной, десятичной, восьмеричной или двоичной системе счисления;

2) с использованием текущего значения счетчика адреса (символ $);

3) строкой символов в коде ASCII;

4) с помощью символических имен;

5) с использованием арифметических или логических выражений.

Если не оговорено противное, предполагается, что все числа, используемые в ассемблерной программе, десятичные. В конце записи шестнадцатиричных, восьмеричных или двоичных чисел должна присутствовать соответствующая буква (Н — для шестнадцатиричных, О или Q — для восьмеричных, В — для двоичных). Шестнадцатиричные числа должны начинаться с десятичной цифры (0—9), чтобы можно было отличать их от символических имен.

Стандартные примеры использования числовых значений следующие:

1) STRT: MVI С, 16; Загрузить в регистр С число 16.

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

2) т ECU OFFH.

Значение имени Ml (минус единица) задано о помощью шестнадцатиричного числа (следует обратить внимание на то, что оно начинается с нуля, чтобы отличить числовое значение от символического имени FFH).

3) IN IT: LXI B,30DEH: Послать 30DE в регистры В, С.

Данные или адреса, имеющие длину 16 бит, удобно задавать в шестнадцатиричной системе счисления.

4); Маски для выделения 4-битных цифр

MASKS:DB 11110000 В, 00001111 В

Маски, предназначенные для выделения двоичных полей, наиболее,и.ягчяд-HJbi и двоичном коде.

В поле адреса можно использовать адрес текущей команды. Он оои^начасгся символом $ (знак доллара). Команда

JMP $ + 6

будет странслирована таким образом, что будет обеспечиваться передача управления команде, которая расположена на шесть ячеек дальше, чем та ячейка, с которой начинается сама команда JMP. В МП Intel данный способ адресации не рекомендуется использовать, поскольку в этом микропроцессоре многие команды занимают более одной ячейки памяти программ. В этих условиях программист может легко ошибиться, вычисляя значение смещение по отношению к текущему адресу; кроме того, для читателя будет затруднительно определять адрес перехода. Поскольку в МП Intel 8080 отсутствует относительная адресация, рассматриваемый способ задания адреса не экономит ни память, ни время выполнения. Поэтому лучше при указании адреса воспользоваться символическим именем.

В ассемблере МП Intel 8080 данные можно задавать как символы в коде ASCII (7-битные символы, дополняемые слева нулевым битом).

Ниже приведены характерные примеры использования символов в коде ASCI I.

1) СРГЕ*; Сравнить символ с символом Е. По этой команде содержимое аккумулятора сравнивается с кодом ASCII символа Е <451в).

2) ; Сообщение об ошибке, если поле длиннее ; . допустимого

ERRM: DB* DATA ТОО LARGE*

Выдаваемое сообщение хранится как строка символов в коде ASCII, начиная с ячейки с меткой ERRM. 

В поле операнда можно использовать .любое имя. При этом программист должен быть внимательным и не путать адреса данных и сами данные. Ниже приведено несколько характерных примеров.

1) MASK EQU 000011 i IB

ANI MASK ; Выделение младших 4 бит

В данном случае имя MASK обозначает ячейку с данными.

2) ALPH EQU 5300Н

LDA ALPH; Послать ALPH в аккумулятор

По этой команде в аккумулятор посылается содержимое ячейки ALPH (53001С).

3) PNCH EQU 5

OUT PNCH

В этой команде значение имени PNCH используется как адрес выходного устройства.

Использование содержательных обозначений для всех устройств ввода-выво-' да делает программу не только более аонятной, но и упрощает ее корректировку. Появление нового номера устройства потребует при этом изменения только одного описания, а не многочисленных ссылок на номер соответствующего .устройства.

Ассемблер МП Intel 8080 позволит также использовать в адресных выражениях арифметические и логические операции для всех типов данных. вф всех операциях операнды рассматриваются как 16-битные числа ^ результат также представляет собой Ш-битное число. Допускается использование следующих операций:

Использование скобок позволяет указывать порядок выполнения операций я делает выражения более понятными. Первым вычисляется самое внутреннее выражение в скобках. Порядок выполнении операций при вгсутствии скобок определяется их приоритетом (причем операций одного приоритета иъиюямдаОгся ио порядку слева направо):

1) \ /. MOD, SHL, SHR;

2) -h, — ;

3) NOT;

4) AND;

51 OR, XOR,

Это значит, что операции умножения и деления выполняются раньше оаераций сложения и вычитания, а арифметические операции раньше логических^ Для пояснения емьгела адресных выражений следует использовать скобки. Следует избегать сложных адресных выражений, так как понять такие выражения трудно, а допустить в них ошибку легко.

Программист должен убедиться, что в результате вычисления выражения получается число, умещающееся в адресном поле данной команды. В табл. 4,5 приведены сведения о разрядности адресов операндов для различных команд.

Ассемблер МП Motorola 6800 допускает использованле в адресном поле аналогичных, но несколько более простых выражений. При этом информацию можно задавать в виде.

1) числовых значений в двоичной,, десяодшой, восьмеричной или шестнадцатиричной системе счисления;
 

2) текущего значения счетчика адреса (*);

,3) символьных строк (в коде ASCII);

4) имен:

5) арифметических выражений.

. Тнд числовой константы рпределается слзд^ощими специальными символа-мл, стоящими перед ее изображением: $ — шестнадцатиричная, % — двоичная, восьмеричная.



Непомеченные числовые значения воспринимаются ассемблером как десятичные Кроме того, с помощью апострофа (') обозначаются 7-битные символы в коде ASCII (старший бит устанавливается равным нулю), а с помощью символа ^помечаете^ непосредственный операнд

Ассемблер МП Motorola 6800 допускает только арифметические выражения, использующие операции «*» (умножение) ««/*. Он вычисляет выраже-

ния слева направо: скобки яе допускаются и все операции имеют одинаковый приоритет Результат операции — целое число. Таким образом, ассемблер МП Motoiola 6800 допускает только простейшие арифметические выражения. Это не является существенным ограничением так как уже отмечалось что сложные выражения используются редко.

В Любом языке ассемблера вычисление выражений, которые записаны в программе, осуществляется в процессе ассемблирования, а не во время выполнения программы Так, насрамер, ассемблер может выполнить операцию деления и умножения, хотя ни в МП Motorola 6800, ни в МП Intel 8080 нет соответствующих команд.
 



 



Актуальная информация маска из авокадо для сухой кожи у нас на сайте.