<<
>>

Дополнительные арифметические команды

Далее перечислены команды, входящие в группу дополнительных арифметиче- ских команд/ ш FSQRТ — вычисление квадратного корня из значения, находящегося в вершине стека сопроцессора — регистре SТ(О).
Команда не имеет операндов. Результат вычисления помещается в регистр ST(0). Следует отметить, что данная команда обладает определенными достоинствами. Во-первых, результат извлечения до- статочно точен, во-вторых, скорость исполнения чуть больше скорости выпол- нения команды деления вещественных чисел FDIV; 9 FABS — вычисление модуля значения, находящегося в вершине стека сопроцес- сора — регистре ST(0). Команда не имеет операндов. Результат вычисления по- мещается в регистр ST(0); И FCHS — изменение знака значения, находящегося в вершине стека сопроцессо- ра — регистре ST(0). Команда не имеет операндов. Результат вычисления поме- щается обратно в регистр ST(0). Отличие команды FCHS от команды FABS в том, что команда FCHS только инвертирует знаковый разряд значения в регистре SТ(0), . не меняя значения остальных битов.
Команда вычисления модуля FABS при на- личии отрицательного значения в регистре ST(0), наряду с инвертированием зна- кового разряда, выполняет изменение остальных битов значения таким обра- зом, чтобы в ST(0) получилось соответствующее положительное число. Ϊ FXTRACT — команда выделения порядка и мантиссы значения, находящегося в вершине стека сопроцессора — регистре ST(0). Команда не имеет операндов. Результат выделения помещается в два регистра стека — мантисса в ST(0), а по- рядок в SТ(1). При этом мантисса представляется вещественным числом с тем же знаком, что и у исходного числа, и порядком равным нулю. Порядок, поме- щенный в SТ(1), представляется как истинный порядок, то есть без константы смещения, в виде вещественного числа со знаком и соответствует величине Р формулы (17.1).
На последнюю команду следует обратить особое внимание, так как она позво- ляет выделить и затем по отдельности проанализировать порядок и мантиссу чис- ла, содержащегося в вершине стека. Для того чтобы разобраться с тонкостями ра- боты этой команды, изучите листинг 17.5. Исходное десятичное число для этой программы равно 45,56. Оно взято из рассмотренного ранее примера по определе- нию десятичного числа в расширенном формате (см. раздел «Форматы данных»).

Листинг 17.5. Исследование работы команды FXTRACT

Листинг 17.5(продолжение) Введите эту программу, получите исполняемый модуль и загрузите его в от- ладчик Turbo Dеbugеr. Раскройте на весь экран окно Numeric processor, чтобы на- блюдать за содержимым регистров стека сопроцессора в шестнадцатеричном фор- мате. В пошаговом режиме проследите за теми действиями, которые выполняет команда FXTRACT. Вы обнаружите, что команда FXTRACT выделяет характеристику вещественного числа в расширенном формате по формуле (17.3) вычисляет ис- тинный порядок числа, представляет его как число со знаком и заносит в регистр ST(1). He забывайте, что это порядок нормализованного числа в двоичном форма- те, поэтому для нашего примера он равен 5 (в формуле (17.2) N = 2). Далее команда FXTRACT формирует нулевой порядок значения в ST(0), занося в поле характеристи- ки значение 3fffh(16383ш). На этом ее работа заканчивается. Следующие за FXTRACT команды сохраняют значения мантиссы и порядка в памяти как самостоятельные значения. Восстановить исходное значение можно командой масштабирования FSCALE, которая к тому же позволяет легко производить умножение на целочис- ленную степень числа 2.

Эта команда изменяет порядок значения, находящегося в вершине стека сопроцессора — регистре ST(0), на величину в ST(1). Команда не имеет операндов. Величина в ST(1) рассматривается как число со знаком. Его при- бавление к полю порядка вещественного числа в ST(0) означает его умножение на величину 2st(1),тo есть ST(0) = ST(0) ∙ 2st(1). С помощью данной команды удобно масштабировать на степень двойки неко- торую последовательность чисел в памяти. Для этого достаточно поочередно за- гружать числа последовательности в вершину стека, после чего применять коман- ду FSCALE и сохранять значения обратно в памяти. Команда FSCALE по алгоритму работы является обратной команде FXTRACT. Чтобы убедиться в этом, модифици- руем листинг 17.5, превратив его в листинг 17.6. Листинг 17.6. Исследование работы команды FSCALE ;сегмент данных ;y_real=4004 b63d 70a3 d70a 3d71 ;начало процедуры main ;st(0)=4004 b63d 70a3 d70a 3d71 (45.56) fхtrасt ;st(l)=4θθi аООО ... 0000 (5) ;st()=Зfff bбЗd 7ОаЗ d7θа Зd71 (1.42375) fsсаlе ;st(
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Дополнительные арифметические команды:

  1. 3. Равнение на среднее арифметическое.
  2. Определение команды.
  3. § 4.5. Деятельность команд в организации
  4. Признаки команды.
  5. Пример настройки и реабилитации в футбольной команде
  6. Работа с другими командами
  7. Четыре шага по созданию эффективной команды
  8. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  9. Кто становится лидером команды
  10. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  11. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
  12. §16. ОБЩЕСТВО С ДОПОЛНИТЕЛЬНОЙ ОТВЕТСТВЕННОСТЬЮ
  13. 50. Общество с дополнительной ответственностью
  14. 4. Общество с дополнительной ответственностью
  15. 3. Общество с дополнительной ответственностью
  16. 2.3.1. Основные и дополнительные чакры