Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler.doc
Скачиваний:
10
Добавлен:
20.04.2019
Размер:
12.47 Mб
Скачать

Программирование

Язык Ассемблера

План

  1. Синтаксис языка Ассемблера

  2. Система команд микропроцессора

  3. Команды пересылки данных (общего назначения)

  4. Арифметические команды

  5. Команды перехода

  6. Реализация алгоритмических структур

  7. Массивы

Литература

В.И. Юров Assembler. Учебник для вузов. 2-е изд. С.-Пб.: Питер, 2006. – 640 с.

В.И. Юров Assembler. Практикум 2-е изд. С.-Пб.: Питер, 2006. – 400 с.

В.Ю. Пирогов Ассемблер. Учебный курс М.: BHV, 2003. – 848 с.

Синтаксис языка Ассемблера

Язык Ассемблера система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде

Ассемблер программа, используемая для преобразования исходной программы на языке Ассемблера в машинный код

Преимущества языка Ассемблера по сравнению с машинным кодом

– для обозначения машинных команд используются мнемонические коды операций;

– возможность записи числовых констант в различных системах счисления;

– регистры процессора имеют символические обозначения;

– ячейкам памяти можно сопоставить символическое обозначение;

– строки программы можно помечать специальными метками, которые можно использовать в командах перехода.

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

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

Сегменты программы имеют назначение, соответствующее типам сегментов памяти (кода, данных и стека).

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

Виды предложений языка Ассемблера

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

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

Виды предложений языка Ассемблера

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

В любом предложении языка Ассемблера могут встречаться комментарии. Они полностью игнорируются транслятором и могут содержать любые символы (в том числе и символы русского алфавита).

Формат инструкции или макрокоманды

[метка:] КОП [список операндов] [;комментарий]

Формат директивы

[имя] директива [список операндов] [;комментарий]

Метка символьный идентификатор, значением которого является адрес первого байта предложения программы

КОП (код операции), директива символические обозначения соответствующей машинной команды, макрокоманды или директивы транслятора

Имя символический идентификатор, отличающий одну директиву от других одноименных директив

Операнды части предложения языка Ассемблера, обозначающие объекты, над которым производятся действия.

Операнды описываются выражениями, содержащими:

– обозначения регистров;

– числовые и текстовые константы;

– метки и имена переменных;

– знаки операций;

– зарезервированные слова.

Машинные команды могут

– не иметь операндов (например: ret );

– иметь один операнд (например: inc EAX );

– иметь два операнда (например: add EBX,1 ).

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

Виды операндов

Регистровый операнд обозначает регистр процессора (имя регистра)

Адресный операнд обозначает адрес некоторой ячейки памяти

Непосредственный операнд значение, которое указывается непосредственно в команде

Для адресных операндов можно использовать различные методы адресации

Прямая адресация в команде прямо указывается адрес (смещение) ячейки памяти

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

Виды косвенной адресации определяются составом выражения для вычисления адреса, например:

Косвенная базовая inc [EBX]

Косвенная базовая со смещением inc [EBX+10]

Косвенная базовая индексная со смещением inc [EBX+4*ESI+10]

и т.д.

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

Допустимы следующие сочетания операндов:

Источник

Приемник

Регистровый операнд

Регистровый операнд

Регистровый операнд

Адресный операнд

Адресный операнд

Регистровый операнд

Непосредственный операнд

Регистровый операнд

Непосредственный операнд

Адресный операнд

Система команд микропроцессора Intel 80x86

Самостоятельно

Подготовить и выучить описание каждой группы команд микропроцессора

Команды пересылки данных (общего назначения)

Команда MOV – пересылка данных

Формат команды

mov Приемник, Источник

Действие команды В операнд Приемник заносится значение операнда Источник

Запись на языке высокого уровня

Приемник = Источник;

Команда MOV – пересылка данных

Пример 1. Обмен значениями регистров (EAX и EBX)

mov ECX, EAX ; ECX = EAX

mov EAX, EBX ; EAX = EBX

mov EBX, ECX ; EBX = ECX

Команда MOV – пересылка данных

Пример 2. Реализация команды A=B

mov EAX, A

mov B, EAX

Команда XCHG – обмен значениями

Формат команды

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]