私はクラスのプロジェクトに取り組んでいますが、教授は他のアセンブラーの代わりにMASMを使用することを望んでいます。(私はそれが愚かであることを知っています、私ではなく彼に話しかけてください。)ML.exeを実行してコードをコンパイルすると、クラッシュします。私が書いているプログラムではなく、アセンブラ自体です。何が原因でしょうか?実行される前に非常に長い時間実行されているので、ある種の無限ループである可能性があります。
これが私のコードです:
.386
.MODEL FLAT
PUBLIC compute_b_proc
points EQU [ebp + 16]
bs EQU [ebp + 12]
n EQU [ebp + 10]
m EQU [ebp + 8]
.CODE
compute_b_proc PROC NEAR32
push ebpi
mov ebp, esp
mov ax, n
cmp ax, m
je base_case
mov ax, m
inc ax
pushd points
push n
push m
call compute_b_proc
push eax
fld DWORD PTR [esp + 8]
pop eax
mov ax, n
dec ax
pushd points
push n
push m
call compute_b_proc
push eax
fld DWORD PTR [esp + 4]
pop eax
fsubp
lea eax, points
mov ebx, n
shr ebx, 3
add eax, ebx
fild REAL4 PTR [eax + 4]
lea eax, points
mov ebx, m
shr ebx, 3
add ebx, 4
add eax, ebx
fild REAL4 PTR [eax]
fsubp
fdivp
pushd 0
fstp DWORD PTR [eax + 4]
pop eax
mov esp, ebp
pop ebp
ret 12
lea eax, points
mov ebx, n
shl ebx, 3
add eax, ebx
mov eax, DWORD PTR[eax]
mov esp, ebp
pop ebp
ret 12
compute_b_proc ENDP
END
MASMは他のファイルを正常にコンパイルします。エラーメッセージは「ML.exeが動作を停止しました」だけです。MASMバージョン6.11を使用していることに注意してください。それは教授が提供したものです。
クラッシュさせるのは浮動小数点命令のようです。MASMを再インストールしましたが、それでもすべての浮動小数点でクラッシュします。