#include <stdio.h>

void binary_print(unsigned int value) {
   unsigned int mask = 0xff000000;
   unsigned int shift = 256*256*256;
   unsigned int byte, byte_iterator, bit_iterator;

   for(byte_iterator = 0; byte_iterator < 4; byte_iterator++) {
      byte = (value & mask) / shift;
      printf(" ");
      for(bit_iterator = 0; bit_iterator < 8; bit_iterator++) {
         if(byte & 0x80)
            printf("1");
         else
            printf("0");
         byte *= 2;
      }
      mask /= 256;
      shift /= 256;
   }
   printf ("\n");
}

int main()
{
	int x = 173;
	binary_print (x);

	__asm
	{
		pushad
		mov eax, x
		xor ebx, ebx
		xor ecx, ecx
		mov cl, 32
next_bit:
		rcl eax, 1
		rcr ebx, 1
		loop next_bit
		mov x, ebx
		popad
	}
	binary_print (x);
	return 0;
}