Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler_konspekt_1.doc
Скачиваний:
16
Добавлен:
10.11.2019
Размер:
274.94 Кб
Скачать
  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.

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