2017-12-04 24 views
0

私はまだAssemblyにはかなり新しいですし、現在私の地域のコミュニティカレッジで入門クラスを取っています。(MASM32)ユーザー入力から文字列を取得するマクロを作成するにはどうすればよいですか?

私たちの割り当ての要件の1つは、マクロを使用してテキストを印刷し、ユーザー入力を取り込むことでした。

私は自分の印刷コードが正しいと確信している:

displayString MACRO message:REQ 
    lea eax, message 
    push eax 
    call printf  
    add esp, 4 
ENDM 

私は、ユーザー入力を取得して行くだろうかにかかわらず、混乱しています。ここで私はこれまで持っているものです。

obtainString MACRO input:REQ, msgformat:REQ 
    lea eax, input 
    push eax 
    lea eax, msgformat 
    push eax 
    call scanf 
    add esp, 8 
ENDM 

マクロが別のファイルですので、私は変数が私のメインのファイルに転送していないかなり確信しています。私はどのように私のメインファイル内の変数にマクロファイルから '入力'の内容を転送するだろうと思っています。 ありがとうございます。

サイドノート:何らかの理由で、メインファイルと同じフォルダにあるにもかかわらずマクロファイルが見つからないため、プロジェクトがコンパイルされません。

答えて

0

inputは変数ではなく、マクロパラメータです。マクロは基本的にテキスト置換機能です。あなたが何か書くときに:だから、「転送」に何もない

lea eax, foo 
push eax 
lea eax, bar 
push eax 
call scanf 
add esp, 8 

obtainString foo, bar 

をアセンブラはでその行を置き換えます。 obtainStringの最初の引数として渡すラベルは、ユーザー入力が書き込まれる場所です。

関連する問題