Assembly 提示用户输入、计算字符串长度和重新打印输入

Assembly 提示用户输入、计算字符串长度和重新打印输入,assembly,x86,irvine32,Assembly,X86,Irvine32,我正在做一项任务,被卡住了。我需要提示用户使用WriteString输入句子,并使用ReadString存储输入。此外,我需要计算字符串的长度,然后重新打印用户的输入。我不想要代码,只要往正确的方向推一下就行了。我可以让我的程序提示并接受用户输入,但是我正在寻找帮助,以十进制计算字符串的长度 .data String1 BYTE "Enter a sentence", 0 String2 BYTE 50 DUP (?) String3 BYTE "Decimal length: ", 0 Str

我正在做一项任务,被卡住了。我需要提示用户使用WriteString输入句子,并使用ReadString存储输入。此外,我需要计算字符串的长度,然后重新打印用户的输入。我不想要代码,只要往正确的方向推一下就行了。我可以让我的程序提示并接受用户输入,但是我正在寻找帮助,以十进制计算字符串的长度

.data
String1 BYTE "Enter a sentence", 0
String2 BYTE 50 DUP (?)
String3 BYTE "Decimal length: ", 0
String4 BYTE "Hexidecimal length: ", 0
String5 BYTE "You entered: ", 0

.code
main proc
Exercise1 PROC

mov edx, OFFSET String1 ; move String1 to edx
call WriteString ;prompt user to enter their sentence
mov edx, OFFSET String2 ;array to store input
call ReadString ;store input to edx

;mov ecx, 20
;mov dl, 0 ;use to count length
;how do I loop through String2 to determine its length? 

Exercise1 ENDP

不需要计算长度,
ReadString
返回在EAX中读取的字节数

(此外,在调用之前,您必须以ECX的形式向它传递一个最大读取大小,例如
mov-ECX,50-1
。ReadString需要知道缓冲区有多大,这样它就不会溢出。)



如果您想自己搜索字符串中的第一个
0
字节,请使用google
x86 assembly strlen
并点击无数次。或者在此处搜索。谢谢您提供的信息!我能够打印十进制长度,并将其转换为十六进制以打印该值。我该如何重新打印用户输入的内容?@MichaelL:显然是使用
WriteString
。它接受一个指向以0结尾的字符串的指针,这是ReadString返回后缓冲区中的内容。