私はC++とアセンブリを使用してハイライドなプログラムを作成する必要があります。主な機能は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
問題は、私は私のプログラムの開発を実行する場合、それは「除算エラー」を返し、私はすべての部門を使用していないということです。|誰かが私を助けることができますか?
'mov ebx、0' /' fld dword ptr [ebx] 'あなたは何をすることを期待していましたか? – Michael
あなたのアドレスに16ビットと32ビットのレジスタを混在させるのはなぜですか? (例: '[bp + 12]' vs '[esi]') – Michael
** C++ **コードはありません。 –