Сравнение элементов массива в ассемблере
Сравниваются два элемента: (указатель на a
передан функцией)
mov eax, [a]
add eax, 1
xor ebx, ebx
mov ebx, [eax]
mov temp_char, ebx
add eax, 1
mov ebx, [eax]
cmp temp_char, ebx
JNE exit
mov [eax], 's'
Но в ebx
почему-то кладется не сам элемент массива, а страшное многозначное число. Почему?
UPD: Это ассемблерная вставка в си. Есть массив, нужно с помощью ассемблерной вставки найти одинаковые элементы и убрать заменить их всех кроме одного, скажем, на $
. Вот и вся задача. Здесь я пытался просто посмотреть работу сравнения: он должен сравнить второй и третий элементы, в случае совпадения поставить вместо третьего s
. В переменной я сохранял, потому что cmp
не захотел сравнивать два регистра.
Источник: Stack Overflow на русском