Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 837; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.007 с.) |