我设法编写了一个接受 32 位整数并将其转换为数字数组以在另一个数字系统中表示它的代码问题:如何将其扩展为 64 位?在 Digital Mars C/C++ 编译器中:
void get_digits_asm()
{
__asm
{
pushf
movd xmm0,eax
movd xmm1,ebx
movd xmm2,ecx
movd xmm3,edx
movd xmm4,edi
mov eax,[variable_x]
mov ebx,[number_system]
mov ecx,0h
mov edi,0h
begin_loop:
mov edx,0h
div ebx
lea edi,digits
mov [edi+ecx*4],edx
add ecx,01h
cmp eax,ebx
ja begin_loop
mov edx,0
div ebx
lea edi,digits
mov [edi+ecx*4],edx
inc ecx
mov [digits_total],ecx
movd edi,xmm4//pop edi
movd edx,xmm3//pop edx
movd ecx,xmm2//pop ecx
movd ebx,xmm1//pop ebx
movd eax,xmm0//pop eax
popf
}
}
当此函数返回时,它将 LSB 提供给 MSB 排列的数字数组。
示例:在数字系统 2 中,5 是 101。在系统 8 中,232343435 是 54545...。我想了解如何在 64 位中进行此操作。我的操作系统是 32 位的。我的 CPU 是 pentium-M centrino-laptop 我该怎么做?