Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Округляет значение ST(0) до целого числа в соответствии с режимом округления, заданным битами RC.Содержание книги
Поиск на нашем сайте
8)
Умножает ST(0) на два в степени ST(1) и записывает результат в ST(0). Выполняет вычисление: ST(0)= ST(0)*2ST(1). Значение ST(1) предварительно округляется в сторону нуля до целого числа. 9)
Команда F2XM1 возводит 2 в степень X, но только если X меньше или равен 1/2, то есть команда возводит 2 в степень, равную ST(0), и вычитает 1. Результат сохраняется в ST(0). Значение ST(0) должно лежать в пределах от -0,5 до 0.5, иначе результат не определен.
ST(0)=2ST(0) -1; -0,5<ST(0)<0,5 29,97=29+0,97/2+0,97/2 =29 *20,97/2 *20,97/2 10)
ST(1) = ST(1)*log2(ST(0)), верхний элемент выталкивается из стека. Константы FPU
Команды управления FPU
Команды копируют содержимое CR в приемник (16-битная переменяя). Команда FSTCW, в отличие от FNSTCW, проверяет наличие произошедших и необработанных исключений и обрабатывает их до выполнения.
Копирует содержимое источника (16-битная переменная) в регистр CR.
Пример 3: Сложить два числа (В+С), используя сопроцессор. (real2.asm) .386 .model flat, stdcall includelib import32.lib extrn ExitProcess:PROC extrn MessageBoxA:PROC .data Ttl db "Arifmeticheskoe viragenie",0h Msg db 10 dup(' '),0h db 0h B DW 10 C DW 3 Y dd? .code start: finit FILD B FILD C FADD fist Y mov eax,Y
xor edi,edi xor esi,esi mov si,10 mov edi,9 lp2: xor edx,edx div esi xchg eax,edx add al,'0' mov byte ptr [Msg+edi],al xchg eax,edx dec edi or eax,eax jne lp2
push 0h push offset Ttl push offset Msg push 0h call MessageBoxA push 0h call ExitProcess end start
Пример 4. Вычислить 10х =y, x=3. (real4.asm) 1) 2) Величину log210 – можно задать как константу с помощью команды FLDL2T. 3) Команда F2XM1 возводит 2 в степень X, но только если X меньше или равен 1/2, то есть команда возводит 2 в степень, равную ST(0), и вычитает 1. Результат сохраняется в ST(0). Значение ST(0) должно лежать в пределах от -0,5 до 0.5, иначе результат не определен. 4) Команда FSCALE умножает ST(0) на два в степени ST(1) и записывает результат в ST(0). Значение ST(1) предварительно округляется в сторону нуля до целого числа. 5) если х=3, то:
.386 .model flat, stdcall includelib import32.lib extrn ExitProcess:PROC extrn MessageBoxA:PROC .data Ttl db "Arifmeticheskoe viragenie",0h Msg db 10 dup(' '),0h db 0h X Dd 3 Y dd? OLD_CW DW? NEW_CW DW?
.code start: finit FILD X; загрузить степень в стек ST(0) FLDL2T;загрузить константу log2(10) в ST(0) FMULP ST(1),ST(0); умножение с выталкиванием из стека 3*log210=9.965784284662087 FNSTCW OLD_CW; сохранить регистр CR без ожидания FWAIT; ожидание готовности FPU MOV AX,OLD_CW; значения регистра управления сохраняем в АХ AND AX,NOT 0C00H; ax not 0000 1100 0000 0000=>ax and 1111 0011 1111 1111 OR AX,0400H; ax or 0000 0100 0000 0000 MOV NEW_CW,AX FLDCW NEW_CW; загрузить регистр CR из NEW_CW FLD1; загрузить вещественное число 1,0 в стек FCHS; изменяет знак ST(0), превращая положительное число в ; отрицательное, и наоборот. FLD ST(1); загрузить вещественное число (x*log2(10)) в стек FRNDINT; Округляет значение ST(0) до целого числа в соответствии с ; режимом округления, заданным битами RC. ; INT(9.965784284662087)=9 FLDCW OLD_CW; Загрузить регистр CR из OLD_CW FXCH ST(2); Обмен местами содержимого регистра ST(0) и ; источника ST(2). Если операнд не указан, ; обменивается содержимое ST(0) и ST(1). FSUB ST(0),ST(2); Вычитание вещественных чисел 9,965784285-9=0.965784285 FSCALE; умножает содержимое ST(0) на 2 в степени, ; содержащейся в ST(1)= -1. ; (1/2=2**(-1))=>0.965784284662087/2 F2XM1; возводит 2 в степень, равную ST(0), и вычитает 1. ; Результат сохраняется в ST(0). Значение ST(0) должно ; лежать в пределах от -0,5 до +0,5, иначе результат не ; определен. FSUBRP ST(1),ST(0); выполняют вычитание приемника из источника, а не ; источника из приемника.=>0.39754248593736856+1 FMUL ST(0),ST(0); умножение источника ST(0) на приёмник ST(0); ; 2**(0.482892142)*2**(0.482892142) FSCALE; Умножает ST(0) на два в степени ST(1) и записывает ; результат в ST(0). FIST Y mov eax,Y xor edi,edi xor esi,esi mov si,10 mov edi,9 lp2: xor edx,edx div esi xchg eax,edx add al,'0' mov byte ptr [Msg+edi],al xchg eax,edx dec edi or eax,eax jne lp2 push 0h push offset Ttl push offset Msg push 0h call MessageBoxA push 0h call ExitProcess end start Блок-схема подсчета выражения: y=10x
Лабораторная работа №12.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 622; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.14.12 (0.007 с.) |