0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 81
|
||||||
Вычислить значение выражения: ((2*c)-(d/3)) / (b-(a/4))18.09.2017, 23:18. Показов 19808. Ответов 28
Метки нет Все метки)
(
Имеется пример ((2*c)-(d/3)) / (b-(a/4))
При клике на Btn1 значение выводится в Edit1 В качестве тестовых чисел я взял: a - 20 b - 10 c - 10 d - 30.Итоговый ответ должен получиться (20-(30/3))/(10-(20/4))=10/5=2 Использую ассемблерную вставку в Delphi
Так же готов выслушать советы по оптимизации, возможно где-то сделал лишние операции.
0
|
18.09.2017, 23:18 | |
Ответы с готовыми решениями:
28
Вычислить значение выражения A*B-C*D Вычислить значение выражения Вычислить значение выражения |
Модератор
![]() ![]() |
|
18.09.2017, 23:31 | |
с - тип word = 2 байта
bl - регистр = 1 байт И в целом - вычисления некорректны - результат умножения двух байтов - слово. И слово делится на байт, а не байт на байт. Прочтите раздел о умножении и делении, например в Электронный учебник Добавлено через 1 минуту Сейчас попробую пример для числителя набрать.
0
|
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 81
|
|||||||
18.09.2017, 23:35 [ТС] | |||||||
По поводу вычислений, формулы брал на стороннем сайте и тестировал некоторые формулы отдельно, работало по отдельности, в совокупности пока не видел ошибок с вычислениями т.к проблема с типами.
0
|
Модератор
![]() ![]() |
||||||
18.09.2017, 23:37 | ||||||
cbw . Описание - в электронном учебнике. Назначение - выровнять разрядность операндов.
1
|
Модератор
![]() ![]() |
||||||
19.09.2017, 00:12 | ||||||
Т.к. вы делаете во встроенном ассемблере, то применяйте встроенные средства (
inttostr ).Только придётся перейти на тип переменных longint и соразмерные регистры eax, ebx, ecx и пр. Тогда числитель будет
0
|
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 81
|
||
19.09.2017, 00:51 [ТС] | ||
в 10 и 11 мы помещаем регистры в стек, в вершине стека edx = c*2? , ниже eax = c*2? , подскажите, слегка запутался(с учебником ознакомился, но не совсем понял про пару регистров), что пойдёт в эти регистры? c*2? В 19 строчке из вершины стека(edx=...) мы кладём в ebx,далее eax кладём в ecx Последние строчки уже зависят от ваших ответов, выглядит элементарно, но запутался.Попробовал скомпилировать данный код, взяв за c - 10, за d - 30, ответом по итогу должно быть 10(т.к пока что считаем числитель), но выходит 0, прокомментируйте, пожалуйста.
0
|
Модератор
![]() ![]() |
|
19.09.2017, 06:49 | |
Результат умножения - регистровая пара
edx:eax .После вычисления (2*c) результат помещается в стек - т.к. регистр edx будет затёрт при вычислении (d/3). Можно поместить и в свободные регистры (edi, esi). Вычисляется (d/3). Результат приводится к размеру 8 байт (cdq). Считываются из стека результаты предыдущего вычисления (2*c). Вычитание регистровой пары из другой (с заёмом). Далее я ошибся, т.к. результат вычитания в (edx:ecx).
0
|
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 81
|
|||||||
19.09.2017, 14:26 [ТС] | |||||||
0
|
Модератор
![]() ![]() |
|
19.09.2017, 18:19 | |
Что-то всё равно не так. В некоторых местах усечение результата, а в некоторых (32-33) забываете, что
idiv ebx означает не eax/ebx, а (edx:eax)/ebx.Пока не усвоите твёрдо команды - не беритесь за оптимизацию.
0
|
Модератор
![]() ![]() |
|
20.09.2017, 07:11 | |
Вечером приду - наберу.
0
|
Модератор
![]() ![]() |
||||||
20.09.2017, 21:37 | ||||||
0
|
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 81
|
|
02.10.2017, 23:20 [ТС] | |
ФедосеевПавел, подскажите, пожалуйста, каким образом в ассемблере(встроенном в дельфи, в частности) можно, либо исключить возможность деления на ноль, либо при делении на 0 вывести Message('Деление на ноль')?
Т.е когда знаменатель у меня равен 0, мне выводит Division by zero, что логично, как поступить в данной ситуации, что можете порекомендовать?
0
|
Модератор
![]() ![]() |
|
03.10.2017, 00:57 | |
Проверять делитель перед операцией деления.
0
|
Модератор
![]() ![]() |
||||||
03.10.2017, 19:41 | ||||||
А что делать - вы выбираете иди самостоятельно или преподаватель определяет.
0
|
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 81
|
|
03.10.2017, 19:48 [ТС] | |
ФедосеевПавел, ок, изучу.
Понимаете, проблема в том, что я спрашивал каким образом это реализовать, не факт реализации, а команды(с помощью которых это можно сделать) или советы, но меня «мягко» послали на самостоятельное обучение, увы, гуглил и на английском и на русском, но плохо получилось разобраться, в целом, спасибо, посмотрю немного позже.
0
|
03.10.2017, 19:48 | |
Помогаю со студенческими работами здесь
20
Вычислить значение выражения Вычислить значение выражения Вычислить значение выражения Вычислить значение выражения Вычислить значение выражения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
|
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
|
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
|
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
|
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
|
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
|
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
|
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
|
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
|
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
|