Только при компиляции под х32 приведение указателя к unsigned long long будет обсчитывать лишние 4 байта, которые всегда будут нули. Так что не универсально.
Как-то так:
Код:
void *a = (void *)0x12345678;
volatile unsigned long long b = (unsigned long long)a;
...
mov ecx, 12345678h
mov eax, ecx
xor edx, edx
mov [ebp+var_8], eax
mov [ebp+var_4], edx