Программирование на ассемблере 8-разрядного


Микропроцессора

 

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

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

Программа на ассемблере – это набор строк, состоящий из следующих полей /12, 13/:

Метка: Операция Операнд; Комментарий.

Поля отделяются друг от друга не менее, чем одним пробелом. Метка используется для обозначения адреса ячейки памяти, в которой хранятся данные или первый байт команды. Она может состоять из 6 символов, не должна включать знаков пунктуации и пробелов, причем первым символом должна быть буква. Если метка находится в поле меток, то почти всегда должна отделяться двоеточием.

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

Операнд – часть команды, которая может содержать название регистра или регистровой пары, двухбайтовый адрес ячейки памяти, однобайтовый адрес порта ввода или вывода, одно- или двухбайтовое слово данных, метку (метка в данной области двоеточием не отделяется). Если в команде два операнда, то они разделяются запятой. Совокупность операнда и операции – мнемокод команды.

Комментарий пишется либо в соответствующем поле, либо в отдельной строке. Он всегда начинается знаком « ; ».

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

Команды управляют работой процессора и обработкой данных. После выполнения программы ассемблирования каждая команда преобразуется в машинные коды объектного модуля. В Приложении 1 приведена система команд МП i8080 (К580ВМ80А).

Псевдокоманды (директивы) управляют программой ассемблирования. После выполнения трансляции, псевдокоманды в машинные коды не преобразуются. Основные псевдокоманды (директивы) ассемблера МП i8080 (КР580ВМ80А) следующие:

ORG ADR – директива установки адреса для компилятора. Директива устанавливает значение адреса первой команды программы, полученной в результате ассемблирования, равным ADR.

Директивы определения имен:

EQU – эквивалент, присваивает символическому имени, записанному в поле метки, числовое значение, записанное в поле операнда. После символического имени в поле метки двоеточие не ставится. Каждое символическое имя может использоваться в поле метки директивы EQU только один раз.

 

Пример:

DOS EQU 400H ; имени DOS присваивается шестнадцатеричное

RAMN EQU DOS + 32H ; число 400, а имени RAMN – 432.

 

SET – директива установки значения выполняет ту же функцию, что и EQU, но числовое значение символического имени можно изменять с помощью другой директивы SET.

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

DB – директива определения байта данных создает в памяти массив однобайтовых констант, либо цепочки символов заключенной в апострофы и общей длиной до 64 символов. Между константами и между цепочками символов ставятся разделительные запятые. При выполнении директивы DB элементы массива запоминаются в смежные ячейки памяти. Этой области памяти присваивается символическое имя, отмеченное в области метки директивы.

 

Пример:

ARM: DB – 18 ; Операнд в дополнительном коде (число 18) размещается ;в байте памяти с именем ARM.

 

DW – директива определения слова данных аналогична директиве DB, только в DW каждая константа размещается не в байте, а в паре смежных байт. Старший байт запоминается по адресу на единицу больше предыдущего.

Пример:

DATA: DW 442H, TASK, 3275Q ;Операнд размещается в трех по-;следовательных двухбайтовых ;словах: в первом –16-ричное ;число 442, во втором – адрес ;оператора, имеющего метку ;TASK, в третьем –8-ричное ;число 3275.

Директива прекращения ассемблирования – END указывает физический конец исходного модуля.

Программа исходного модуля, написанная на языке Ассемблера процессора i8080 (КР580ВМ80А), должна иметь следующую структуру /13/:

- текстовые комментарии, поясняющие назначение модуля и т.д.;

- директивы определения имен (EQU, SET);

- директива ORG;

- директивы определения данных и области памяти (DB, DW, DS);

- макроопределения, если их нет в системной программе Ассемблера;

- подпрограммы;

- главная программа;

- директива END.



Дата добавления: 2021-12-14; просмотров: 274;


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

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.