Winapi 基本用户输入

Winapi 基本用户输入,winapi,assembly,x86,masm,irvine32,Winapi,Assembly,X86,Masm,Irvine32,我正在学习一些汇编语言(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。如何读取

我正在学习一些汇编语言(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。如何读取用户输入的内容并将其放入变量中

它是否简单到:

INVOKE ReadConsole, SomeVairable
其中somevarable在.data中定义为字节

编辑:

不,不是(至少通常)那么简单

用户输入的内容将被读取为字符串,而不是数字。通常需要读取字符串(通常长度超过一个字节),然后将其转换为整数。在进行转换之前,您可能希望验证字符串中的所有字符是否都是数字,或者您可能希望将转换与验证相结合


具体看一下
ReadConsole
调用,有两件事需要记住。首先,您需要检索控制台的句柄,通常使用。然后,您需要提供它所期望的六个左右的所有参数。`

这应该对您有所帮助@PavanManjunath:可能没有太多帮助——这是为DOS编写的,但这是为Windows编写的。从汇编语言级编程的角度来看,这两种语言并没有太多的共同点。谢谢,我成功了。我会编辑我的代码,但我还有一个问题,如果我在写一个字符串,我怎么能把这个人输入的变量放到字符串中呢?我必须输出2个字符串吗?一个字符串说“请输入”,然后是变量“5”,然后是另一个字符串“数字”,所以当它一起出现时是“请输入5个数字”@Nogg:yes,差不多就是这样。
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