2012-04-05 10 views
1

私はいくつかのアセンブリ言語(x86 Irvine.32 windows7)の学習に取り組んでおり、ユーザーからの入力方法について質問しました。私が持っている本はあまりにも深刻ではありません。私は、ユーザーを促したいと思います:基本的なユーザー入力

myfirst BYTE "Welcome! This program calculates the sum of a list of numbers.", 0dh, 0ah, 0dh, 0ah ; greeting 
     BYTE "How many integers will be added? : " 

、私はどのようなユーザ入力を読み込み、変数に入れてはどうすればよいのユーザの意志入力X.?

は、それが同じくらい簡単です:SomeVairableは、バイトとして.dataセクションにアップ定義されて

INVOKE ReadConsole, SomeVairable 

編集:

INCLUDE Irvine32.inc 

BufSize = 80 

.data 
buffer BYTE BufSize DUP(?) 
stdInHandle HANDLE ? 
bytesRead DWORD ? 
myfirst BYTE "Welcome! This program calculates the sum of a list of numbers.", 0dh, 0ah, 0dh, 0ah ; greeting 
     BYTE "How many integers will be added? : " 
mysecond BYTE "Please enter the " 

.code 
main PROC 

    mov edx, OFFSET myfirst       ;move the location of myfirst into edx 
    call WriteString  

    ; Get handle to standard input 
    INVOKE GetStdHandle, STD_INPUT_HANDLE 
    mov stdInHandle,eax 

    ; Wait for user input 
    INVOKE ReadConsole, stdInHandle, ADDR buffer, 
     BufSize, ADDR bytesRead, 0 


    exit 
main ENDP 
END main 
+0

どのプラットフォーム/ OSですか? – kuba

+0

オリジナルを編集しました。 – Nogg

+0

これはあなたを助けるべきであるhttp://stackoverflow.com/questions/523185/a-simple-assembly-input-question –

答えて

3

いいえ、それはない(少なくとも通常は)簡単なことです。

ユーザーが入力した内容は、数字ではなくの文字列となります。通常は、文字列(通常は1バイト以上)を読み取ってから整数に変換する必要があります。変換を行う前に、文字列内のすべての文字が数字であることを確認するか、または変換と検証を組み合わせることができます。

具体的には、ReadConsoleのコールを見ると、留意すべき2つのことがあります。まず、コンソールへのハンドルを取得する必要があります。通常、ハンドルはGetStdHandleです。次に、ReadConsoleには半ダース程度のパラメータが必要です。

+0

ありがとう、私はそれを働かせた。私のコードを編集するのは難しいですが、私が持っている別の質問は文字列を書く場合です。人が文字列に入力した変数をどのように置くことができますか? 2つの文字列を出力する必要がありますか? 1文字列 "入力してください"と言い、次に変数 "5"と別の文字列 "数字"を一緒に出すと "5数字を入力してください" – Nogg

+0

@ノッグ:そうです。 –

関連する問題