0 / 0 / 0
Регистрация: 16.03.2015
Сообщений: 35
1
C/C++

Вычислить арифметическое выражение

20.03.2015, 21:47. Показов 1045. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.Начала осваивать встроенный ассемблер. В программе нужно реализовать вычисление целочисленного выражения (2*с-d+23)/(a/4 -1).Почему-то выводит не правильный результат.Что не так?
C++
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
42
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <tchar.h>
#include <list>
using namespace std;
 
int f(int a, int c, int d) {
 
    _asm{
 
        mov eax, a
            mov ecx, c
            mov edx, d
            ; mov ebx, b
 
            mov ebx, 4
 
            ; готовимся к делению
            cdq; eax == > edx:eax
            idiv ebx; < eax >= a / 4
            dec eax; < eax >= a / 4 - 1
            push eax; в стеке a / 4 - 1 
 
mov eax,2;<eax>=2
imul ecx;<eax>=2*c
sub eax,edx;<eax>=2*c-d
add eax,23;<eax>=2*c-d+23
 
;готовимся к делению
pop ebx;<eax>=a/4-1
cdq ;eax ==><edx:eax>=2*c-d+23
idiv ebx;<eax>=(2*c-d+23)/(a/4-1)
}
 
}
 
 
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{ int a,c,d;
cin>>a>>c>>d;
 
cout<<f(a,d,c)<<endl;
system("pause");
return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2015, 21:47
Ответы с готовыми решениями:

Вычислить арифметическое выражение
Подскажите пожалуйста а вот если мне например надо уровнение возвести в квадрат (2+n)в квадрате...

Вычислить арифметическое выражение
Составьте программу, вычисляющую значение арифметического выражения своего варианта. Номер варианта...

Вычислить арифметическое выражение
Прошу помощи у знающих людей. Начал практиковать ассемблер, решать примеры и никак не могу...

Вычислить арифметическое выражение
Здравствуйте господа, дали лабораторную работу на дистанционном обучении, нужна помощь! Никогда...

1
601 / 396 / 72
Регистрация: 29.03.2013
Сообщений: 827
21.03.2015, 09:17 2
Утка, команда cdq
Цитата Сообщение от Утка Посмотреть сообщение
cdq; eax == > edx:eax
затрет содержимое edx результатом своего выполнения, тоже самое сделают и последующие команды idiv и imul, поэтому, если очень сильно хочется поместить переменную d в регистр edx, необходимо это делать непосредственно перед вычитанием, а не в начале вставки.
1
21.03.2015, 09:17
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2015, 09:17
Помогаю со студенческими работами здесь

Вычислить арифметическое выражение
Нужно вместо уравнения (A*2+B*C)/(D-3) подставить уравнения (1005*D+B)/С*A в коде. .model...

Вычислить арифметическое выражение
Разработать программу в exe. формате вычисляющую значение арифметического выражения (((a^2...

Вычислить арифметическое выражение
Здравствуйте! Я профан в ассемблере, но мне нужно решить задачку. Есть уравнение: Z = XY - X^2 +...

Вычислить арифметическое выражение
проверьте правильно написана прога? для выражения (40-5)*8-(15+6)/30= (ответ 8,63) И объясните...

Вычислить арифметическое выражение
Помогите решить уравнение на ассемблер (4*b/c-1)/(12*c+a-b) a=1 b=2 c=1

Вычислить арифметическое выражение
Я в ассемблере полный чайник и по этому решение даже данной елементарной задачи мне не по силам. А...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
В чем отличие между INNER JOIN и OUTER JOIN
bytestream 22.01.2025
В современных базах данных информация часто распределена между множеством взаимосвязанных таблиц, что делает операции объединения JOIN неотъемлемой частью работы с SQL. Эти операции позволяют. . .
Как сделать первую букву заглавной в JavaScript
bytestream 22.01.2025
JavaScript предоставляет разработчикам множество инструментов для эффективной работы с текстовыми данными. Одной из часто встречающихся задач при обработке строк является преобразование первой буквы. . .
Что такое Big O нотация и алгоритмическая сложность
bytestream 22.01.2025
Введение в алгоритмическую сложность В мире разработки программного обеспечения эффективность алгоритмов играет crucial роль в создании качественных приложений. Алгоритмическая сложность. . .
Как решать конфликты слияния (merge) в Git
bytestream 22.01.2025
Конфликты слияния в системе контроля версий Git возникают в ситуациях, когда две или более ветки разработки содержат несовместимые изменения в одних и тех же участках кода. Эти конфликты представляют. . .
Как использовать регулярные выражения
bytestream 22.01.2025
Регулярные выражения представляют собой мощный инструмент для работы с текстовыми данными, который позволяет осуществлять поиск, проверку и манипуляцию строками на основе определенных шаблонов. Этот. . .
Как выйти из Vim
bytestream 22.01.2025
Vim (Vi IMproved) представляет собой один из самых влиятельных текстовых редакторов в истории компьютерной индустрии, эволюционировавший из своего предшественника Vi, созданного Биллом Джоем в 1976. . .
NoSQL базы данных: что это такое и какие существуют
bytestream 22.01.2025
В современную эпоху цифровой трансформации объемы данных растут экспоненциально, создавая новые вызовы для традиционных систем управления базами данных. NoSQL (Not Only SQL) представляет собой. . .
Обновление исследования от команды MCM (январь 2025 г.)
Programma_Boinc 22.01.2025
Обновление исследования от команды MCM (январь 2025 г. ) Мы продолжаем изучать молекулярные сигнатуры, связанные с раком легких, с текущим фокусом на GCM1, факторе транскрипции, участвующем в. . .
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru