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
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Если у вас это не древний паскаль, и int это 32 бита, то регистры должны быть тоже 32-битные
mov eax, firstArray[esi]
Второе, алгоритм не соответствует поставленной задаче. Из двух массивов, максимальных числа будет 2, а у вас индекс для перебора и для максимальных чисел один.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Boomstarter Москва
от 110 000 до 160 000 руб.
Acme Crypto Corp Нижний Новгород
от 120 000 до 180 000 руб.
Acme Crypto Corp Нижний Новгород
от 150 000 до 250 000 руб.
18 авг. 2018, в 01:10
17000 руб./за проект
17 авг. 2018, в 23:00
5500 руб./за проект