Арифметические команды
Такие команды работают с двумя типами:
1) целыми двоичными числами, то есть с числами, закодированными в двоичной системе счисления.
Десятичные числа – специальный вид представления числовой информации, в основу которого положен принцип кодирования каждой десятичной цифры числа группой из четырех бит.
Микропроцессор выполняет сложение операндов по правилам сложения двоичных чисел.
В системе команд микропроцессора имеются три команды двоичного сложения:
1) inc операнд – увеличение значения операнда;
2) add операнд1, операнд2 – сложение;
3) adc операнд1,операнд2 – сложение с учетом флага переноса cf.
Вычитание двоичных чисел без знака
Если уменьшаемое больше вычитаемого, то разность положительна. Если уменьшаемое меньше вычитаемого, возникает проблема: результат меньше 0, а это уже число со знаком.
После вычитания чисел без знака нужно анализировать состояние флага CF. Если он установлен в 1, то произошел заем из старшего разряда и результат получился в дополнительном коде.
Вычитание двоичных чисел со знаком Но для вычитания способом сложения чисел со знаком в дополнительном коде необходимо представлять оба операнда – и уменьшаемое, и вычитаемое. Результат тоже нужно рассматривать как значение в дополнительном коде. Но здесь возникают сложности. Прежде всего они связаны с тем, что старший бит операнда рассматривается как знаковый.
По содержимому флага переполнения of. Его установка в 1 говорит о том, что результат вышел за диапазон представления знаковых чисел (т. е. изменился старший бит) для операнда данного размера, и программист должен предусмотреть действия по корректировке результата.
Принцип вычитания чисел с диапазоном представления, превышающим стандартные разрядные сетки операндов, тот же, что и при сложении, т. е. используется флаг переноса cf. Нужно только представлять себе процесс вычитания в столбик и правильно комбинировать команды микропроцессора с командой sbb.
Для умножения чисел без знака предназначена команда
mul сомножитель_1
Для умножения чисел со знаком предназначена команда
[imul операнд_1, операнд_2, операнд_3]
Для деления чисел без знака предназначена команда div делитель.
Для деления чисел со знаком предназначена команда idiv делитель.