Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 2
1

Как сделать asm вставки в C++

04.06.2022, 16:35. Показов 507. Ответов 3
Метки asm, c++ (Все метки)

Author24 — интернет-сервис помощи студентам
  1. Целочисленная арифметика. Написать программу, реализующую на ассемблере алгоритм «3n + 1» (гипотеза Коллатца, Сиракузская проблема) и выдающую в качестве результата количество умножений на 3 и количество делений на 2.
  2. Команды работы с битами. На входе программы таблица истинности булевой функции от n переменных (каждый элемент таблицы задан одним битом, вся таблица задана только столбцом значений функции). Написать программу, определяющую, является ли функция самодвойственной.
  3. Арифметика с плавающей запятой. Написать программу, вычисляющую частичную сумму Hn гармонического ряда, и сравнивающую эту сумму с величиной ln n.
Вот мой первоначальный код, на C++ должен быть только ввод и вывод, все вычисления, циклы и тд должны быть на ассемблере .
Задание 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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int x, count1 = 0, count2 = 0;
    cout << "Введите число: ";
    cin >> x;
    while (x != 1){
        if (x % 2 == 0) {
            __asm {
                mov eax, x
                mov ebx, 2
                mov edx, 0
                mov ecx, count1
 
                div ebx
                add ecx, 1
 
                mov x, eax
                mov count1, ecx
            }
        }
        else {
            __asm {
                mov eax, x
                mov ebx, 3
                mov edx, 0
                mov ecx, count2
 
                mul ebx
                add eax, 1
                add ecx, 1
 
                mov x, eax
                mov count2, ecx
            }
            
        }
    }
    cout << "Количество делений на 2: " << count1 << endl;
    cout << "Количество умножений на 3: " << count2 << endl;
 
    system("pause");
}
Задание 2:
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
#include <iostream>
using std::cout;
using std::cin;
 
#include <string>
using std::string;
using std::getline;
 
#include <iomanip>
using std::endl;
using std::boolalpha;
 
#include <algorithm>
using std::remove;
 
#include <windows.h>
 
bool isSelfDualFunc(string vector)
{
    vector.erase(remove(vector.begin(), vector.end(), ' '),
        vector.end());
    for (size_t size(vector.length() - 1), i(size >> 1); i + 1; i--)
        if (vector[i] == vector[size - i])
            return false;
    return true;
}
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout << "Введите вектор значений функции:" << endl;
    string vector; getline(cin, vector);
    cout << "\nБулева функция самодвойственна: "
        << boolalpha << isSelfDualFunc(vector) << '\n' << endl;
    system("pause");
    return 0;
}
Задание 3:
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int number,Hn = 1;
    cout << "Введите n: ";
    cin >> number;
    for (int i = 2; i <= number; i++) {
        Hn += 1 / number;
    }
    if (Hn < log(number)) {
        cout << "Hn < ln(n)" << endl;
    }
    if (Hn > log(number)) {
        cout << "Hn > ln(n)" << endl;
    }
    if (Hn == log(number)) {
        cout << "Hn = ln(n)" << endl;
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2022, 16:35
Ответы с готовыми решениями:

Builder C++ и asm вставки
У меня есть задание: даны 2 массива (двумерный и одномерный), нужно умножить из на разные множители...

Профилирование, C++ и вставки ASM, прошу совета
есть собственно программа, вот часть кода где я и колдую int radix=10; int n = 1; double...

Как установить обработчик прерывания внутри asm-вставки?
Пишу dll-ку, в ее Main, есть такой кусок кода с asm-вставкой. Эта вставка ищет ImageBase модуля...

Как вывести в окно Edit результат работы asm вставки!
Здравствуйте, Уважаемые Форумчане! Столкнулся с такой проблемой, потратил несколько суток,разбил...

3
Модератор
 Аватар для D1973
9655 / 6261 / 2429
Регистрация: 21.01.2014
Сообщений: 26,694
Записей в блоге: 3
04.06.2022, 16:46 2
Air_Max, а Вам точно C++ Builder требуется? Все, что Вы тут привели - голый С++
0
0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 2
04.06.2022, 17:00  [ТС] 3
D1973, нет, я не указывал C++ Builder. Нужен "голый C++" с asm вставками.
0
 Аватар для SerVal
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
04.06.2022, 18:53 4
Цитата Сообщение от Air_Max Посмотреть сообщение
Нужен "голый C++" с asm вставками.
Вроде бы в Visual Studio для 32-х битных можно вставлять __asm
Или устанавить VS2005.
*но я не пробовал
0
04.06.2022, 18:53
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.06.2022, 18:53
Помогаю со студенческими работами здесь

Asm вставки
Не получается найти ошибку:(функция складывает 2 числа).Какие мысли? #include &lt;stdio.h&gt;...

Вставки на asm
Можно-ли использовать subj при программировании на directx? Меня обругивает...

ASM Вставки iDIV
Пишу NumX:=-40; MOV EAX,NumX MOV ECX,4 IDIV ECX MOV IntPart, EAX

Asm-вставки не работают
Собственно в этом и проблема. Компилятор матерится на ассемблерный код. И не важно где я пытаюсь...

Delphi + asm(Вставки), строки.
Всем приветь ! Тот заинтересовался asm вставками в Дельфи, ну понял нормально работы с цифрами ...

Asm вставки в AVR GCC
Есть у кого-то описание как писать эти _страшные_ вещи? Конструкция подразумевающая всего лишь swap...

Длинная арифметика (ASM-вставки в C++)
привет всем, нужна помощь в освоении асм вставок, нужно написать длинную арифметику сложения,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru