集会。混合程序。 "Divide error",我不分任何东西



我需要用c ++和汇编来制作一个hyrid程序。主函数是用 C++ 编写的。用程序集编写的函数添加浮点数组元素。我使用intiger数字没有问题,但是使用浮点数看起来大不相同。

这是代码:

PROC fun
    push bp
    mov bp, sp
    push cx
    push esi
    push ebx
         mov cx, word ptr [bp+12] ; array size
         mov [bp-8], ecx
         mov esi, dword ptr [bp+8] ; array
         mov ebx, 0 

        fld dword ptr [ebx]
p:  
        fld  dword ptr [esi]
        fadd 
        add esi, byte ptr 8
        loop p

        fst dword ptr [eax]
        pop esi
        pop cx
        pop ebx
        mov sp, bp
        pop bp
ret
ENDP

问题是如果我运行我的程序,它会返回"除法错误",并且我不使用任何除法:|有人可以帮助我吗?

不知道调用方是如何设置的,这很难说。 但是,最好的办法是调试此代码,单步执行,同时验证操作是否正确,以准确查看出错的地方。 此外,对[bp - 8]的引用对我来说似乎是不正确的,如果您的堆栈处理错误,则返回损坏的堆栈可能会导致除以零。 当汇编程序出错时,来自它周围的其他代码的消息很少有意义。 您应该预料到这一点,并且始终通过新的汇编程序单步观察和评估其初始行为。

相关内容

最新更新