|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
||||||
TASM Цикл с использованием сопроцессоров12.12.2023, 16:22. Показов 1759. Ответов 14
Нужно подключить сопроцессор на Turbo Assembler и вычислить значение выражения y=5x^4-3x^3+x-1 на отрезке a=0.5, b=1.
Код написан, но не выполняется цикл, он просто выдает ошибку Relative jump out of range by 0027h bytes. Почитала об этой ошибке, перенесла сравнение поближе, чтобы не было такого скачка, но он просто пропускает сравнение и идет дальше по программе. Программа вот
0
|
||||||
| 12.12.2023, 16:22 | |
|
Ответы с готовыми решениями:
14
Взаимодействие сопроцессоров с центральным процессором Составить программу с использованием циклов For (цикл с параметром) и Repeat (цикл с постусловием) Определить количество математических сопроцессоров |
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||||||
| 12.12.2023, 16:31 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
||||||
| 12.12.2023, 16:46 [ТС] | ||||||
|
qbfan, получилось, спасибо, немного переделала смысл, но оно заработало
Но появилась другая проблема, теперь вместо Х загружается NAN
0
|
||||||
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
||||||
| 12.12.2023, 17:05 | ||||||
Добавлено через 5 минут Или на втором цикле загружается NAN ? Где именно ?
0
|
||||||
|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
|
| 12.12.2023, 17:49 [ТС] | |
|
qbfan, NAN загружался на втором цикле при загрузке x и y, но вставила в начало эти 3 команды и вроде заработало, но почему-то значение у =1, когда начинается второй цикл, хотя по логике должно быть 3
Добавлено через 27 минут Если что, у изначально y=4, потом я его значение меняю на 3, и оно должно таким и оставаться. потому что оно не меняется дальше, но уже во второй итерации оно почему-то =1
0
|
|
|
Модератор
|
|||||||||||
| 12.12.2023, 18:09 | |||||||||||
|
weewew, Вы напрасно используете возведение в степень при помощи логарифма+экспоненты, ведь в формуле обычный полином, который на раз вычисляется по схеме Горнера.
Добавлено через 9 минут И ещё. Когда решал подобные задачки перед началом цикла в комментариях делал роспись содержимого регистров сопроцессора (конечно, по мере вычислений регистры смещаются, но хоть какая-то опора есть).
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
|
| 12.12.2023, 23:07 [ТС] | |
|
ФедосеевПавел, к сожалению, это часть задания, которую нельзя выкинуть
И сейчас самой большой проблемой является передача значений х и у, которые почему-то не только сбрасываются, но и у = 1
0
|
|
|
Модератор
|
|||||||||||
| 13.12.2023, 07:38 | |||||||||||
|
Предлагаю пойти по пути постепенного наращивания функционала.
Пусть y(x)=2x - потом нарастим или перенесём вычисления y(x) в подпрограмму. Не понимаю задание "вычислить значение выражения y=5x^4-3x^3+x-1 на отрезке a=0.5, b=1" - это сколько раз нужно вычислять и для каких значений x? Ну, предположим, что вычислять для x от a=0.5 до b=1.0 с шагом 0.1. Тогда определим
a нет смысла хранить в стеке (регистров) FPU, а значения b и step можно и загрузить (для будущих вычислений).Получим код цикла с постусловием
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
||||||
| 13.12.2023, 11:18 [ТС] | ||||||
|
ФедосеевПавел, я ночью покопалась ещё сама в коде, и получилось передавать значения х и у. Но почему-то, когда проходит второй цикл программа без проблем выполняет вычисление 5*х^4, но после, когда я пытаюсь вывести х, оно выводит NAN. Вот исправленный код
0
|
||||||
|
Модератор
|
||||||||||||||||
| 13.12.2023, 21:02 | ||||||||||||||||
|
Если всё же воспользоваться схемой Горнера, то получится совсем короткая программа
Кликните здесь для просмотра всего текста
В Вашей программе вижу ошибку - переход по результатам сравнения должен быть как для чисел без знака - jb, jbe, je, ja, jae. Это такая особенность fcom - не выставляет значение флага знака и jl, jg работать не будут. Добавлено через 18 минут Для сравнения - нужно объявить переменную и сравнивать с её помощью
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
|
| 17.12.2023, 22:52 [ТС] | |
|
ФедосеевПавел, Простите за отсутствие, ваша программа и правда работает, спасибо, но, к сожалению, по условию курсовой необходимо реализовать именно метод, скинутый выше.
Я попробовала ваше исправление, но, он не заработало, почему-то Х все равно равен NAN
0
|
|
|
Модератор
|
||||||
| 18.12.2023, 06:17 | ||||||
|
weewew, показывайте попытку - я же не обо всём могу догадаться.
Пока предварительно предполагаю, что проблема в том, что переполняется стек сопроцессора из-за того, что после вычисления показательной функции (возведения в степень) остаются заняты два регистра, а не один (только результат). Но всё нужно проверять... Добавлено через 4 минуты Я как-то делал вычисление показательной функции в отдельной подпрограмме - такой вариант подойдёт? Т.е.
Такой вариант приемлем?
0
|
||||||
|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
||||||
| 18.12.2023, 21:08 [ТС] | ||||||
|
ФедосеевПавел, вот код моей программы, пока тоже нерабочий. И по поводу вашего предложения, т.е. вы предлагаете ов отдельную функция поместить вычисления?
0
|
||||||
|
Модератор
|
|||||||
| 19.12.2023, 06:16 | |||||||
Сообщение было отмечено weewew как решение
РешениеКликните здесь для просмотра всего текста
Вашу программу вечером посмотрю - думаю, что при вычислениях полностью заполняется стек сопроцессора и это приводит к ошибке.
1
|
|||||||
|
0 / 0 / 0
Регистрация: 07.11.2022
Сообщений: 23
|
||||||
| 19.12.2023, 15:35 [ТС] | ||||||
|
ФедосеевПавел, Спасибо большое, попробовала вашу программу, она тоже заработала.
Немного покопалась в своей программе, решила в начале просто очистить все поля, чтобы освободить и всё заработало
0
|
||||||
| 19.12.2023, 15:35 | |
|
Помогаю со студенческими работами здесь
15
Intel опубликовала спецификации новых сопроцессоров серии Xeon Phi цикл с использованием while Переписать цикл с одним использованием for с использованием массивов (ЦИКЛ-ДЛЯ) Цикл с использованием DOM дерева Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|