m_avrina
@m_avrina
Студентота.

Что значит конфликт размера операндов в Assembler?

Задача: есть 2 массива, нужно сформировать 3 из максимальных чисел среди этих 2
Вот мой код, но в нем пишет конфликт размера операндов. Собственно может какие-то наводки, что я сделал не так? и вообще делаю ли я верно эту задачу?
int firstArray[10], secondArray[10], maxArray[10],res1[10];

Start = clock();
	_asm finit
		_asm {
			pusha
			xor esi,esi
			xor ecx,ecx
			loop1:
			mov ax, firstArray[esi]
			mov bx, secondArray[esi]
			cmp ax,bx
			jg a1
			cmp ax,bx
			jl a2
				a1:mov maxArray[esi],ax
				a2:mov maxArray[esi],bx
			add esi,2
			sub cnt,1
			jnz loop1
			popa
				
	}
	__asm fwait
  • Вопрос задан
  • 1319 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Если у вас это не древний паскаль, и int это 32 бита, то регистры должны быть тоже 32-битные
mov eax, firstArray[esi]
Второе, алгоритм не соответствует поставленной задаче. Из двух массивов, максимальных числа будет 2, а у вас индекс для перебора и для максимальных чисел один.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы