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,1,1,2,2,3,4,5,6,6 }; //{ 1,4,2,3,2,5,3,2,1,4 };
- int aq[n], ae[n];
- int mq, me; //max quantity, max element(quantity)
- int q, e; // quantity, element (for output)
- _asm
- {
- //sort
- mov esi,0 //offset
- mov ecx, n //counter
- mov q,0 //current quantity
- mov eax,a[esi] //current
- mov e,eax //element
- mov eax,0 //mq=0
- mov mq,eax
- mov eax,a[esi] //me=a[esi] (a[0])
- mov me,eax
- beg_:
- mov eax,e
- cmp eax,a[esi] //q == a[esi] ?
- je EQL
- //{
- mov eax,q //save q
- mov aq[esi],eax
- mov eax,e //eave e
- mov ae[esi],eax
- ////
- jmp SKIP
- beg_1_:
- jmp beg_
- SKIP:
- ////
- mov eax,mq
- cmp eax,q //mq == q ?
- je EQL2
- ///{
- add esi, 4 //esi+=4
- jmp NEXT2
- ///}
- EQL2:
- ///{
- mov eax, q //q=mq
- mov mq,eax
- mov eax,e //e=me
- mov me, eax
- add esi, 4 //esi+=4
- ///}
- NEXT2:
- mov q, 0 //current quantity
- mov eax, a[esi] //current
- mov e, eax //element
- jmp NEXT
- //}
- EQL:
- //{
- mov eax,q // q++
- add eax,1
- mov q,eax
- add esi,4 //esi+=4
- jmp NEXT
- //}
- NEXT:
- loop beg_1_
- }
- for (int i = 0; i < n; i++) {
- cout << "element " <<ae[i]<<" - "<< aq[i]<<endl;
- }
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment