Winapi 基本用户输入
我正在学习一些汇编语言(x86 Irvine.32 windows7),并且有一个关于如何从用户输入的问题。我这本书没有把它看得太深。我想提示用户: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。如何读取
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