#include <stdio.h>
#include <string.h>

typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned char BYTE;
#define LOWORD(l) ((WORD)(l))
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
#define LOBYTE(w) ((BYTE)(w))
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))
int shl(unsigned long int a, int n);
int shl(unsigned long int a, int n) {
 
    return (a << n);
 
}
int main() {
	int edi = 0x00000000;
	int ebx = 0x00000000;
	int ecx = 0x00000000;
	int esi = 0x00000000;
	int edx = 0x00000000;
	int eax = 0x00000000;
	char str [] = "12";
	do {
		int eax = str[ecx];
		eax = eax + esi;
		edx = eax%0xFF;//idiv
		eax = eax/0xFF;//idiv
		edi = LOWORD(edx);
		esi = LOWORD(edi);
		eax = LOWORD(ebx);
		eax = eax + esi;
		edx = eax%0xFF;//idiv
		eax = eax/0XFF;//idiv
		ebx = LOWORD(edx);
		ecx++;
	}while(ecx < strlen(str));
	eax = LOWORD(ebx);
	eax = shl(eax,8);
	eax = eax | edi;
	printf("%X",eax);
}
