Я не могу понять суть проблемы, потому что я не программирую на ассемблере - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно найти максимум массива

int a[5] = { 1, 2, 3, 4, 5 };
int n = 4;
int res = 0;
__asm {
        mov ecx, n
        xor eax, eax
        xor esi, esi
        mov esi, 0
        mov eax, a[esi]
cycle:  cmp a[esi], eax
        jle pass
        mov eax, a[esi] ; when second number of array moves to EAX it somehow becomes 33554432
pass:   inc esi
        loop cycle
        mov res, eax

Я уже пробовал xor eax, eax и добавить eax, a [esi]

1 Ответ

0 голосов
/ 26 мая 2020

Попробуйте следующее:

        mov ecx, n
        xor eax, eax
        xor esi, esi
        mov esi, 0
        mov eax, a[esi]
cycle:  cmp a[esi], eax
        jle pass
        mov eax, a[esi] 
pass:   add esi,4 ; size of int should go here
        loop cycle
        mov res, eax
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...