Witam,
próbuje napisać kod, który sprawdza najdłuższy ciąg jedynek w danej liczbie, np 10166 = (10011110110110)2 czyli najdluzszy ciag to 4, a mi wyswietla 2. Ktoś mógłby pomóc w przekształceniu kodu na działający? Moze być w nim bardzo dużo błedów, ale jestem totalnym newbie w tym języku i zaczynam się go uczyć.
#include <stdio.h>
int main()
{
int x = 1523;
int y = 0;
asm volatile (
".intel_syntax noprefix;"
"mov eax,%1;"
"xor ebx, ebx;"
"petla:"
"mov ecx, 0;"
"skok3:"
"mov ebx,ecx;"
"mov ecx, 0;"
"and eax,eax;"
"jz skok2;"
"shl eax,1;"
"jnc petla;"
"skok:"
"inc ecx;"
"shl eax,1;"
"jc skok;"
"cmp ecx,ebx;"
"jg skok3;"
"and eax,eax;"
"jnz petla;"
"skok2:"
"mov %0,ebx;"
".att_syntax prefix;"
:"=r"(y)
:"r"(x)
:"eax","ebx","ecx"
);
printf("y=%i\n",y);
return 0;
}