Дополнительные арифметические команды
Листинг 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(
Еще по теме Дополнительные арифметические команды:
- 3. Равнение на среднее арифметическое.
- Определение команды.
- § 4.5. Деятельность команд в организации
- Признаки команды.
- Пример настройки и реабилитации в футбольной команде
- Работа с другими командами
- Четыре шага по созданию эффективной команды
- ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
- Кто становится лидером команды
- Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
- Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
- §16. ОБЩЕСТВО С ДОПОЛНИТЕЛЬНОЙ ОТВЕТСТВЕННОСТЬЮ
- 50. Общество с дополнительной ответственностью
- 4. Общество с дополнительной ответственностью
- 3. Общество с дополнительной ответственностью
- 2.3.1. Основные и дополнительные чакры