我需要用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]
的引用对我来说似乎是不正确的,如果您的堆栈处理错误,则返回损坏的堆栈可能会导致除以零。 当汇编程序出错时,来自它周围的其他代码的消息很少有意义。 您应该预料到这一点,并且始终通过新的汇编程序单步观察和评估其初始行为。