Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .386
- PUBLIC _Find
- .model flat
- .data
- mystr DD ? ;строка
- mystr1 DD ? ;строка с ответом
- ans DD 0 ;покачто номер с которого начинается ответ
- temp DD 0 ;номер последнего пробела
- temp1 DD 0 ;последний ответ
- elem DD 256 dup(0) ; массив из количество символов в слове
- .code
- _Find proc
- pushad
- mov ebp, esp
- mov eax, [ebp+40]
- mov mystr, eax
- xor edi, edi ; тут будет храниться номер рассматриваемого символа
- _not_end_of_str:
- mov ebx, mystr
- xor eax, eax
- mov al, byte ptr [ebx][edi] ;берем элемент
- cmp eax, 0 ; проверяем на конец строки
- je _end_of_string
- cmp eax, ' '
- je _end_of_word ; если конец строки то надо посмотреть максимальный элемент в elem и если надо занести что надо в ans
- mov ebx, offset elem
- mov ecx, [ebx][4*eax]
- inc ecx
- mov [ebx][4*eax], ecx
- inc edi
- jmp _not_end_of_str
- _end_of_word:
- mov ebx, offset elem
- xor edx, edx
- xor eax, eax
- xor ecx, ecx
- _next_element:
- mov edx, [ebx][4*ecx]
- cmp eax, edx
- jge _not_save
- mov eax, edx
- _not_save:
- mov ebp, 0
- mov [ebx][4*ecx], ebp
- add ecx, 1
- cmp ecx, 256
- jl _next_element
- cmp eax, temp1
- jle _not_new
- mov temp1, eax
- mov ebx, temp
- mov ans, ebx
- _not_new:
- inc edi
- mov temp, edi
- jmp _not_end_of_str
- _end_of_string: ;тип сторока кончилась
- mov ebx, offset elem
- xor edx, edx
- xor eax, eax
- xor ecx, ecx
- _next_element1:
- mov edx, [ebx][4*ecx]
- cmp eax, edx
- jge _not_save1
- mov eax, edx
- _not_save1:
- mov ebp, 0
- mov [ebx][4*ecx], ebp
- add ecx, 1
- cmp ecx, 256
- jl _next_element1
- cmp eax, temp1
- jle _not_new1
- mov temp1, eax
- mov ebx, temp
- mov ans, ebx
- _not_new1:
- inc edi
- mov temp, edi
- popad
- mov eax,ans
- pushad
- mov eax, [ebp+36] ;строка для слова
- xor ebx,ebx ;номер элемента для него
- mov ecx, [ebp+40] ;основная строка
- mov esi,ans ;счётчик для неё
- mov dl, [ecx][4*esi] ;заносим элемент основной строки
- cmp al, 0 ;проверка на конец
- je _ex
- cmp al, ' ' ;проверка на пробел
- je _ex
- mov [eax][4*ebx],dl ;заносим элемент основной строки в нашу строку
- inc esi ;увеличиваем номер элемента основной строки
- inc ebx ;увеличиваем номер элемента строки для слова
- _ex:
- mov eax, ans
- popad
- mov eax,ans
- ret
- _Find endp
- end
- #include<iostream>
- using namespace std;
- extern "C" int _cdecl Find(char*w,char*str);
- void main()
- {
- char*str = new char[255];
- cin.getline(str, 255);
- char*w=new char[255];
- int pos=Find(w,str);
- cout<<pos<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement