Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int n = 10;
- int main() {
- int a[n] = { 1,2,2,2,3,4,5,6,7,8 }, e[n], x; //array, num elem array, x
- int b[n] = { 1,2,2,2,3,4,5,6,7,8 };
- int c = 0;//counter for num elem array
- /*cout << "Type a[" << n << "] " << endl;
- for (int i = 0; i < n; i++) {
- cin >> a[i];
- }*/
- cout << "Type element" << endl;
- cin >> x;
- int first = 0, last = n;
- if (n == 0 || a[n - 1] < x || a[0] > x) {
- cout << "No such elements in the array" << endl;
- system("pause");
- return 0;
- }
- _asm {
- mov esi, 0
- mov edi, n
- BEG_1_ :
- //{
- cmp esi, edi
- jl LESS_1_
- ///{
- jmp END_1_
- ///}
- LESS_1_ :
- ///{
- xor eax, eax
- mov eax, edi //eax=last
- sub eax, esi //eax=last-first
- mov ebx, 2
- cdq
- idiv ebx //eax=(last-first)/2
- add eax, esi//eax=(last-first)/2+first
- mov ecx, eax//save mid
- mov ebx, 4
- imul ebx //eax=eax*4
- mov ebx, x
- cmp ebx, b[eax]
- jle LESS_EQL_1_
- ////{
- add esi, ecx
- add esi, 1
- jmp NEXT_1_
- ////}
- LESS_EQL_1_ :
- ////{
- mov edi, ecx
- ////}
- NEXT_1_ :
- jmp BEG_1_
- ///}
- //}
- BEG_2_ :
- //{
- mov eax, edi
- mov ebx, 4
- imul ebx
- mov ebx, x
- cmp ebx, a[eax]
- je EQL_2_
- ///{
- jmp NEXT_2_
- ///}
- EQL_2_ :
- ///{
- sub edi, 1
- jmp BEG_2_
- ///}
- NEXT_2_ :
- //}
- add edi, 1
- BEG_3_ :
- //{
- mov eax, edi
- mov ebx, 4
- imul ebx
- mov ebx, x
- cmp ebx, a[eax]
- je EQL_3_
- ///{
- mov eax,c
- mov ebx,4
- imul ebx
- mov e[eax],edi
- mov c,eax //c++
- add eax,1
- mov c,eax
- add edi,1 //edi++
- jmp NEXT_3_
- ///}
- EQL_3_ :
- ///{
- sub edi, 1
- jmp BEG_3_
- ///}
- NEXT_3_ :
- //}
- END_1_:
- mov x, edi
- }
- for (int i = 0; i < c; i++) {
- cout << e[i] << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement