Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler_konspekt_1.doc
Скачиваний:
27
Добавлен:
10.11.2019
Размер:
275 Кб
Скачать
  1. Вещественные данные

Вещественные данные обрабатываются сопроцессором Intel 8087 (вспомогательным процессором). Современные МП типа Pentium имеют встроенный сопроцессор. Сопроцессор позволяет выполнить дополнительный набор арифметических команд над числами разных типов:

  • целые со знаком (2Б);

  • короткие целые со знаком (4Б);

  • длинные целые со знаком (8Б);

  • упакованные BCD-формата (10Б);

  • короткие вещественные (4Б);

  • длинные вещественные (8Б)

  • временные вещественные (10Б).

В упакованном BCD-формате число занимает 10 байтов, причем первый байт – знак числа, остальные 9Б могут хранить 18 цифр.

Например: числа в сопроцессоре представлены в виде

00 00 00 00 00 12 34 56 78 90 - положительное число,

80 99 99 99 99 87 65 43 21 00 - отрицательное число.

При вводе знак “+“ не требуется, достаточно записать все значащие цифры числа.

Вещественные числа представляются в экспоненциальной форме

А = М * 2Р ,

где М – мантисса числа,

р – двоичный порядок числа.

Порядок определяет положение дробной точки в числе. Для упрощения арифметики используется смещенный порядок (характеристика) числа р*. Нулевой порядок смещается на 127, тогда порядок числа вычисляется по формуле

p = р*-127

Мантисса представляется в нормализованном виде в двоичной системе счисления так, чтобы старшая цифра находилась в разряде целых единиц. Т.к. эта цифра присутствует всегда к=1, то ее наличие подразумевается, а в памяти ее не хранят.

Для вещественных чисел используют 3 формата:

  • короткое вещественное (4Б)

31

30 23

22 0

характеристика

мантисса

знак

  • длинное вещественное (8Б)

63

62 52

51 0

характеристика

мантисса

знак

  • временное вещественное

79

78 64

63 0

характеристика

мантисса

знак

В сопроцессоре есть восемь 10-байтовых регистров. Набор этих регистров чаще всего используется в режиме стека, но можно обращаться к конкретному регистру по имени от ST(0) до ST(7).

Система команд мп семейства iх86 фирмы Intel

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

  1. Команды сложения и вычитания

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

Перечислим команды, относящиеся к группе команд сложения и вычитания:

а) ADD op1, op2 ; op1 := op1+op2

SUB op1, op2 ; op1 := op1 – op2

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

Команда модифицирует регистр флагов FLAGS в соответствии с результатом операции, а именно:

ZF – нулевой рез-т,

SF – знак результата,

PF – флаг четности,

CF, AF – флаги переносов,

OF – флаг переполнения.

Примеры:

ADD AH, 12 ; AH := AH + 12 (1Б)

SUB z, BX ; z := z – BX (2Б)

б) ADC op1, op2 ; op1 := op1+op2+CF

SBC op1, op2 ; op1 := op1 – op2 – CF

Сложение (вычитание) операндов с переносом, образованным предыдущей командой.

Модифицирует флаги аналогично п.(а).

Например, если требуется сложить двойные слова, расположенные в парах регистров

(AX, BX) := (AX, BX) + (CX, DX),

причем AX, CX – старшие байты слагаемых,

BX, DX – младшие байты.

Сложение выполняется двумя командами:

ADD BX, DX

ADC AX, CX

в) Специальный случай сложения – изменение операнда на единицу.

INC op ; op:= op +1 инкремент

DEC op ; op:= op –1 декремент

г) Десятичная коррекция результата предыдущей операции. Это анализ флагов и преобразование результата сложения (вычитания) BCD-кодов. BCD-операнды обрабатываются обычными командами сложения и вычитания, а затем размещается команда десятичной коррекции.

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

DAA; коррекция после сложения

DAS; коррекция после вычитания.

Например,

ADD AL, y

DAA

SUB AL, DH

DAS

Примечание: BCD-операнды, представленные более, чем одним байтом должны обрабатываться побайтно.

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

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