組み立てコースを受講していますが、スタック フレームに問題があります。要件の 1 つは、レジスターではなくスタックを使用してパラメーターを渡すことです。参照によって変数を渡してから、プロシージャでその変数の値を変更しようとしています。これが私がこれまでに持っているものです。WriteString
そしてReadDec
、本に付属している(アーバインの)図書館からのものです。
.data
numVal DWORD ?
.code
main PROC
PUSH OFFSET numVal
CALL GetNumber
exit
main ENDP
GetNumber PROC
PUSH edx
PUSH ebp
MOV ebp, esp
CALL ReadDec ; gets what the user inputs and puts in eax
MOV [ebp+12], eax
; MOV numVal, eax ; this works just fine
POP ebp
POP edx
RET 4
GetNumber ENDP
END main
ただし、印刷したりnumVal
、別の場所で使用しようとすると、ユーザーが何を入力したかに関係なく、0 として返されます。ebp+12
ではなくそのアドレスを参照している、ユーザーが入力したものは何でも送信していると思いますnumVal
。それで、それが正しければ、参照渡しなどでこれを行う方法はありnumVal
ますか? または、コメントアウトされた行MOV numVal, eax
が唯一の方法ですか?
PS。これは宿題です。そのようにタグ付けしようとしましたが、許可されませんでした。
PPS。また、overflow に投稿するのはこれが初めてです。投稿やエチケットなどを改善するための建設的な批判に感謝します。