Assembly I';我正在制作一个程序,需要用10除法,但它会抛出浮点错误
我在NASM中使用汇编x86,我想让它做的是将2个数字除以10,但它会抛出一个浮点异常(内核转储)Assembly I';我正在制作一个程序,需要用10除法,但它会抛出浮点错误,assembly,x86,x86-64,nasm,Assembly,X86,X86 64,Nasm,我在NASM中使用汇编x86,我想让它做的是将2个数字除以10,但它会抛出一个浮点异常(内核转储) 它是如何写的,现在它应该只要求我两个数字,然后它应该把字符变成整数,然后再变成字符。但是,它只给了我一个浮点错误。您的一条div指令位于toAscii,div eax。div指令将edx:eax中的无符号数除以操作数(eax)。对于您的值,它将导致溢出(因为结果太大,无法放入eax)和您得到的异常 看起来您想将edx除以ecx。这应该是 mov eax,edx xor edx,edx ; z
它是如何写的,现在它应该只要求我两个数字,然后它应该把字符变成整数,然后再变成字符。但是,它只给了我一个浮点错误。您的一条
div
指令位于toAscii
,div eax
。div
指令将edx:eax
中的无符号数除以操作数(eax
)。对于您的值,它将导致溢出(因为结果太大,无法放入eax
)和您得到的异常
看起来您想将edx
除以ecx
。这应该是
mov eax,edx
xor edx,edx ; zero out upper 32 bits of numerator
div ecx ; divide edx:eax by ecx
这将在eax
中留下结果,其余部分在edx
中。该过程的其余部分将需要一些适当的更改以获得预期的输出,我将此作为练习留给读者
mov eax,edx
xor edx,edx ; zero out upper 32 bits of numerator
div ecx ; divide edx:eax by ecx