Структура программы на языке ассемблера — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Структура программы на языке ассемблера

2022-11-24 22
Структура программы на языке ассемблера 0.00 из 5.00 0 оценок
Заказать работу

Согласно [4, 10, 16], ассемблер (от. англ. assembler – сборщик) – это транслятор исходного текста программы, записанной в виде условных обозначений машинных команд (мнемоник), представленных в удобной для человека форме, в эквивалентную программу на машинном языке, понятном процессору. Язык этих условных обозначений называется языком ассемблера.

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

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

Далее рассмотрим общую структуру программы на языке ассемблера и особенности вариантов синтаксиса.

Общее описание программы

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

Можно выделить четыре типа предложений языка ассемблера [4, 14, 16, 17]:

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

2. Макрокоманды – оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями.

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

4. Комментарии, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.

Для распознавания этих предложений компилятором их нужно записывать в соответствии с определёнными синтаксическими правилами.

Синтаксис ассемблера

Общепринятого стандарта для синтаксиса языков ассемблера не существует. При написании программ можно придерживаться общих традиционных подходов. Наиболее распространенные варианты синтаксиса: AT & T и Intel [4, 7, 8, 13]. Кратко рассмотрим основные особенности и отличия между ними.

1. Комментарий по правилам AT&T начинается с символа «#», а не «;» как в Intel. В свою очередь символ «;» разделяет команды и позволяет записывать несколько команд в одной строке.

2. По правилам AT&T имена регистров процессора начинаются с символа «%». Например,

Синтаксис AT&T Синтаксис Intel
%ax, %bh, %dl ax, bh, dl

3. Числовые константы в синтаксисе AT&T записываются с символом «$». Например,

Синтаксис AT&T Синтаксис Intel
$0x20 20h

4. Размер операнда определяется как суффикс в имени команды (инструкции):

b (от byte) – операнды размером 1 байт;

w (от word) – операнды размером 2 байта (слово);

l (от long) – операнды размером 4 байта (двойное слово).

5. По правилам AT&T в командах порядок операндов следующий: вначале источник (src), затем приемник (dst).

В Intel наоборот – сначала приемник (dst), затем источник (src). Например,

 

Синтаксис AT&T Синтаксис Intel
movb %al,%ah mov ah,al
subw $0x25,%ax sub ax,25h
movw $1,%dx mov dx,1

6. Отсутствие префикса операнда в синтаксисе AT&T указывает на адрес в памяти. Например, приведенная ниже команда пересылает значение, хранящееся в памяти по адресу a, в регистр bx.

Синтаксис AT&T Синтаксис Intel
movw a,%bx mov bx,a

А следующая команда помещает адрес ячейки a в регистр bx.

Синтаксис AT&T Синтаксис Intel
movw $a,%bx lea bx,a

7. При использовании режимов адресации c косвенной адресацией операндов по правилам Intel используются квадратные скобки, а по правилам AT&T – круглые скобки. Например, указанная ниже команда помещает в регистр al значение, хранящееся в памяти по адресу, указанному в регистре si.

Синтаксис AT&T Синтаксис Intel
movb (%si),%al mov al,[si]

Также отличаются мнемоники некоторых команд.

Более подробные сведения об особенностях синтаксисов AT&T и Intel можно найти в документации для компиляторов языка ассемблера, поддерживающих соответствующий формат.

В дальнейшем описание структуры программ, команд, примеры фрагментов программного кода будут приводиться в формате Intel.


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

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.