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