Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скляров И. Изучаем Assembler за 7 дней (2010).pdf
Скачиваний:
1335
Добавлен:
23.02.2015
Размер:
2.11 Mб
Скачать

http://www.sklyaroff.ru

88

ДЕНЬ 5

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

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

Сначала мы рассмотрим работу с целыми, а затем с вещественными числами (с фиксированной и плавающей точкой). Если вы уже подзабыли математику и не помните, что такое вещественные числа, плавающая точка и пр. не беспокойтесь, я популярно объясню все необходимые основы математики.

Как правило, целочисленные операции выполняет центральный процессор, а операции с плавающей точкой возлагаются на сопроцессор (FPU/NPX). На первом дне я уже говорил, что, начиная с процессора 80486DX, сопроцессор располагается на одном кристалле с центральным процессором; до процессора 80486DX сопроцессор представлял собой отдельную микросхему на материнской плате. Подробнее с сопроцессором и его командами мы еще познакомимся на этом дне при изучении операций с числами с плавающей точкой.

Что касается вещественных чисел с фиксированной точкой, то операции с ними на ассемблере выполняются точно также как с целыми числами, а потому их выполнение обычно возлагается на центральный процессор.

Операции с плавающей точкой можно выполнять и без сопроцессора, но без привлечения команд сопроцессора это будет сложнее и потребует больших вычислительных затрат, а значит приложение будет выполняться медленнее (причем значительно). Сопроцессор тоже способен выполнять целочисленные операции, но делает он это медленнее центрального процессора.

5.1. Арифметические операторы

Выполнение простейших арифметических действий на ассемблере можно выполнять с помощью обычных арифметических операторов: + (плюс), - (минус), * (умножение), / (целочисленное деление), MOD (остаток от деления). К арифметическим операторам относят также унарный плюс (+) и унарный минус (-), которые соответственно могут ставиться перед положительными и отрицательными числами. В выражениях могут использоваться также круглые скобки (). Часть выражения, заключенная в круглые скобки, вычисляется в первую очередь.

Примеры использования арифметических операторов:

db 3+2*5

; db

13

db (8+3)*2

; db

22

mov al,14 / 4

; mov al,3

mov al,14 mod 4

; mov al,2

mov al,10 - +5

; mov al,5

mov al,10 - -5 ; mov al,15