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 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.