Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
2022-11-24 | 22 |
5.00
из
|
Заказать работу |
|
|
Согласно [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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!