나는 C++ 및 어셈블리를 사용하여 하이브리드 프로그램을 작성해야합니다. 주요 기능은 C++로 작성되었습니다. 어셈블리로 작성된 함수는 float 배열 요소를 추가합니다. 나는 intiger 숫자를 사용하여 그것을 할 아무런 문제가 없었지만 그것은 부동 소수점 숫자를 사용하여 많이 달라 보입니다. 여기조립품. 잡종 programm. "나누기 오류"및 아무것도 나누지 않습니다.
코드입니다 :
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
문제는 내을 programm를 실행하는 경우는 "분할 오류"를 반환하고 내가 어떤 부문을 사용하지 않는다는 것입니다 : | 누군가 나를 도울 수 있습니까?
'mov ebx, 0' /'fld dword ptr [ebx]'무엇을 기대 했습니까? – Michael
그리고 왜 주소에 16 비트와 32 비트 레지스터를 혼합하고 있습니까? (예 :'[bp + 12] vs [esi]') – Michael
** C++ ** 코드가 표시되지 않습니다. –