Программирование 16-разрядных микропроцессоров на Ассемблере

Допустимые символы языка ассемблера состоят из прописных и строчных букв (латинских), цифр, специальных знаков +, -, *, /, =, (), [], ’, ’’, ., ;, @, &, ?, <, >, % и символов: перевод строки ПС (ОАН), возврат каретки ВК (ОDН), табуляции (О9Н). Любой другой символ воспринимается как пробел. Наименьшей конструкцией модуля является идентификатор – последовательность букв и цифр (не более 31), начинающийся с буквы. К зарезервированным именам относятся имена регистров, операций, псевдокоманд. Модуль представляет собой последовательность операторов языка, записанных в одной строке и заканчивающихся возвратом каретки и переводом строки. Если в первой позиции оператора стоит символ &, то оператор является продолжением предыдущего.

Операторы разделяются на командные и директивы. Команды порождают одну машинную команду. Директивы (псевдокоманды) содержат управляющую информацию для ассемблера. Оператор команды имеет вид:

 

{метка:} {префикс} {мнемоника} {операнд(ы)}; { комментарий}.

 

Значения метки являются текущим значением счетчика в данном сегменте кода, то есть, представляет собой адрес команды. Префикс позволяет формировать байты блокировки LOOK или повторения REP. Мнемоника идентифицирует тип генерируемой команды. В зависимости от функции команды может быть один операнд, два или ни одного. Более двух операндов указывается в макрокоманде. Комментарии поясняют смысл команды.

Директивы ассемблера имеют несколько другой формат:

 

{имя} директива {операнд(ы)} {; комментарий}

 

Имя директивы имеет другой смысл по сравнению с меткой и не заканчивается двоеточием. В ряде директив имя отсутствует.

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

 

MACROCODE имя {операнд(ы)}; {комментарии}

 

Переменная – это единица данных, имеющая имя. Она имеет три атрибута: сегмент, смещениеитип. Сегмент SEG определяет сегмент, содержащий переменную. СмещениеOFFSET, расстояние от начала сегмента до переменной, тип – число байтов переменной (1,2 или 4).

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

Для определения и инициализации данных предназначены директивы:

DB - определить байт (Define Byte)

DW - определить слово (Define Word)

DD - определить двойное слово (Define Double Word).

Формат директивы:

имя DX <начальное значение>, [< начальное значение>]

Пример определения переменных:

 

Z1 DB 0ABH ; один байт, равный AB

Z2 DW 1000H ; одно слово, равное 1000

Z3 DD 1235H; 1000H ; младшее слово 1000, старшее 1235.

 

Для указания произвольного значения ячеек памяти используется символ ? (значение переменной не оговаривается, резервирование ячейки). Для распределения и инициализации нескольких ячеек памяти используется конструкция DUP:

DB 100 DUP(0) ; сто нулевых байтов (Dublicate)

DW 20 DUP(?) ; 20 слов без значения








Дата добавления: 2016-02-09; просмотров: 1150;


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

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

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

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