Микропроцессоры. Управляющие сигналы и принцип работы микропроцессоров, страница 11


            5. Программирование на языке ассемблера

            Язык ассемблера — это язык символического кодирования. Он позволяет устранить недостатки программирования на машинном языке.

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

            Бланк для программы на ассемблере имеет следующий формат:

Метка

Код (мнемоника)

Операнд

Комментарий

            Примечание. В качестве кодов команд ассемблера (мнемоник) использу­ется система команд МПК КР580 (см. табл.5).

            Пример. (Соответствующая предыдущему примеру программа на ас­семблере)

Метка

Код

Операнд

Комментарий

M0:

LXI

SP, 8400H

;Организация стека в ОЗУ

LXI

H, 800AH

;Загрузка адреса указателя начала очереди в ОЗУ ;(N=0AH)

M1:

XRA

A

;Обнуление аккумулятора

MOV

M, A

;Обнуление ячейки очереди (адрес HL)

MVI

A, 01H

;Номер ячейки конца очереди: 8001H; счет ячеек в ;регистре L

DCR

L

;Адрес следующей ячейки

            Символическое наименование адреса называется меткой. Символиче­ское наименование кода операции называется мнемоникой или просто кодом.

            Стандартный формат бланка для программ на ассемблере содержит че­тыре поля ассемблерной строки:

—  поле метки;

—  поле кода (мнемоники);

—  поле операнда;

—  поле комментария.

            5.1. Поля ассемблерной строки

            1. Поле метки

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

            Метка имеет длину от 1 до 5 или 6 символов, первым из которых обяза­тельно должна быть буква. Метка не должна содержать знаков пунктуации и пробелов. За последним символом метки следует двоеточие (кроме некоторых исключений). В качестве меток не допускается использовать ключевые слова (команды, директивы ассемблера, названия регистров).

            Примеры допустимых меток:

            AGAIN:

            A15:

            DONE:

            C5FA:

            M1:

            Примеры недопустимых меток:

            8ABC: (начинается не с буквы)

            DONE (не заканчивается двоеточием)

            SP: (использовано ключевое слово)

            A ONE: (содержит пробел)

            2. Поле кода (мнемоники)

            В поле мнемоники содержится символическое описание выполняемой команды, которое заменяет числовое значение кода операции. Мнемоника — это аббревиатура слов или предложений на английском языке, характеризую­щих основные функции команды. Например,

            MOV — move (переслать);

            JMP — jump (перейти).

            Длина поля мнемоники не должна превышать 4-х позиций, между полем мнемоники и полем операнда необходим промежуток — минимум 1 пробел.

            3. Поле операнда

            В поле операнда помещаются данные, которые являются операндом или операндами команды. Содержимое поля операнда должно соответствовать функции команды. В качестве операндов могут использоваться адреса памяти, внутренние регистры МП, адреса портов ввода и вывода, числовые и символь­ные константы. Некоторые команды, оперирующие определенными внутрен­ними регистрами, имеют пустое поле операнда.

            Поле операнда может содержать информацию следующих типов: число­вые и символьные данные, внутренние регистры и регистровые пары, адреса памяти.

            Шестнадцатеричные данные. Должны начинаться с цифр 0 — 9 и за­вершаться буквой H. Число, которое начинается с букв A — F, дополняется слева нулем.

            Десятичные данные. Заканчиваются необязательной буквой D.

            Восьмеричные данные. Заканчиваются буквой O, либо (чаще) Q, чтобы отличить от цифры 0.

            Двоичные данные. Заканчиваются буквой B.

            Символьные константы. В поле операнда допускается использовать символы внешнего алфавита, заключая их в апострофы. Ассемблирующая про­грамма подставит вместо такого операнда соответствующий двоичный код сим­вола. Примеры: ‘.’ ‘T’

            Идентификаторы внутренних регистров. В языке ассемблера МПК КР580 встроены идентификаторы внутренних регистров B, C, D, E, H, L, M, A с соответствующими двоичными значениями от 000 до 111. Вместо идентифика­торов внутренних регистров допускается применять их адреса в любой системе счисления. Например, идентичны: MOV A, B; MOV 7, 0; MOV 111B, 0H и т. п.

            В командах, оперирующих 16-битными значениями, применяются иден­тификаторы внутренних 16-битных регистров B (пара BC), D (пара DE), H (пара HL), PSW (слово состояния), SP (указатель стека).

            Метки. В командах передачи управления можно указывать метки, вве­денные в поле метки других команд. Метки в поле операнда заменяют абсолют­ные значения адресов перехода. Любой символический адрес, фигурирующий в поле операнда команд передачи управления, должен 1 раз появиться в поле метки некоторого оператора.

            Пример (фрагмент курсового проекта).

Метка

Код

Операнд

Комментарий

M0:

LXI

SP, 8400H

M1:

XRA

A

JNZ

M1

JMP

M0