部件。混合计划。 “划分错误”,我没有划分任何东西

时间:2017-05-22 17:30:24

标签: c++ assembly hybrid

我需要使用c ++和汇编创建一个hyrid程序。主要功能是用c ++编写的。用程序集编写的函数添加了float数组元素。使用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

问题是,如果我运行我的程序,它会返回“Divide error”,我不会使用任何除法:|有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:-1)

在不知道呼叫者如何设置的情况下,这很难说。然而,最好的办法是通过这个代码调试你的方式,单步执行,同时验证正确的操作,看看你出错的确切位置。此外,对[bp - 8]的引用对我来说似乎不正确,如果您的堆栈处理错误,可能会在损坏的堆栈上返回时导致除零。当汇编程序出错时,来自其他代码的消息很少有意义。你应该期待这一点,并且总是单步执行新的汇编程序来观察和评估它的初始行为。