Самый длинный пробег целых в массиве в сборке x86 - PullRequest
0 голосов
/ 06 декабря 2018

У меня проблемы с поиском самого длинного целого числа в массиве в сборке x86.У меня есть массив, который я передаю, и размер массива, и я думаю, что я иду по своей логике, просто не могу понять последние шаги.Любая помощь приветствуется.Вот код, который у меня есть:

int  Longest_Run(int nums[], int siz) {
    //
    int returnValue = 0;
    int freq[101] = { 0 };  //if needed
    int arr_length = 0;


    arr_length = sizeof(nums) / sizeof(int); //WRONG

    __asm {
        //LONGEST RUN. Return value to caller :

        MOV ECX, siz // arr_length //For looping
        //LEA ESI, nums //ptr to array
        mov ESI, nums //ptr to array
        //LEA EDI, nums //ptr to array
        MOV EBX, 0 //Frequency counter
        MOV EAX, [ESI] //First array int in SI

        L1:
        CMP EAX, [ESI] //Compare 1st int with 1st int
            JE L2
            JMP L3
        L4:
            LOOP L1
        JMP CLEAR

            L2 :  //If equal
            INC EBX //Inc counter  
            ADD ESI, 4 //Inc to 2nd item in array
            MOV EAX, [ESI] //Move 2nd item into AX
            JMP L1


        L3 :
        PUSH EBX // Puts counter int on stack
            MOV EBX, 0 // Clears BX to start over
            ADD ESI, 4 //Inc to 3rd item in array
            MOV EAX, [ESI] //Move 3rd item into AX
            JMP L4


            CLEAR:

            POP EDX
            MOV EDX, returnValue


            //END

    }
    return returnValue;
}

Есть идеи или рекомендации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...