- •Знакомство со средой разработки WinAsm Studio.
- •Структура программы на языке ассемблера.
- •Использование функций Windows api в программах на ассемблере.
- •Синтаксис Ассемблера
- •Директивы объявления констант
- •Команды пересылки данных
- •Арифметические команды.
- •Команды передачи управления.
- •Дополнительные операторы и директивы
- •Практические задания.
- •Команды организации циклов
Директивы объявления констант
Для присвоения значений константам применяются директивы объявления констант. Существует 3 директивы:
Директива равенства – сопоставляет с именем константы числовое значение. Это значение может быть переопределено в программе. Формат директивы равенства: имя = выражение. Например, const1 = 50.
Директива EQU – сопоставляет с именем константы числовое значение или строку символов. Описанная таким образом константа не может быть переопределена в ходе программы. Формат использования:
имя EQU число
имя EQU <число1, число2, …>
Команды пересылки данных
Рассмотрим две команды пересылки данных.
1) Команда MOV – копирует данные из одного операнда в другой
Формат команды следующий:
MOV операнд-получатель, операнд-отправитель
Операнд-отправитель – место, откуда пересылают данные
Операнд-получатель – место, куда пересылают данные
Возможны следующие варианты отправителя и получателя:
MOV reg, reg
MOV mem, reg
MOV reg, mem
MOV mem, immed
MOV reg, immeg
где reg – регистр ЦП, mem – место в памяти (например, переменная),
immed – непосредственное значение (например, 2Bh).
В качестве регистра-получателя нельзя использовать CS и IP, поскольку они определяют последовательность выполнения машинных команд.
Недостатком команды MOV является отсутствие возможности использовать одновременно два операнда памяти, то есть чтобы переслать данные из одной переменной в другую, необходимо сначала из одной переменной поместить данные в какой-либо регистр, а затем из регистра переслать данные во вторую переменную.
2) Команда XCHG (от exchange) – обменивает содержимое двух регистров или содержание регистра и переменной. Возможны следующие варианты использования.
XCHG reg, reg
XCHG reg, mem
XCHG mem, reg
Также отсутствует возможность использования двух операндов памяти.
Арифметические команды.
Рассмотрим основные арифметические операции, позволяющие выполнять действия с целыми числами.
1) Команды инкремента и декремента
INC операнд – команда инкремента (значение операнда увеличивается на единицу).
DEC операнд – команда декремента (значение операнда уменьшается на единицу).
В этом случае в качестве операнда рассматривается регистр процессора или участок памяти (например, переменной).
2) Команды сложения
ADD операнд-получатель, операнд-отправитель (складывает операнд-отправитель с операндом-получателем и помещает результат в операнд-получатель; исходный операнд-отправитель при этом не изменяется).
Одной из разновидностей команды ADD является команда ADC. Она имеет такой же формат:
ADC операнд-получатель, операнд-отправитель
Особенностью команды ADC является то, что ЦП в процессе ее выполнения складывает операнд-отправитель с операндом-получателем, но дополнительно производит операцию сложения полученного результата со значением флага CF (флаг переноса) из регистра флагов процессора.
3) Команда вычитания
SUB операнд-получатель, операнд-отправитель (вычитает из операнда-получателя операнд-отправитель и помещает результат в операнд-получатель).
