Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для GSUR
3 / 3 / 3
Регистрация: 27.05.2010
Сообщений: 66

Итеративное вычисление корня сопроцессором

26.05.2012, 10:58. Показов 2431. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые. Необходимо сопроцессором вычислить квадратный корень положительного целого числа, имеется формула Xn+1=(1/2)*(Xn+ A/Xn), X0 я поставил 1.0. Процедура вывода вещественного числа работает корректно (проверено простым переносом вещественной переменной на вершину стека сопроцессора).
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
.MODEL small
.STACK 10h
.DATA
 
Hello db 'Put integer number: ', 13, 10, '$'
a dq 4
x dq 1.0
k dq 2.0
e dq 2.0001
 
.CODE
.386
 
START:
    mov ax, @data
    mov ds, ax
 
    mov ah, 09h
    mov dx, offset Hello
    int 21h
 
    mov edx, dword ptr e
    
 sopj:
    FINIT
          FLD x 
      FDIV a 
      FADD x
      FDIV k
      FSTP x
    mov eax, dword ptr x
    cmp eax, edx
    ja sopj
 
    push 10
    call outfloat    
    
    xor ax, ax
    int 16h 
    mov ah, 4ch
    int 21h
Прошу помощи
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2012, 10:58
Ответы с готовыми решениями:

Вычисление квадратного корня (КР580)
Помогите составить программы: 1) решение данной функции y=корень из x; 2) Дана высота h найти ускорение обьекта падающего с данной...

вычисление квадратного корня из 16разрядного числа
Доброго времени суток! нужна помощь в создании программы на TASM. Цель: вычислить корень числа введенного с клавиатуры. Ограничение по...

Работа с сопроцессором
Нужно разобраться с сопроцессором для P386. Подскажите пожалста ссылочки, где реально описаны все команды сопроцессора. Что не гуглил - все...

5
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
26.05.2012, 11:52
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
.model small
.data
 
t dd 0.5 ; 1/2
a dd 16 ; число
n dd 10 ; число шагов
x dd ? ; результат
 
.code
.386
start:
finit
mov ax, @data
mov ds, ax
 
fild a
fst x
fld t
 
mov ecx, n
@1:
fld st(1)
fld x
fld st
fdivp st(2), st
faddp st(1), st
fmul st, st(1)
fstp x
loop @1
fstp st(1)
fstp
xor ax, ax
int 16h
 
@q:
.exit
 
end
1
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
26.05.2012, 13:39
vital792, а можно работу с функциями основного процессора совмещать с функциями сопроцессора?
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
26.05.2012, 13:46
Цитата Сообщение от programmisto Посмотреть сообщение
можно работу с функциями основного процессора совмещать с функциями сопроцессора?
конечно. Да и вообще, начиная с 486 сопроцессор встроен в центральный процессор, так что разделять эти блоки вообще бессмысленно
1
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
26.05.2012, 13:52
vital792, расскажи, как прочитать целую часть дробной переменной Double в регистр EAX.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
26.05.2012, 14:22
Цитата Сообщение от programmisto Посмотреть сообщение
как прочитать целую часть дробной переменной Double в регистр EAX.
напрямую никак, только использовать память или стек:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
a dq 7.5
dd ?
.code
.386
start:
finit
mov ax, @data
mov ds, ax
 
lea edi, a+8
fld a
fistp dword ptr [edi]
mov eax, [edi]
Результат в регистре eax будет 8, т.к. извлечение будет по правилам округления. А если просто обрезать дробную часть, то можно так:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a dq 7.5
dd ?
.code
.386
start:
finit
mov ax, @data
mov ds, ax
 
lea edi, a+8
fld a
fld1
fld st(1)
fprem
fsubp st(2), st
fstp st
fistp dword ptr [edi]
mov eax, [edi]
А вообще, это уже оффтоп пошел. Если будут еще вопросы, лучше создай отдельную тему
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2012, 14:22
Помогаю со студенческими работами здесь

Вывести на экран график функции
Вот код программы, которая запускается в tasm и выводит на экран график функции y=tg(x)-(1/x). Необходимо переделать её для функции...

Работа с сопроцессором
Подскажите пожалуйста, каким образом можно с помощью команд сопроцессора вычислить такое выражение: 10*ln(x-1)? Особенно не могу...

Деление сопроцессором вещественых чисел на целые и наоборот
ребят,такая ситуация.почему-то при делении всегда получается 0.пробовала много вариантов, результат везде один и тот же.помогите...

Работа с сопроцессором - сортировка и нахождение минимального элемента массива
Всем привет!Есть такая задача-дан одномерный массив,его сортируем,находим минимальный элемент и т.п. Теперь это нужно сделать через...

Вычисление квадратного корня
Доброго времени суток! Необходимо реализовать вычисление квадратного корня из 36 по двум алгоритмам 1)1 36-1=35 2 35-3=32 3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru