我目前正在声明我的字符串变量:
MainActivity
然后,我有了这段代码:
source BYTE 20 DUP (0)
但是,当我尝试获取字符串的长度时,它总是返回20.有没有办法获取用户输入的长度?或者是否可以为字符串声明未初始化的大小?我搜索了我的教科书,到目前为止一无所获。
答案 0 :(得分:2)
不,它没有按照你想的方式实施。如果你想拥有一个动态的"字符串你必须自己编程。 "字符串变量"你声明的实际上是一个从ReadString
获取字节的缓冲区。想象一下它是一杯水。玻璃的大小没有变化,即你不能通过询问玻璃的大小来获得水的体积。
然而,Irvine的ReadString
在EAX
中返回用户输入的字符数量。当你使用这个数量时,不要忘记添加终止空值!
INCLUDE Irvine32.inc
.DATA
buffer BYTE 20 DUP (?)
msg1 BYTE "SIZEOF = ",0
msg2 BYTE "Result of ReadString = ",0
.CODE
main PROC
lea edx, msg1
call WriteString
mov eax, SIZEOF buffer
call WriteInt
call CrLf
mov edx, OFFSET buffer
mov ecx, SIZEOF buffer - 1 ; "-1": save space for the terminating null
call ReadString
lea edx, msg2
call WriteString
call WriteInt
call CrLf
exit
main ENDP
END main