我有一个64位整数,我需要在汇编中打印,但我正在使用32位机器,所以我将64位整数存储在两个32位寄存器中 . 整数的高位部分存储在%edx中,低部分存储在%eax中 .
我知道如何打印32位整数没问题,只需连续除以10并打印余数 .
我也知道如何将我的64位数乘以32位 .
但是杀死我的是分裂:
从我收集的内容来看,我认为我必须将每个寄存器%edx和%eax除以10,并以某种方式将两个答案组合起来,就像我的乘法一样,但是我如何处理每个部门的余数和商数?
我正在使用32位Linux机器上使用AT&T x86语法的GNU汇编程序 . 谢谢
1 回答
这个问题最近出现了好几次 . 该算法类似于使用铅笔和纸进行划分,将多位数的红利除以单位数除数 . 这是一个代码片段,在edi:esi中保留64位被除数 . 注意,可以扩展相同的方法以将存储在存储器中的非常大的被除数除以32位除数 .