Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
5oundtech
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 42
#1

Выполнить с использованием ассемблерной вставки - C++

09.06.2014, 12:11. Просмотров 263. Ответов 4
Метки нет (Все метки)

Нужно подсчитать кол-во цифр в троке из 10 символов. Реализовать в виде ассемблерной вставки.
Подскажите пожалуйста как сделать!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 12:11     Выполнить с использованием ассемблерной вставки
Посмотрите здесь:

Как вывести числа в цикле ассемблерной вставки? - C++
Доброго времени, суток! Мне нужно вывести каждый результат получившийся в цикле, как это можно сделать? _asm { metka: .... ftp...

Получение значения элемента массива с помощью ассемблерной вставки - C++
У меня есть функция int kontr(char* str1, int len) { __asm{ lea esi, ; xor ebx, ebx; mov eax, ; //ну и дальше } ...

Определить размер кеша инструкций первого уровня с помощью ассемблерной вставки - C++
Не знал в каком разделе создать тему, но думаю этот вопрос будет понятен программистам С++. Встала такая задача: определить размер кеша...

С помощью ассемблерной вставки найти отрицательные элементы в массиве, и среднее положительных элементов - C++
Создать массив X. Определить среднее арифметическое положительных чисел, из отрицательных создать массив Y. При этом максимальное и...

С помощью ассемблерной вставки сложить a+b, вывести результат, в переменную bool записать было ли переполнение - C++
Нужно написать ассемблерную вставку Есть переменные unsigned char a,b; bool c; Как с помощью ассемблерной вставки сложить a+b,...

Выполнить сортировку одномерного массива методом вставки в список с вычислением адреса - C++
Приветствую друзья программисты. Нужна ваша неотъемлемая помощь. Выполнить сортировку одномерного массива X(100) методом вставки в...

Выполнить задачу с использованием рекурсии - C++
Есть одномерный массив длиной N, заполненный числами от -10 до 10. Найти максимальную сумму, если можно брать следующий элемент, или через...

Выполнить программу с использованием пользовательских функций - C++
Помогите переписать данную программу, но уже с использованием пользовательских функций. #include <vcl.h> #pragma hdrstop #include...

Выполнить задание с использованием функций и текстовых файлов - C++
Завал по лабам. Помогите плиз. Надо написать вот такую программку. По первой части мне все понятно. По второй смог написать только ввод(...

Подскажите пожалуйста как выполнить с использованием матрицы и сделать программу - C++
z = (a-b)+++-(a+++-3a++b) { cout << z << end;


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
09.06.2014, 12:13     Выполнить с использованием ассемблерной вставки #2
если уж совсем с асмом худо, то:
- пишешь на си,
- смотришшь ассемблерный листинг скомпилированного кода,
- пишешь на его основе вставку для своей программы.
5oundtech
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 42
09.06.2014, 12:15  [ТС]     Выполнить с использованием ассемблерной вставки #3
Kuzia domovenok, Не могли бы вы подсказать как посмотреть на ассемблерный листинг?
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
09.06.2014, 12:17     Выполнить с использованием ассемблерной вставки #4
Меню Debug>Step Over
Меню Debug>Windows>Disassembly
5oundtech
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 42
09.06.2014, 12:52  [ТС]     Выполнить с использованием ассемблерной вставки #5
Я написал на обычном с++, но хоть убейте не могу перевести на ассемблерную вставку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
setlocale(0,"rus");
    char c[10];
    cin >> c;
    int i = 0;
    int e = 0;
    for each(int b in c)
    {
        if(b <= 57 && b>=49)
            i++;
        else
            e++;
    }
    cout<< "i: " << i << endl; 
system("pause");
    
    return 0;
}
Добавлено через 12 минут
Впрочем не долго я мучился, и понял что всё довольно просто:
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
int main()
{
setlocale(0,"rus");
    char c[10];
    cin >> c;
    int i = 0;
    int e = 0;
    for each(int b in c)
    {
    //  if(b <= 57 && b>=49)
            _asm{
                mov eax,b
                cmp eax,49
                jge test2
                jmp end2
test2:
                cmp eax,57
                    jle end
                    jmp end2
end:
                add i,1
end2:
                add e,1
        }
    }
    cout<< "i: " << i << endl; 
system("pause");
Yandex
Объявления
09.06.2014, 12:52     Выполнить с использованием ассемблерной вставки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru