0 / 0 / 1
Регистрация: 18.05.2015
Сообщений: 10
1

Вычисление целочисленного арифметического выражения (Ассемблерная вставка)

14.04.2016, 20:55. Показов 534. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую. Форумчане, покажите на ошибку в коде. Ответ не совпадает с реальным. Сама функция формула: (2*c/a - b*b)/(b + a - 1); И если можно исправления с комментариями, не совсем понимаю, как ведут себя регистры.
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
42
43
44
45
46
47
48
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
// подключаем необходимые библиотеки
#include "stdafx.h"
#include <stdio.h> // стандартный ввод/вывод
#include <iostream> // потоковый ввод/вывод
// 22) (2*c/a - b*b)/(b + a - 1);
int calc(int a,  int b, int c)
{
    int result = 0;
    __asm {
        mov eax, a
        mov ebx, b
        mov ecx, c
        add ebx, eax
        dec ebx; общий делитель
        push ebx; положили в стек
        mov ebx, b
        imul ebx, ebx
        mov edx, 2
        imul edx, ecx
        cdq
        idiv eax
        sub edx, ebx
        pop ebx
        cdq
        idiv ebx
        mov result, eax
    }
    return result; // возвращаем результат вычисления выражения
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a, b, c;
    std::cout << "a = " << std::endl;
    std::cin >> a;
    std::cout << "b = " << std::endl;
    std::cin >> b;
    std::cout << "c = " << std::endl;
    std::cin >> c;
    int res = calc(a, b, c);// вычисление выражения
    printf("%d", res);// вывод результата вычисления выражения
    system("PAUSE");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2016, 20:55
Ответы с готовыми решениями:

Вычисление целочисленного арифметического выражения (Ассемблерная вставка)
Пожалуйста. Помогите. Напишите, пожалуйста, ассемблеровскую вставку (вообще не понимаю как она...

Вычисление целочисленного арифметического выражения (Ассемблерная вставка в C++)
помогите пожалуйста написать вставку для вычисления значения следующего выражения c2-2((a·b) Mod...

Вычисление целочисленного арифметического выражения (Ассемблерная вставка)
Мой проект должен решать уравнение ;(3*c+8-d)/(a-c/4) для беззнаковых чисел на си и...

Вычисление целочисленного арифметического выражения (Ассемблерная вставка)
имеется код, который необходимо подкорректировать, с чем не справляюсь. что бы не менял из значений...

1
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
15.04.2016, 02:43 2
(2*c/a - b*b)/(b + a - 1)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mov ebx,b
add ebx,a
dec ebx;ebx=b+a-1
mov eax,c
cdq
shld edx,eax,1
shl eax,1;edx:eax=2*c
idiv a;eax=2*c/a
mov ecx,eax
mov eax,b
neg eax;eax=-b
imul b;edx:eax=-b*b
add eax,ecx
adc edx,0;edx:eax=2*c/a - b*b
idiv ebx;eax=(2*c/a - b*b)/(b + a - 1)
0
15.04.2016, 02:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2016, 02:43
Помогаю со студенческими работами здесь

Вычисление целочисленного арифметического выражения (Ассемблерная вставка в C++)
Добрый вечер, задание - вычислить выражения (тип данных signed byte) (44/a*b+1)/(b-a*9/2) a=100...

Вычисление целочисленного арифметического выражения (Ассемблерная вставка)
Где ошибка?((( v=(((z-4)*y+x)/(7*x-6))-1, где y,v-слова x,z-байты short int vas(short int...

Вычисление целочисленного арифметического выражения (Ассемблерная вставка)
Приветствую! Есть небольшая проблемка, во вставке должно считаться значение выражения (A * X^3 + B...

Вычисление арифметического выражения (ассемблерная вставка)
v=-3-\frac{ (x+5)(y-4)-3}{ z+3 } где z-байт, x,y,v-слова Решила сначала начать с числителя, потому...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru