Есть такой код: Код (Text): #include <iostream> #include <TCHAR.H> int checksum = 0; int main(void) { Label1: int a = 4328, b = 59444; std::cin >> a >> b; int c = abs(232 - abs((abs(b) - abs(a)))); switch (c) { case 0: std::cout << _T("|232 - (||b|-|a||)| = ") << 0 << std::endl; break; case 1: std::cout << _T("|232 - (||b|-|a||)| = ") << 1 << std::endl; break; case 2: std::cout << _T("|232 - (||b|-|a||)| = ") << 2 << std::endl; break; case 3: std::cout << _T("|232 - (||b|-|a||)| = ") << 3 << std::endl; break; default: std::cout << _T("|232 - (||b|-|a||)| = ") << c << std::endl; } Label2: __asm { pushad xor eax, eax xor edx, edx mov esi, Label1 mov ecx, Label2 sub ecx, esi next: mov dl, BYTE PTR [esi] add eax, edx add esi,1 loop next mov checksum, eax popad } std::cout << checksum << std::endl; //std::cout << l1 << std::endl; //std::cout << l2 << std::endl; getchar(); getchar(); return 0; } Вопрос вот в чем, почему при каждом запуске (иногда через раз) меняется сумма байт между Label1 и Label2? Проблему локализовал до std::cout, если оставить между метками только его, то сумма будет меняться, хотя диззасемблится в нормальный код. Компилятор 2008ой студии, конфигурация релиз, оптимизация отключена.