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

Ассемблерная вставка в Visual Studio - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как из обычной структуры сделать хеш таблицу? http://www.cyberforum.ru/cpp-beginners/thread193612.html
У меня есть такая таблица: #ifndef DIPLOM_H #define DIPLOM_H #include <vector> using namespace std; struct T_Record { char name; //Фамилия, инициалы
C++ Информатика ! очень нужно Дано натуральное число k . Напечатать k-ую цифру (не число!) последовательности из идущих подряд чисел Фибоначчи. 112358132134... Необходимо построить программу так , чтобы она не накладывала ограничений на длину последовательности . http://www.cyberforum.ru/cpp-beginners/thread193609.html
C++ упорядочение элементов структуры по алфавиту
следущий код программы упорядочивает элементы структур по номеру тоесть по .number; элементу структуры, помогите пожалуйста упорядочить по алфавиту (по первым буквам элемента .punkt).вот код // laba.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <conio.h> #include <iostream> using namespace std;
C++ Удалить все отрицательные элементы массива
У меня есть динамический масив... Как удалить все отрицательние елементи? if(mass<0) а дальше?
C++ Динамический массив структуры http://www.cyberforum.ru/cpp-beginners/thread193601.html
Согласно следующего задания создать динамический массив структуры. Из М учасников предыдущих соревнований N спортсменов, которые набарли наибольшую сумму баллов выходят в финал. По данным протокола предыдущих соревнований определить и вывести номера финалистов и набранные ими суммы баллов. Добавлено через 22 часа 48 минут Люди, так как, поможете ?
C++ бык корова и теленок Написать решение задачи: бык стоит 10р, корова - 5р, теленок - 0.5р. Нужна на 100р купить 100 голов скота. Должа вывести такой ответ: 1 бык, 9 коров, 90 телят подробнее

Показать сообщение отдельно
Mr. FourKing
 Аватар для Mr. FourKing
1 / 1 / 1
Регистрация: 11.11.2010
Сообщений: 29

Ассемблерная вставка в Visual Studio - C++

19.11.2010, 00:30. Просмотров 5047. Ответов 6
Метки (Все метки)

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

Вот код:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include <iostream>
#include <conio.h>
 
using namespace std;
 
const int n=5;
 
int cocktail_sort(int arr[])
  {
      int first=0;
      int last;
      last=n;
      int tmp;
      int i;
 
      /*for( --last; first < last; --last, ++first )
      {
          for(i = first; i < last; ++i )
              if ( arr[i + 1] < arr[i] )
              {
                  tmp=arr[i+1];
                  arr[i+1]=arr[i];
                  arr[i]=tmp;
              }
 
          for(i = last - 1; i > first; --i )
              if ( arr[i] < arr[i - 1])
              {
                  tmp=arr[i-1];
                  arr[i-1]=arr[i];
                  arr[i]=tmp;
              }
      }*/
__asm
{
            push        ebp  
            mov         ebp,esp 
            sub         esp,0FCh 
            push        ebx  
            push        esi  
            push        edi  
            lea         edi,[ebp-0FCh] 
            mov         ecx,3Fh 
            mov         eax,0CCCCCCCCh 
            rep stos    dword ptr es:[edi] 
 
            mov         dword ptr [first],0 
 
            mov         dword ptr [last],0Ah 
 
            mov         eax,dword ptr [last] 
            sub         eax,1 
            mov         dword ptr [last],eax 
            jmp         L 
L10:        mov         eax,dword ptr [last] 
            sub         eax,1 
            mov         dword ptr [last],eax 
            mov         ecx,dword ptr [first] 
            add         ecx,1 
            mov         dword ptr [first],ecx 
L:          mov         eax,dword ptr [first] 
            cmp         eax,dword ptr [last] 
            jge         L1 
 
            mov         eax,dword ptr [first] 
            mov         dword ptr [i],eax 
            jmp         L2 
L5:         mov         eax,dword ptr [i] 
            add         eax,1 
            mov         dword ptr [i],eax 
L2:         mov         eax,dword ptr [i] 
            cmp         eax,dword ptr [last] 
            jge         L3 
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [i] 
            mov         esi,dword ptr [arr] 
            mov         eax,dword ptr [ecx+eax*4+4] 
            cmp         eax,dword ptr [esi+edx*4] 
            jge         L4
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [ecx+eax*4+4] 
            mov         dword ptr [tmp],edx 
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [i] 
            mov         esi,dword ptr [arr] 
            mov         edx,dword ptr [esi+edx*4] 
            mov         dword ptr [ecx+eax*4+4],edx 
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [tmp] 
            mov         dword ptr [ecx+eax*4],edx 
 
L4:         jmp         L5 
 
L3:         mov         eax,dword ptr [last] 
            sub         eax,1 
            mov         dword ptr [i],eax 
            jmp         L6 
L9:         mov         eax,dword ptr [i] 
            sub         eax,1 
            mov         dword ptr [i],eax 
L6:         mov         eax,dword ptr [i] 
            cmp         eax,dword ptr [first] 
            jle         L7 
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [i] 
            mov         esi,dword ptr [arr] 
            mov         eax,dword ptr [ecx+eax*4] 
            cmp         eax,dword ptr [esi+edx*4-4] 
            jge         L8 
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [ecx+eax*4-4] 
            mov         dword ptr [tmp],edx 
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [i] 
            mov         esi,dword ptr [arr] 
            mov         edx,dword ptr [esi+edx*4] 
            mov         dword ptr [ecx+eax*4-4],edx 
 
            mov         eax,dword ptr [i] 
            mov         ecx,dword ptr [arr] 
            mov         edx,dword ptr [tmp] 
            mov         dword ptr [ecx+eax*4],edx
 
L8:         jmp         L9 
 
L7:         jmp         L10 
 
L1:        pop         edi  
pop         esi  
pop         ebx  
mov         esp,ebp 
pop         ebp  
ret      
    }
  }
 
int main()
{
    int arr[n];
 
    for(int i=0;i<n;i++)
        cin>>arr[i];
 
    for(int i=0;i<n;i++)
        cout<<' '<<arr[i];
    cout<<'\n';
 
    cocktail_sort(arr);
 
    for(int i=0;i<n;i++)
        cout<<' '<<arr[i];
 
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru