Assembly x86汇编如何从两个寄存器打印大量数据?

Assembly x86汇编如何从两个寄存器打印大量数据?,assembly,x86,ascii,Assembly,X86,Ascii,我有一个号码87178094592,它存储在寄存器edx,eax中。这些值是edx=x14 eax=4c382800,因此基本上edx具有高阶,eax具有低阶。如何将此数字保存为ascii字符串“87178094592”,而不使用函数调用?使用div将edx:eax除以10并重复。您可以将扩展精度除数除以32位除数。从edx=0开始,eax=高阶股息,除以10,高阶股息=eax,eax=低阶股息,除以10,低阶股息=eax,最低有效位=余数=edx。重复此操作,直到红利=0。您以相反的顺序获取数

我有一个号码87178094592,它存储在寄存器edx,eax中。这些值是edx=x14 eax=4c382800,因此基本上edx具有高阶,eax具有低阶。如何将此数字保存为ascii字符串“87178094592”,而不使用函数调用?

使用
div
edx:eax
除以10并重复。

您可以将扩展精度除数除以32位除数。从edx=0开始,eax=高阶股息,除以10,高阶股息=eax,eax=低阶股息,除以10,低阶股息=eax,最低有效位=余数=edx。重复此操作,直到红利=0。您以相反的顺序获取数字,因此您可能希望将其推到堆栈上,然后将其弹出,以按正向顺序获取数字,或者将数字存储到字符串数组中,从字符串末尾开始(为尾随零留出空间)。

如果您不希望函数调用,然后,您必须内联将十六进制数转换为十进制数的整个代码序列。全班似乎都在发布这个特殊的家庭作业问题:请注意,如果
EDX>10
(除法错误)EDX在第一次除法后初始化为零,则会失败EDX的最大值(除10后的余数)9岁。