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

Вызов функций на Ассемблере в программе на С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Графы http://www.cyberforum.ru/cpp-beginners/thread306663.html
помогите с реализацией алгоритма Дейкстры для нахождения расстояния от узла 1 в каждый узел. матрица весов такая W={{0,4,0,3,1},{4,0,2,0,2},{0,2,0,1,6},{3,0,1,0,1},{1,2,6,1,0}}
C++ Убрать предупреждения на break в операторе switch(...) Никак не пойму, как можно перекроить этот код: //*************************************************************************** unsigned long flength (unsigned short type, unsigned long length) { switch(type) { case 1: return (sizeof(BYTE)*length); break; http://www.cyberforum.ru/cpp-beginners/thread306662.html
C++ Написать программу на удаляющую из строки символы с5 по 12.
Написать программу на удаляющую из строки символы с5 по 12. P.S. Убедительная просьба надо написать на С а не на С++
Найти количество строк матрицы, среднее арифметическое элементов которых меньше заданной величины C++
Преобразовать матрицу заданную в обычном виде в треугольную!(методом гаусса) Найти количество строк, среднее арифметическое элементов которых меньше заданной величины. P.S. убедительная просьба надо написать на С а не на С++
C++ Сжать массив, удалив из него все элементы, которые лежат в интервале [a,b]. Освободившиеся в конце элементы массива заполнить нулями. http://www.cyberforum.ru/cpp-beginners/thread306655.html
У меня такая проблема: Сжать массив, удалив из него все элементы, которые лежат в интервале . Освободившиеся в конце элементы массива заполнить нулями. P.S. Убедительная просьба написать надо на С а не на С++!
C++ Что за файл с раширением awx? по моему связано с mfc? подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
28.05.2011, 10:02     Вызов функций на Ассемблере в программе на С++
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//asm_function.cpp
void func(char* stroka,char* new_str,short N){
_asm
        {
                mov esi,stroka ; исходная строка
                mov edi,new_str ; новая строка
                xor edx,edx ; edx - номер элемента новой строки, с которой работает программа
begin:
                xor eax,eax ;ah-  начало слова,al- конец
                xor ebx,ebx ; bh- начало минимального слова ; bl - его длина
                xor ecx,ecx ;ecx- номер элемента, с которым в данный момент работает программа
                mov bl,-1
                mov al,-1
min_word :
                cmp cx,N
                je end
                cmp [esi][ecx],' '
                je word_end
                cmp [esi][ecx],'\0'
                je word_end
                inc cx
                
                jmp min_word
word_end:
                
                mov ah,al
                inc ah
                mov al,cl
                inc cx
                cmp ah,al
                je min_word
                sub al,ah
                cmp al,0
                jng min_word
                cmp al,bl
                jg new_min_word
                add al,ah
                jmp min_word
new_min_word:
                
                mov bl,al
                add al,ah
                mov bh,ah
                jmp min_word
end:
                cmp bh,bl
                push ebx
                mov bl,bh
                mov bh,0
                mov ecx,ebx
                pop ebx
delete_word:
 
                cmp bl,-1
                je full_end
                cmp bl,0
                je exit_point
                mov ax,[esi][ecx]
                mov [edi][edx],ax
                inc     edx
                mov [esi][ecx],' '
                inc ecx
                dec bl
                jmp delete_word
exit_point:
                
                mov[edi][edx],' '
                inc edx
                jmp begin
full_end:
                mov[edi][edx],'\0'
        }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//main.cpp
#include<iostream>
using namespace std;
void func(char*,char*,short);
int main()
{
        setlocale(LC_ALL,".1251");
        char*stroka=new char[255];
        cout<<"Введите строку длиной не более 255 символов"<<endl;
        cin.getline(stroka,255);
        short int N=strlen(stroka);
        char*new_str=new char[N++];
        func(stroka, new_str,N);
        cout<<"Искомая строка"<<endl;
        cout<<endl<<new_str<<endl;
        return 0;
}
кстати код в исходном виде студия не скомпилировала, ибо using namespace std и метка begin: с конфликтным именем.
 
Текущее время: 12:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru