Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-35.docx
Скачиваний:
13
Добавлен:
11.07.2022
Размер:
651.81 Кб
Скачать
  1. Языки Ассемблера. Номенклатура, характеристики

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

Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данных через метки с символьными именами и директивы.

Достоинства и недостатки:

-минимальное количество избыточного кода (использование меньшего количества команд и обращений в память). Как следствие — большая скорость и меньший размер программы

-большие объемы кода, большое число дополнительных мелких задач

-плохая читабельность кода, трудность поддержки (отладка, добавление возможностей)

-трудность реализации парадигм программирования и любых других сколько-нибудь сложных конвенций, сложность совместной разработки

-меньшее количество доступных библиотек, их малая совместимость

-непосредственный доступ к аппаратуре: портам ввода-вывода, особым регистрам процессора

-возможность написания самомодифицирующегося кода (т.е. метапрограммирования, причем без необходимости программного интерпретатора)

-максимальная «подгонка» для нужной платформы (использование специальных инструкций, технических особенностей «железа»)

-непереносимость на другие платформы (кроме двоично совместимых)

  1. Элементы языка ассемблера для 8-ми разрядного микропроцессора.

Исходная программа на языке ассемблера представляет собой последовательность операторов. Операторы обычно занимают одну строку. Ассемблер воспринимает операторы в свободном формате, т.е. элементам операторов не назначены фиксированные столбцы и между ними может быть любое число пробелов там, где это необходи­мо.

Операторы в исходной программе классифицируются как команд­ные операторы, операторы распределения данных и директивы ассемб­лера.

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

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

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

Общепринятого стандарта для синтаксиса языков ассемблера не существует. Однако, существуют стандарты де-факто — традиционные подходы, которых придерживаются большинство разработчиков языков ассемблера. Основными такими стандартами являются Intel-синтаксис и AT&T-синтаксис.

Общий формат записи инструкций одинаков для обоих стандартов:

`[метка:] опкод [операнды] [;комментарий]`

Опкод — непосредственно мнемоника инструкции процессору. К ней могут быть добавлены префиксы (повторения, изменения типа адресации и пр.). В качестве операндов могут выступать константы, названия регистров, адреса в оперативной памяти и пр.

Командные операторы записываются в следующем формате:

Метка: Префикс Мнемоника Операнд1,Операнд2 ;Комментарий

где фигурные скобки обозначают необязательные поля.

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

Имя Директива Операнды ;Комментарий

Соседние файлы в предмете Основы мехатроники