我启动了一些代码,但在将用户字符串输入保存到变量中时遇到问题。
使用 ReadString 我可以提示用户输入字符串,但是将用户输入保存到名为 AskName1 的变量中,然后显示 AskName1 中保存的信息后,我发现它保存了用户输入的字符数,而不是实际的字符串。所以我需要弄清楚的是如何将用户输入的字符串而不是用户输入的字符数保存到变量中。
INCLUDE Irvine32.inc
.data
AskName BYTE "Please enter your name " ,0dh,0ah,0
Birth BYTE "Please enter your birth year",0dh,0ah,0
Job BYTE "Pleas enter the location at which you work",0dh,0ah,0
AskName1 DWORD ?
Birth1 DWORD ?
Job1 DWORD ?
.code
main PROC
call Clrscr
mov edx, OFFSET Birth
call writestring
call ReadInt
mov Birth1, eax
mov edx, OFFSET Birth1
call writeint
call crlf
mov edx, OFFSET AskName
call WriteString
call ReadString
; AT THIS POINT I WANT TO TAKE USER STRING INPUT AND SAVE THE STRING INTO THE VARIABLE "ASKNAME1"
main ENDP
END main
尔湾的ReadString需要两个参数EDX
and ECX
。它填充了指向的内存EDX
并返回输入的大小。由于字符串在[EDX]
将以零终止,您必须为字符串和终止空保留空间。和AskName1 DWORD ?
你只保留了 4 个字节——这肯定是不够的。
正如我所看到的调试,ECX 应该是字符串的大小withnull(没有提到:“非空字符的最大数量”= 尺寸-1)。
这样做:
INCLUDE Irvine32.inc
.data
...
AskName1 BYTE 16 DUP (0) ; Reserve 16 bytes and fill them with 0
...
.code
...
lea edx, AskName1 ; EDX = address of AskName1
mov ecx, Sizeof AskName1 ; ECX = size of AskName1
call ReadString
...
; and don't forget:
push 0
call ExitProcess
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)