Обзор приемов программирования на ассемблере
1.1. Программирование арифметических выражений.
Программа на языке Ассемблер состоит из операторов (команд) . Каждый оператор занимает одну строку. Общий вид оператора:
<оператор> <операнд1>,<операнд2>
Некоторые операторы могут содержать только один из операндов.
Пример наиболее часто встречающейся команды:
Mov ax,x
Команда копирует содержимое переменной (операнда) x в регистр процессора ax. Соответствует команде в языке Паскаль:
Ax:=x;
Операторы языка Ассемблер не допускают использования двух переменных в качестве операндов для команды, т. е. команда
mov x,y { в Паскале x:=y}
где x и y – переменные, недопустима. Следует писать:
Mov ax,x
Mov y,ax
В данном курсе рассмотрена арифметика для целых двоичных чисел. В табл. 1 представлены основные команды для выполнения арифметических операции, а в табл. 2 — дополни тельные .
Таблица 1 Двоичная арифметика.
Обозначения, используемые в таблице :
on 1, on 2, on — операнды, т.е. содержимое, стоящее по первому (оп 1), второму (оп 2) адресам или единственный операнд (on); al, ah, ax, dx, eax, edx — регистры, причем eax, edx допустимы только для процессоров 80386 и выше.
Как видно из табл. 1, в командах умножения и деления задается один операнд, второй сомножитель или делимое в фиксированных регистрах. Команда умножения возвращает результат в два раза длиннее сомножителей, команда деления требует, чтобы делимое было в два раза длиннее делителя. Результатом выполнения команды деления являются частное (регистр, записанный первым в таблице) и остаток (регистр, записанный вторым).
Если перед кодом стоит буква i(imul, idiv, i-integer-целый), операции выполняются с учетом знаков исходных данных, в противном случае — беззнаковые операции.
ПРИМЕР: Вычислить значение выражения x=y+(z-u*v)/w, если исходные данные занимают одно слово.